MCPcopy
hub / github.com/buxuku/SmartSub / InlineConfigBar

Function InlineConfigBar

renderer/components/tasks/InlineConfigBar.tsx:60–292  ·  view source on GitHub ↗
({
  form,
  formData,
  systemInfo,
  providers,
  typeDef,
  useLocalWhisper,
})

Source from the content-addressed store, hash-verified

58 'h-8 w-auto min-w-[160px] max-w-[260px] text-xs gap-1';
59
60const InlineConfigBar: React.FC<InlineConfigBarProps> = ({
61 form,
62 formData,
63 systemInfo,
64 providers,
65 typeDef,
66 useLocalWhisper,
67}) => {
68 const { t } = useTranslation('tasks');
69 const { t: tHome } = useTranslation('home');
70 const { t: tCommon } = useTranslation('common');
71 const router = useRouter();
72 const { locale } = router.query;
73
74 const setValue = (name: string, value: unknown) => {
75 form.setValue(name, value);
76 };
77
78 // localCli 走"自备模型/命令"路径,无可下载模型,按是否启用 localCli 决定是否进分组下拉。
79 // 过渡期沿用 useLocalWhisper 作为 localCli 启用信号(全局字段移除时改用 localCli 已配置判断)。
80 const includeLocalCli = useLocalWhisper;
81 // 就绪 = 跨引擎任一已装模型,或启用了 localCli(自备模型);否则引导去下载。
82 const hasModels = hasAnyModelAnyEngine(systemInfo) || includeLocalCli;
83
84 const languageItems = (includeAuto: boolean) => (
85 <SelectContent>
86 {includeAuto && (
87 <SelectItem value="auto">{tHome('autoRecognition')}</SelectItem>
88 )}
89 {supportedLanguage.map((item) => (
90 <SelectItem key={item.value} value={item.value}>
91 {tCommon(`language.${item.value}`)}
92 </SelectItem>
93 ))}
94 </SelectContent>
95 );
96
97 // 已配置的服务商前置并独立分组,未配置的灰色置后:兼顾「可用项触手可及」与「发现性」
98 const { configuredProviders, unconfiguredProviders } = React.useMemo(() => {
99 const configured: Provider[] = [];
100 const unconfigured: Provider[] = [];
101 providers.forEach((provider) => {
102 if (isProviderConfigured(provider as any)) {
103 configured.push(provider);
104 } else {
105 unconfigured.push(provider);
106 }
107 });
108 return {
109 configuredProviders: configured,
110 unconfiguredProviders: unconfigured,
111 };
112 }, [providers]);
113
114 const renderProviderItem = (provider: Provider, configured: boolean) => (
115 <SelectItem key={provider.id} value={provider.id} disabled={!configured}>
116 {tCommon(`provider.${provider.name}`, { defaultValue: provider.name })}
117 {!configured && t('notConfigured')}

Callers

nothing calls this directly

Calls 5

hasAnyModelAnyEngineFunction · 0.90
isProviderConfiguredFunction · 0.90
setValueFunction · 0.85
languageItemsFunction · 0.85
renderProviderItemFunction · 0.85

Tested by

no test coverage detected