From 4ceb5827f14f6f3358924145779fb1383e5935a4 Mon Sep 17 00:00:00 2001 From: Anish Sarkar <104695310+AnishSarkar22@users.noreply.github.com> Date: Fri, 3 Jul 2026 10:27:48 +0530 Subject: [PATCH] feat(models): add refresh control enhancements to model selection and provider connect dialogs - Introduced `isRefreshDisabled` prop to `ModelsSelectionPanel` to control refresh button state. - Updated `ProviderConnectDialog` to conditionally enable refresh functionality based on model support and submission status. --- .../settings/model-connections/models-selection-panel.tsx | 4 +++- .../settings/model-connections/provider-connect-dialog.tsx | 6 ++++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/surfsense_web/components/settings/model-connections/models-selection-panel.tsx b/surfsense_web/components/settings/model-connections/models-selection-panel.tsx index 6aa0c2661..b6258b7b2 100644 --- a/surfsense_web/components/settings/model-connections/models-selection-panel.tsx +++ b/surfsense_web/components/settings/model-connections/models-selection-panel.tsx @@ -17,6 +17,7 @@ interface ModelsSelectionPanelProps { emptyMessage?: string; refreshLabel?: string; isRefreshing?: boolean; + isRefreshDisabled?: boolean; isUpdatingModel?: boolean; isBulkUpdating?: boolean; onRefresh?: () => void; @@ -30,6 +31,7 @@ export function ModelsSelectionPanel({ emptyMessage = "No models available.", refreshLabel = "Refresh models", isRefreshing = false, + isRefreshDisabled = false, isUpdatingModel = false, isBulkUpdating = false, onRefresh, @@ -74,7 +76,7 @@ export function ModelsSelectionPanel({ size="icon" type="button" onClick={onRefresh} - disabled={isRefreshing} + disabled={isRefreshing || isRefreshDisabled} aria-label={refreshLabel} > diff --git a/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx b/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx index 0b795064d..2fba3bcbf 100644 --- a/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx +++ b/surfsense_web/components/settings/model-connections/provider-connect-dialog.tsx @@ -92,7 +92,8 @@ export function ProviderConnectDialog({ return "Select the models to enable for this provider"; })(); - const canRefreshModels = !isAzure && !isVertex && (!isBedrock || canSubmit); + const supportsModelRefresh = !isAzure && !isVertex; + const canRefreshModels = supportsModelRefresh && canSubmit; const hasEnabledModel = previewModels.some((model) => model.enabled) || Boolean(currentDraft.seedModelId); const canConnect = canSubmit && hasEnabledModel; @@ -136,8 +137,9 @@ export function ProviderConnectDialog({ models={previewModels} description={modelDescription} isRefreshing={isPreviewingModels} + isRefreshDisabled={!canRefreshModels} refreshLabel={`Refresh ${meta.name} models`} - onRefresh={canRefreshModels ? () => onPreviewModels?.(currentDraft) : undefined} + onRefresh={supportsModelRefresh ? () => onPreviewModels?.(currentDraft) : undefined} onToggleModel={onTogglePreviewModel} onBulkToggle={onBulkTogglePreviewModels} />