MCPcopy
hub / github.com/ValueCell-ai/ClawX / ProviderCard

Function ProviderCard

src/components/settings/ProvidersSettings.tsx:344–912  ·  view source on GitHub ↗
({
  item,
  allProviders,
  isDefault,
  isEditing,
  onEdit,
  onCancelEdit,
  onDelete,
  onSetDefault,
  onSaveEdits,
  onValidateKey,
  devModeUnlocked,
}: ProviderCardProps)

Source from the content-addressed store, hash-verified

342
343
344function ProviderCard({
345 item,
346 allProviders,
347 isDefault,
348 isEditing,
349 onEdit,
350 onCancelEdit,
351 onDelete,
352 onSetDefault,
353 onSaveEdits,
354 onValidateKey,
355 devModeUnlocked,
356}: ProviderCardProps) {
357 const { t, i18n } = useTranslation('settings');
358 const { account, vendor, status } = item;
359 const [newKey, setNewKey] = useState('');
360 const [baseUrl, setBaseUrl] = useState(account.baseUrl || '');
361 const [apiProtocol, setApiProtocol] = useState<ProviderAccount['apiProtocol']>(account.apiProtocol || 'openai-completions');
362 const [userAgent, setUserAgent] = useState(getUserAgentHeader(account.headers));
363 const [modelId, setModelId] = useState(account.model || '');
364 const [fallbackModelsText, setFallbackModelsText] = useState(
365 normalizeFallbackModels(account.fallbackModels).join('\n')
366 );
367 const [fallbackProviderIds, setFallbackProviderIds] = useState<string[]>(
368 normalizeFallbackProviderIds(account.fallbackAccountIds)
369 );
370 const [showKey, setShowKey] = useState(false);
371 const [showFallback, setShowFallback] = useState(false);
372 const [validating, setValidating] = useState(false);
373 const [saving, setSaving] = useState(false);
374 const [arkMode, setArkMode] = useState<ArkMode>('apikey');
375 const [validationError, setValidationError] = useState<string | null>(null);
376
377 const typeInfo = PROVIDER_TYPE_INFO.find((t) => t.id === account.vendorId);
378 const providerDocsUrl = getProviderDocsUrl(typeInfo, i18n.language);
379 const showModelIdField = shouldShowProviderModelId(typeInfo, devModeUnlocked);
380 const codePlanPreset = typeInfo?.codePlanPresetBaseUrl && typeInfo?.codePlanPresetModelId
381 ? {
382 baseUrl: typeInfo.codePlanPresetBaseUrl,
383 modelId: typeInfo.codePlanPresetModelId,
384 }
385 : null;
386 const effectiveDocsUrl = account.vendorId === 'ark' && arkMode === 'codeplan'
387 ? (typeInfo?.codePlanDocsUrl || providerDocsUrl)
388 : providerDocsUrl;
389 const canEditModelConfig = Boolean(typeInfo?.showBaseUrl || showModelIdField);
390 const showUserAgentField = shouldShowUserAgentField(account);
391
392 useEffect(() => {
393 if (isEditing) {
394 setNewKey('');
395 setShowKey(false);
396 setBaseUrl(account.baseUrl || '');
397 setApiProtocol(account.apiProtocol || 'openai-completions');
398 setUserAgent(getUserAgentHeader(account.headers));
399 setModelId(account.model || '');
400 setFallbackModelsText(normalizeFallbackModels(account.fallbackModels).join('\n'));
401 setFallbackProviderIds(normalizeFallbackProviderIds(account.fallbackAccountIds));

Callers

nothing calls this directly

Calls 15

getProviderDocsUrlFunction · 0.90
cnFunction · 0.90
getProviderIconUrlFunction · 0.90
shouldInvertInDarkFunction · 0.90
hasConfiguredCredentialsFunction · 0.90
getUserAgentHeaderFunction · 0.85
normalizeFallbackModelsFunction · 0.85
shouldShowUserAgentFieldFunction · 0.85
isArkCodePlanModeFunction · 0.85
getAuthModeLabelFunction · 0.85

Tested by

no test coverage detected