@@ -112,6 +112,10 @@ export function STTViewLocal({
112112 { amAvailable && (
113113 < ProModelsManagement
114114 on = { ! ! servers . data ?. external }
115+ selectedSTTModel = { selectedSTTModel }
116+ setSelectedSTTModel = { setSelectedSTTModel }
117+ downloadingModels = { downloadingModels }
118+ handleModelDownload = { handleModelDownload }
115119 />
116120 ) }
117121 </ div >
@@ -142,7 +146,7 @@ function BasicModelsManagement({
142146 < div className = "flex flex-col mb-3" >
143147 < div className = { cn ( [ "text-sm font-semibold text-gray-700 flex items-center gap-2" ] ) } >
144148 < h3 > Basic Models</ h3 >
145- < span className = { cn ( [ "w-2 h-2 rounded-full" , on ? "bg-blue-300 animate-pulse" : "bg-red-300 " ] ) } />
149+ < span className = { cn ( [ "w-2 h-2 rounded-full" , on ? "bg-blue-300 animate-pulse" : "bg-gray-100 " ] ) } />
146150 </ div >
147151 < p className = "text-xs text-gray-500" > Default inference mode powered by Whisper.cpp.</ p >
148152 </ div >
@@ -164,14 +168,36 @@ function BasicModelsManagement({
164168 ) ;
165169}
166170
167- function ProModelsManagement ( { on } : { on : boolean } ) {
171+ function ProModelsManagement (
172+ { on, selectedSTTModel, setSelectedSTTModel, downloadingModels, handleModelDownload } : {
173+ on : boolean ;
174+ selectedSTTModel : string ;
175+ setSelectedSTTModel : ( model : string ) => void ;
176+ downloadingModels : Set < string > ;
177+ handleModelDownload : ( model : string ) => void ;
178+ } ,
179+ ) {
180+ const handleShowFileLocation = async ( ) => {
181+ localSttCommands . modelsDir ( ) . then ( ( path ) => openPath ( path ) ) ;
182+ } ;
183+
168184 const proModels = useQuery ( {
169185 queryKey : [ "pro-models" ] ,
170186 queryFn : async ( ) => {
171- const models = await localSttCommands . listSupportedModels ( ) ;
172- return models . filter ( ( model ) =>
173- model . key === "am-whisper-small-en" || model . key === "am-whisper-large-v3" || model . key === "am-parakeet-v2"
187+ const models = await localSttCommands . listSupportedModels ( ) . then ( ( models ) =>
188+ models . filter ( ( model ) => model . key === "am-whisper-large-v3" || model . key === "am-parakeet-v2" )
174189 ) ;
190+ const downloaded = await Promise . all (
191+ models . map ( ( { key } ) => localSttCommands . isModelDownloaded ( key ) ) ,
192+ ) ;
193+
194+ return models . map ( ( model , index ) => ( {
195+ name : model . display_name ,
196+ key : model . key ,
197+ downloaded : downloaded [ index ] ,
198+ size : `${ ( model . size_bytes / 1024 / 1024 ) . toFixed ( 0 ) } MB` ,
199+ fileName : "" ,
200+ } ) ) ;
175201 } ,
176202 } ) ;
177203
@@ -181,7 +207,7 @@ function ProModelsManagement({ on }: { on: boolean }) {
181207 < div className = "flex flex-col mb-3" >
182208 < div className = "text-sm font-semibold text-gray-700 flex items-center gap-2" >
183209 < h3 > Pro Models</ h3 >
184- < span className = { cn ( [ "w-2 h-2 rounded-full" , on ? "bg-blue-300 animate-pulse" : "bg-red-300 " ] ) } />
210+ < span className = { cn ( [ "w-2 h-2 rounded-full" , on ? "bg-blue-300 animate-pulse" : "bg-gray-100 " ] ) } />
185211 </ div >
186212 < p className = "text-xs text-gray-500" >
187213 Latency and resource optimized. Only for pro plan users.
@@ -192,19 +218,13 @@ function ProModelsManagement({ on }: { on: boolean }) {
192218 { proModels . data ?. map ( ( model ) => (
193219 < ModelEntry
194220 key = { model . key }
195- disabled = { true }
196- model = { {
197- name : model . display_name ,
198- key : model . key ,
199- downloaded : false ,
200- size : `${ ( model . size_bytes / 1024 / 1024 ) . toFixed ( 0 ) } MB` ,
201- fileName : "" ,
202- } }
203- selectedSTTModel = { "" }
204- setSelectedSTTModel = { ( ) => { } }
205- downloadingModels = { new Set ( ) }
206- handleModelDownload = { ( ) => { } }
207- handleShowFileLocation = { ( ) => { } }
221+ disabled = { false }
222+ model = { model }
223+ selectedSTTModel = { selectedSTTModel }
224+ setSelectedSTTModel = { setSelectedSTTModel }
225+ downloadingModels = { downloadingModels }
226+ handleModelDownload = { handleModelDownload }
227+ handleShowFileLocation = { handleShowFileLocation }
208228 />
209229 ) ) }
210230 </ div >
0 commit comments