Hide Plus/Custom tabs when Frigate+ is not enabled

This commit is contained in:
Josh Hawkins 2026-05-16 12:53:10 -05:00
parent 73e0d1b0eb
commit 61a826a309
2 changed files with 45 additions and 39 deletions

View File

@ -1170,8 +1170,7 @@
}, },
"plusModel": { "plusModel": {
"requiresDetector": "Requires: {{detector}}", "requiresDetector": "Requires: {{detector}}",
"noModelSelected": "Select a Frigate+ model", "noModelSelected": "Select a Frigate+ model"
"plusDisabled": "Add a Frigate+ API key to use Frigate+ models."
}, },
"toast": { "toast": {
"saveSuccess": "Detector and model settings saved", "saveSuccess": "Detector and model settings saved",

View File

@ -417,29 +417,25 @@ export default function DetectorsAndModelSettingsView({
/> />
)} )}
<SettingsGroupCard title={t("detectorsAndModel.cardTitles.model")}> <SettingsGroupCard title={t("detectorsAndModel.cardTitles.model")}>
<Tabs {plusEnabled ? (
value={state.modelTab} <Tabs
onValueChange={(value) => value={state.modelTab}
setState((prev) => onValueChange={(value) =>
prev ? { ...prev, modelTab: value as ModelTab } : prev, setState((prev) =>
) prev ? { ...prev, modelTab: value as ModelTab } : prev,
} )
> }
<TabsList className="mb-4"> >
<TabsTrigger value="plus" disabled={!plusEnabled}> <TabsList className="mb-4">
{t("detectorsAndModel.tabs.plus")} <TabsTrigger value="plus">
</TabsTrigger> {t("detectorsAndModel.tabs.plus")}
<TabsTrigger value="custom"> </TabsTrigger>
{t("detectorsAndModel.tabs.custom")} <TabsTrigger value="custom">
</TabsTrigger> {t("detectorsAndModel.tabs.custom")}
</TabsList> </TabsTrigger>
</TabsList>
<TabsContent value="plus"> <TabsContent value="plus">
{!plusEnabled ? (
<p className="py-4 text-sm text-muted-foreground">
{t("detectorsAndModel.plusModel.plusDisabled")}
</p>
) : (
<div className="flex w-full items-center gap-2"> <div className="flex w-full items-center gap-2">
<Select <Select
value={state.plusModelId} value={state.plusModelId}
@ -588,22 +584,33 @@ export default function DetectorsAndModelSettingsView({
</PopoverContent> </PopoverContent>
</Popover> </Popover>
</div> </div>
)} </TabsContent>
</TabsContent>
<TabsContent value="custom"> <TabsContent value="custom">
<ConfigSectionTemplate <ConfigSectionTemplate
sectionKey="model" sectionKey="model"
level="global" level="global"
showOverrideIndicator={false} showOverrideIndicator={false}
showTitle={false} showTitle={false}
embedded embedded
pendingDataBySection={childPending} pendingDataBySection={childPending}
onPendingDataChange={handleChildPendingChange} onPendingDataChange={handleChildPendingChange}
onStatusChange={handleModelStatusChange} onStatusChange={handleModelStatusChange}
/> />
</TabsContent> </TabsContent>
</Tabs> </Tabs>
) : (
<ConfigSectionTemplate
sectionKey="model"
level="global"
showOverrideIndicator={false}
showTitle={false}
embedded
pendingDataBySection={childPending}
onPendingDataChange={handleChildPendingChange}
onStatusChange={handleModelStatusChange}
/>
)}
</SettingsGroupCard> </SettingsGroupCard>
</div> </div>
</div> </div>