@@ -55,8 +55,9 @@ import { ProviderIcon } from "../../components/ProviderIcon";
5555import { ThemedSwitch } from "../../components/ui/ThemedSwitch" ;
5656import { cn } from "../../lib/cn" ;
5757import {
58+ buildProviderUpdateRequiredGroups ,
5859 buildModelOptions ,
59- groupByProvider ,
60+ groupModelOptionsWithProviderNotices ,
6061 type ModelOption ,
6162 type ProviderGroup ,
6263} from "../../lib/modelOptions" ;
@@ -95,11 +96,10 @@ import {
9596} from "./thread-settings-options" ;
9697import {
9798 canCommitPendingModel ,
98- favoritesFirst ,
9999 modelFavoriteKey ,
100- modelMatchesCatalogQuery ,
101100 pendingModelAfterPress ,
102101 providerSectionIsCollapsed ,
102+ visibleModelsForCatalog ,
103103} from "./thread-settings-sheet-state" ;
104104import { formatProviderUpdateRequiredNotice } from "@t3tools/client-runtime/providerUpdateRequiredModels" ;
105105
@@ -358,19 +358,26 @@ function ThreadSettingsSessionProvider(
358358 new Map < string , { favorite : boolean ; settings : ServerSettings ; pending : boolean } > ( ) ,
359359 ) ;
360360 const [ pendingHiddenKeys , setPendingHiddenKeys ] = useState < ReadonlySet < string > > ( ( ) => new Set ( ) ) ;
361- const providerGroups =
361+ const modelOptions =
362362 manageHidden && config
363- ? groupByProvider (
364- buildModelOptions (
365- config ,
366- props . selectedModel ,
367- props . lockedProviderInstanceId ,
368- props . projectId ,
369- "composer" ,
370- true ,
371- ) ,
363+ ? buildModelOptions (
364+ config ,
365+ props . selectedModel ,
366+ props . lockedProviderInstanceId ,
367+ props . projectId ,
368+ "composer" ,
369+ true ,
372370 )
373- : props . providerGroups ;
371+ : props . providerGroups . flatMap ( ( group ) => group . models ) ;
372+ const providerGroups = groupModelOptionsWithProviderNotices (
373+ modelOptions ,
374+ buildProviderUpdateRequiredGroups (
375+ config ,
376+ props . lockedProviderInstanceId ,
377+ props . projectId ,
378+ "composer" ,
379+ ) ,
380+ ) ;
374381 const legacyFavorites = AsyncResult . isSuccess ( preferences )
375382 ? ( preferences . value . modelFavorites ?? EMPTY_MODEL_FAVORITES )
376383 : EMPTY_MODEL_FAVORITES ;
@@ -762,29 +769,18 @@ function buildThreadSettingsCatalogItems(
762769 ) {
763770 return [ ] ;
764771 }
765- const driver = group . models [ 0 ] ?. providerDriver ?? group . providerKey ;
766- const catalogModels =
767- session . manageHidden ||
768- session . showLegacy ||
769- session . providerFilter === FAVORITES_PROVIDER_FILTER
770- ? group . models
771- : group . models . filter (
772- ( model ) =>
773- ! model . isLegacy || session . isDisplayed ( model ) || session . favoriteKeys . has ( model . key ) ,
774- ) ;
775- const visibleModels = favoritesFirst (
776- catalogModels . filter (
777- ( model ) =>
778- ( session . providerFilter !== FAVORITES_PROVIDER_FILTER ||
779- session . favoriteKeys . has ( model . key ) ) &&
780- modelMatchesCatalogQuery ( {
781- model,
782- providerLabel : group . providerLabel ,
783- query : session . searchQuery ,
784- } ) ,
785- ) ,
786- session . favoriteKeys ,
787- ) ;
772+ const driver =
773+ group . models [ 0 ] ?. providerDriver ?? group . updateRequired ?. driver ?? group . providerKey ;
774+ const visibleModels = visibleModelsForCatalog ( {
775+ models : group . models ,
776+ providerLabel : group . providerLabel ,
777+ query : session . searchQuery ,
778+ manageHidden : session . manageHidden ,
779+ showLegacy : session . showLegacy ,
780+ favoritesOnly : session . providerFilter === FAVORITES_PROVIDER_FILTER ,
781+ favoriteKeys : session . favoriteKeys ,
782+ isDisplayed : session . isDisplayed ,
783+ } ) ;
788784 const updateRequiredNotice =
789785 group . updateRequired && session . providerFilter !== FAVORITES_PROVIDER_FILTER
790786 ? formatProviderUpdateRequiredNotice ( group . updateRequired , session . searchQuery )
@@ -797,7 +793,10 @@ function buildThreadSettingsCatalogItems(
797793 const isNarrowed = session . providerFilter !== null || session . searchQuery . trim ( ) . length > 0 ;
798794 const collapsible = ! isNarrowed ;
799795 const collapsed = providerSectionIsCollapsed ( {
800- defaultExpanded : isPrimary || containsAppliedSelection ,
796+ defaultExpanded :
797+ isPrimary ||
798+ containsAppliedSelection ||
799+ ( visibleModels . length === 0 && updateRequiredNotice !== null ) ,
801800 hasExpansionOverride : session . providerExpansionOverrides . has ( group . providerKey ) ,
802801 isNarrowed,
803802 } ) ;
0 commit comments