diff --git a/web/src/views/settings/DetectorsAndModelSettingsView.tsx b/web/src/views/settings/DetectorsAndModelSettingsView.tsx index da93371c3c..4b84dbf8ba 100644 --- a/web/src/views/settings/DetectorsAndModelSettingsView.tsx +++ b/web/src/views/settings/DetectorsAndModelSettingsView.tsx @@ -1,5 +1,5 @@ import { useCallback, useContext, useEffect, useMemo, useState } from "react"; -import { useTranslation } from "react-i18next"; +import { Trans, useTranslation } from "react-i18next"; import { Link } from "react-router-dom"; import { LuExternalLink, LuFilter } from "react-icons/lu"; import axios from "axios"; @@ -163,6 +163,18 @@ export default function DetectorsAndModelSettingsView( [currentDetectorType], ); + const selectedPlusModel = state?.plusModelId + ? availableModels?.[state.plusModelId] + : undefined; + + const plusMismatch = + state?.modelTab === "plus" && + selectedPlusModel !== undefined && + currentDetectorType !== undefined && + !isModelCompatible(selectedPlusModel); + + const plusModelMissing = state?.modelTab === "plus" && !state?.plusModelId; + const handleChildPendingChange = useCallback( ( sectionKey: string, @@ -259,7 +271,9 @@ export default function DetectorsAndModelSettingsView( !isDirty || isSaving || detectorStatus.hasValidationErrors || - (state.modelTab === "custom" && modelStatus.hasValidationErrors); + (state.modelTab === "custom" && modelStatus.hasValidationErrors) || + plusMismatch || + plusModelMissing; return (
@@ -306,6 +320,22 @@ export default function DetectorsAndModelSettingsView( onStatusChange={handleDetectorStatusChange} /> + {plusMismatch && selectedPlusModel && ( +
+ , + 1: , + }} + /> +
+ )}