{"version":3,"file":"C8Cn5k0r.js","sources":["../../../../../../src/lib/stores/settingsStore.ts"],"sourcesContent":["import { writable, derived, get } from \"svelte/store\";\nimport { browser } from \"$app/environment\";\nimport type { Settings } from '$lib/types/settings.ts';\nimport { auth } from '$lib/stores/auth';\nimport { STORAGE_KEYS, createNamespacedStore } from '$lib/config/localForage.config';\n\nconst DEFAULT_SETTINGS: Settings = {\n sound_enabled: false,\n max_slippage: 2.0,\n timestamp: Date.now(),\n};\n\nconst SETTINGS_KEY = STORAGE_KEYS.SETTINGS;\nconst settingsStorage = createNamespacedStore(SETTINGS_KEY);\n\nfunction createSettingsStore() {\n const { subscribe, set, update } = writable(DEFAULT_SETTINGS);\n\n async function initializeStore() {\n if (browser) {\n const pnp = get(auth);\n const walletId = pnp?.account?.owner?.toString();\n if (!walletId) {\n console.error('Wallet ID is not available.');\n return;\n }\n\n try {\n const storedSettings = await settingsStorage.getItem(`${SETTINGS_KEY}_${walletId}`);\n if (storedSettings) {\n // Ensure max_slippage is set when loading from storage\n set({\n ...DEFAULT_SETTINGS, // Start with defaults\n ...storedSettings, // Override with stored settings\n max_slippage: storedSettings.max_slippage ?? DEFAULT_SETTINGS.max_slippage // Ensure max_slippage has a value\n });\n } else {\n // If no settings exist, store default settings\n const defaultSettings = {\n ...DEFAULT_SETTINGS,\n principal_id: walletId,\n timestamp: Date.now()\n };\n await settingsStorage.setItem(`${SETTINGS_KEY}_${walletId}`, defaultSettings);\n }\n } catch (error) {\n console.error('Error initializing settings:', error);\n }\n }\n }\n\n async function updateSetting(key: K, value: Settings[K]) {\n if (!browser) return;\n \n try {\n const pnp = get(auth);\n const walletId = pnp?.account?.owner?.toString();\n if (!walletId) {\n console.error('Wallet ID is not available to save settings');\n return;\n }\n \n update(settings => {\n const newSettings = { \n ...settings, \n [key]: value,\n timestamp: Date.now()\n };\n return newSettings;\n });\n \n // Get the current state to save\n let currentSettings: Settings;\n subscribe(value => (currentSettings = value))();\n \n // Save to storage\n await settingsStorage.setItem(`${SETTINGS_KEY}_${walletId}`, currentSettings);\n } catch (error) {\n console.error('Error updating setting:', error);\n }\n }\n \n async function reset() {\n if (!browser) return;\n \n const pnp = get(auth);\n const walletId = pnp?.account?.owner?.toString();\n if (!walletId) return;\n \n try {\n // Reset to default settings\n const defaultSettings = {\n ...DEFAULT_SETTINGS,\n timestamp: Date.now(),\n };\n \n // Save to store\n set(defaultSettings);\n \n // Save to storage\n await settingsStorage.setItem(`${SETTINGS_KEY}_${walletId}`, defaultSettings);\n } catch (error) {\n console.error('Error resetting settings:', error);\n }\n }\n\n return {\n subscribe,\n set,\n update,\n updateSetting,\n reset,\n initializeStore,\n soundEnabled: derived(\n { subscribe },\n ($settings) => $settings.sound_enabled\n ),\n };\n}\n\nexport const settingsStore = createSettingsStore();\n"],"names":["DEFAULT_SETTINGS","sound_enabled","max_slippage","timestamp","Date","now","SETTINGS_KEY","STORAGE_KEYS","SETTINGS","settingsStorage","createNamespacedStore","settingsStore","subscribe","set","update","writable","updateSetting","async","key","value","pnp","get","auth","walletId","_b","_a","account","owner","toString","console","error","currentSettings","settings","setItem","reset","defaultSettings","initializeStore","storedSettings","getItem","principal_id","soundEnabled","derived","$settings","createSettingsStore"],"mappings":"gGAMA,MAAMA,EAA6B,CACjCC,eAAe,EACfC,aAAc,EACdC,UAAWC,KAAKC,OAGZC,EAAeC,EAAaC,SAC5BC,EAAkBC,EAAsBJ,GA2GvC,MAAMK,EAzGb,WACE,MAAMC,UAAEA,EAAWC,IAAAA,EAAAC,OAAKA,GAAWC,EAAmBf,GA0F/C,MAAA,CACLY,YACAC,MACAC,SACAE,cA3DaC,eAAwCC,EAAQC,WAGzD,IACI,MAAAC,EAAMC,EAAIC,GACVC,EAAW,OAAAC,EAAA,OAAAC,EAAA,MAAAL,OAAA,EAAAA,EAAKM,cAAL,EAAAD,EAAcE,YAAO,EAAAH,EAAAI,WACtC,IAAKL,EAEH,YADAM,QAAQC,MAAM,+CAcZ,IAAAC,EAVJjB,GAAmBkB,IACG,IACfA,EACHd,CAACA,GAAMC,EACPhB,UAAWC,KAAKC,UAOpBO,GAAUO,GAAUY,EAAkBZ,GAAtCP,SAGMH,EAAgBwB,QAAQ,GAAG3B,KAAgBiB,IAAYQ,SACtDD,GACCD,QAAAC,MAAM,0BAA2BA,EAAK,CAChD,EAgCAI,MA7BFjB,yBAGQ,MAAAG,EAAMC,EAAIC,GACVC,EAAW,OAAAC,EAAA,OAAAC,EAAA,MAAAL,OAAA,EAAAA,EAAKM,cAAL,EAAAD,EAAcE,YAAO,EAAAH,EAAAI,WACtC,GAAKL,EAED,IAEF,MAAMY,EAAkB,IACnBnC,EACHG,UAAWC,KAAKC,OAIlBQ,EAAIsB,SAGE1B,EAAgBwB,QAAQ,GAAG3B,KAAgBiB,IAAYY,SACtDL,GACCD,QAAAC,MAAM,4BAA6BA,EAAK,CAClD,EASAM,gBA9FFnB,yBACe,CACL,MAAAG,EAAMC,EAAIC,GACVC,EAAW,OAAAC,EAAA,OAAAC,EAAA,MAAAL,OAAA,EAAAA,EAAKM,cAAL,EAAAD,EAAcE,YAAO,EAAAH,EAAAI,WACtC,IAAKL,EAEH,YADAM,QAAQC,MAAM,+BAIZ,IACI,MAAAO,QAAuB5B,EAAgB6B,QAAkB,GAAGhC,KAAgBiB,KAClF,GAAIc,EAEExB,EAAA,IACCb,KACAqC,EACHnC,aAAcmC,EAAenC,cAAgBF,EAAiBE,mBAE3D,CAEL,MAAMiC,EAAkB,IACnBnC,EACHuC,aAAchB,EACdpB,UAAWC,KAAKC,aAEZI,EAAgBwB,QAAQ,GAAG3B,KAAgBiB,IAAYY,EAAe,QAEvEL,GACCD,QAAAC,MAAM,+BAAgCA,EAAK,CACrD,CACF,EAiEAU,aAAcC,EACZ,CAAE7B,cACD8B,GAAcA,EAAUzC,gBAG/B,CAE6B0C"}