@@ -2,6 +2,7 @@ import { createStore, reconcile } from "solid-js/store"
22import { createEffect , createMemo } from "solid-js"
33import { createSimpleContext } from "@opencode-ai/ui/context"
44import { persisted } from "@/utils/persist"
5+ import { usePlatform } from "./platform"
56
67export interface NotificationSettings {
78 agent : boolean
@@ -148,10 +149,16 @@ function withFallback<T>(read: () => T | undefined, fallback: T) {
148149 return createMemo ( ( ) => read ( ) ?? fallback )
149150}
150151
152+ function desktopFallback < T > ( read : ( ) => T | undefined , config : ( ) => T | undefined , fallback : T ) {
153+ return createMemo ( ( ) => config ( ) ?? read ( ) ?? fallback )
154+ }
155+
151156export const { use : useSettings , provider : SettingsProvider } = createSimpleContext ( {
152157 name : "Settings" ,
153158 gate : false ,
154159 init : ( ) => {
160+ const platform = usePlatform ( )
161+ const desktopConfig = ( ) => ( platform . platform === "desktop" ? platform . desktopConfig ?.( ) : undefined )
155162 const [ store , setStore , _ , ready ] = persisted ( "settings.v3" , createStore < Settings > ( defaultSettings ) )
156163 const showFileTree = withFallback ( ( ) => store . general ?. showFileTree , defaultSettings . general . showFileTree )
157164 const showSearch = withFallback ( ( ) => store . general ?. showSearch , defaultSettings . general . showSearch )
@@ -295,7 +302,11 @@ export const { use: useSettings, provider: SettingsProvider } = createSimpleCont
295302 } ,
296303 } ,
297304 permissions : {
298- autoApprove : withFallback ( ( ) => store . permissions ?. autoApprove , defaultSettings . permissions . autoApprove ) ,
305+ autoApprove : desktopFallback (
306+ ( ) => store . permissions ?. autoApprove ,
307+ ( ) => desktopConfig ( ) ?. permissions ?. autoApprove ,
308+ defaultSettings . permissions . autoApprove ,
309+ ) ,
299310 setAutoApprove ( value : boolean ) {
300311 setStore ( "permissions" , "autoApprove" , value )
301312 } ,
@@ -315,30 +326,51 @@ export const { use: useSettings, provider: SettingsProvider } = createSimpleCont
315326 } ,
316327 } ,
317328 sounds : {
318- agentEnabled : withFallback ( ( ) => store . sounds ?. agentEnabled , defaultSettings . sounds . agentEnabled ) ,
329+ agentEnabled : desktopFallback (
330+ ( ) => store . sounds ?. agentEnabled ,
331+ ( ) => desktopConfig ( ) ?. sounds ?. agentEnabled ,
332+ defaultSettings . sounds . agentEnabled ,
333+ ) ,
319334 setAgentEnabled ( value : boolean ) {
320335 setStore ( "sounds" , "agentEnabled" , value )
321336 } ,
322- agent : withFallback ( ( ) => store . sounds ?. agent , defaultSettings . sounds . agent ) ,
337+ agent : desktopFallback (
338+ ( ) => store . sounds ?. agent ,
339+ ( ) => desktopConfig ( ) ?. sounds ?. agent ,
340+ defaultSettings . sounds . agent ,
341+ ) ,
323342 setAgent ( value : string ) {
324343 setStore ( "sounds" , "agent" , value )
325344 } ,
326- permissionsEnabled : withFallback (
345+ permissionsEnabled : desktopFallback (
327346 ( ) => store . sounds ?. permissionsEnabled ,
347+ ( ) => desktopConfig ( ) ?. sounds ?. permissionsEnabled ,
328348 defaultSettings . sounds . permissionsEnabled ,
329349 ) ,
330350 setPermissionsEnabled ( value : boolean ) {
331351 setStore ( "sounds" , "permissionsEnabled" , value )
332352 } ,
333- permissions : withFallback ( ( ) => store . sounds ?. permissions , defaultSettings . sounds . permissions ) ,
353+ permissions : desktopFallback (
354+ ( ) => store . sounds ?. permissions ,
355+ ( ) => desktopConfig ( ) ?. sounds ?. permissions ,
356+ defaultSettings . sounds . permissions ,
357+ ) ,
334358 setPermissions ( value : string ) {
335359 setStore ( "sounds" , "permissions" , value )
336360 } ,
337- errorsEnabled : withFallback ( ( ) => store . sounds ?. errorsEnabled , defaultSettings . sounds . errorsEnabled ) ,
361+ errorsEnabled : desktopFallback (
362+ ( ) => store . sounds ?. errorsEnabled ,
363+ ( ) => desktopConfig ( ) ?. sounds ?. errorsEnabled ,
364+ defaultSettings . sounds . errorsEnabled ,
365+ ) ,
338366 setErrorsEnabled ( value : boolean ) {
339367 setStore ( "sounds" , "errorsEnabled" , value )
340368 } ,
341- errors : withFallback ( ( ) => store . sounds ?. errors , defaultSettings . sounds . errors ) ,
369+ errors : desktopFallback (
370+ ( ) => store . sounds ?. errors ,
371+ ( ) => desktopConfig ( ) ?. sounds ?. errors ,
372+ defaultSettings . sounds . errors ,
373+ ) ,
342374 setErrors ( value : string ) {
343375 setStore ( "sounds" , "errors" , value )
344376 } ,
0 commit comments