@@ -61,6 +61,9 @@ const QuotaPanel: FC<QuotaPanelProps> = ({
6161 const providerMap = useMemo ( ( ) => new Map (
6262 providers . map ( p => [ p . provider , p . preferred_provider_type ] ) ,
6363 ) , [ providers ] )
64+ const installedProvidersMap = useMemo ( ( ) => new Map (
65+ providers . map ( p => [ p . provider , p . custom_configuration . available_credentials ] ) ,
66+ ) , [ providers ] )
6467 const { formatTime } = useTimestamp ( )
6568 const {
6669 plugins : allPlugins ,
@@ -73,8 +76,8 @@ const QuotaPanel: FC<QuotaPanelProps> = ({
7376 const selectedPluginIdRef = useRef < string | null > ( null )
7477
7578 const handleIconClick = useCallback ( ( key : ModelProviderQuotaGetPaid ) => {
76- const providerType = providerMap . get ( key )
77- if ( ! providerType && allPlugins ) {
79+ const isInstalled = providerMap . get ( key )
80+ if ( ! isInstalled && allPlugins ) {
7881 const pluginId = providerKeyToPluginId [ key ]
7982 const plugin = allPlugins . find ( p => p . plugin_id === pluginId )
8083 if ( plugin ) {
@@ -131,13 +134,14 @@ const QuotaPanel: FC<QuotaPanelProps> = ({
131134 < div className = "flex items-center gap-1" >
132135 { allProviders . filter ( ( { key } ) => trial_models . includes ( key ) ) . map ( ( { key, Icon } ) => {
133136 const providerType = providerMap . get ( key )
134- const usingQuota = providerType === PreferredProviderTypeEnum . system
137+ const isConfigured = ( installedProvidersMap . get ( key ) ?. length ?? 0 ) > 0 // means the provider is configured API key
135138 const getTooltipKey = ( ) => {
136- if ( usingQuota )
137- return 'modelProvider.card.modelSupported'
138- if ( providerType === PreferredProviderTypeEnum . custom )
139+ // if provider type is not set, it means the provider is not installed
140+ if ( ! providerType )
141+ return 'modelProvider.card.modelNotSupported'
142+ if ( isConfigured && providerType === PreferredProviderTypeEnum . custom )
139143 return 'modelProvider.card.modelAPI'
140- return 'modelProvider.card.modelNotSupported '
144+ return 'modelProvider.card.modelSupported '
141145 }
142146 return (
143147 < Tooltip
@@ -149,7 +153,7 @@ const QuotaPanel: FC<QuotaPanelProps> = ({
149153 onClick = { ( ) => handleIconClick ( key ) }
150154 >
151155 < Icon className = "h-6 w-6 rounded-lg" />
152- { ! usingQuota && (
156+ { ! providerType && (
153157 < div className = "absolute inset-0 rounded-lg border-[0.5px] border-components-panel-border-subtle bg-background-default-dodge opacity-30" />
154158 ) }
155159 </ div >
0 commit comments