|
|
|
@@ -3,6 +3,7 @@ import type { FC } from 'react' |
|
|
|
import React, { useState } from 'react' |
|
|
|
import { useTranslation } from 'react-i18next' |
|
|
|
import cn from 'classnames' |
|
|
|
import { useContext } from 'use-context-selector' |
|
|
|
import Progress from './progress' |
|
|
|
import Button from '@/app/components/base/button' |
|
|
|
import { LinkExternal02, XClose } from '@/app/components/base/icons/src/vender/line/general' |
|
|
|
@@ -10,9 +11,13 @@ import AccountSetting from '@/app/components/header/account-setting' |
|
|
|
import { IS_CE_EDITION } from '@/config' |
|
|
|
import { useProviderContext } from '@/context/provider-context' |
|
|
|
import { formatNumber } from '@/utils/format' |
|
|
|
import I18n from '@/context/i18n' |
|
|
|
import ProviderConfig from '@/app/components/header/account-setting/model-page/configs' |
|
|
|
|
|
|
|
const APIKeyInfoPanel: FC = () => { |
|
|
|
const isCloud = !IS_CE_EDITION |
|
|
|
const { locale } = useContext(I18n) |
|
|
|
|
|
|
|
const { textGenerationModelList } = useProviderContext() |
|
|
|
|
|
|
|
const { t } = useTranslation() |
|
|
|
@@ -36,7 +41,8 @@ const APIKeyInfoPanel: FC = () => { |
|
|
|
// first show in trail and not used exhausted, else find the exhausted |
|
|
|
const [used, total, unit, providerName] = (() => { |
|
|
|
if (!textGenerationModelList || !isCloud) |
|
|
|
return [0, 0, ''] |
|
|
|
return [0, 0, '', ''] |
|
|
|
|
|
|
|
let used = 0 |
|
|
|
let total = 0 |
|
|
|
let unit = 'times' |
|
|
|
@@ -69,7 +75,7 @@ const APIKeyInfoPanel: FC = () => { |
|
|
|
{isCloud && <em-emoji id={exhausted ? '🤔' : '😀'} />} |
|
|
|
{isCloud |
|
|
|
? ( |
|
|
|
<div>{t(`appOverview.apiKeyInfo.cloud.${exhausted ? 'exhausted' : 'trial'}.title`, { providerName })}</div> |
|
|
|
<div>{t(`appOverview.apiKeyInfo.cloud.${exhausted ? 'exhausted' : 'trial'}.title`, { providerName: (ProviderConfig as any)[providerName as string]?.selector?.name[locale] || providerName })}</div> |
|
|
|
) |
|
|
|
: ( |
|
|
|
<div> |