import { createStore } from 'zustand/vanilla'; import { persist, createJSONStorage } from 'zustand/middleware' import { db, initDataStorage } from './dataStorage.js'; import { getDefaultLanguage } from './translate.js'; import { getDefaultProfile } from './hafasClient.js'; export let settingsState; export const settings = createStore()( persist( (set, get) => ({ language: getDefaultLanguage(), profile: getDefaultProfile(), products: {}, accessibility: 'none', walkingSpeed: 'normal', transferTime: 0, loyaltyCard: 'NONE', ageGroup: 'E', journeysViewMode: 'canvas', bikeFriendly: false, combineDateTime: false, showVia: false, showPrices: true, showDS100: true, disableCanvasBlur: false, setJourneysViewMode: (journeysViewMode) => set({ journeysViewMode }), setLanguage: (language) => set({ language }), setProfile: (profile) => set({ profile }), setTransferTime: (transferTime) => set({ transferTime }), setAgeGroup: (ageGroup) => set({ ageGroup }), setLoyaltyCard: (loyaltyCard) => set({ loyaltyCard }), setAccessibility: (accessibility) => set({ accessibility }), setWalkingSpeed: (walkingSpeed) => set({ walkingSpeed }), setShowVia: (showVia) => set({ showVia }), toggleCombineDateTime: () => set((state) => ({ combineDateTime: !state.combineDateTime })), toggleShowPrices: () => set((state) => ({ showPrices: !state.showPrices })), toggleShowDS100: () => set((state) => ({ showDS100: !state.showDS100 })), toggleShowVia: () => set((state) => ({ showVia: !state.showVia })), toggleBikeFriendly: () => set((state) => ({ bikeFriendly: !state.bikeFriendly })), toggleProduct: (key) => set((state) => { state.products[key] = !state.products[key]; return { products: state.products }; }) }), { name: 'settings' } ) ) export const initSettingsState = async () => { settingsState = settings.getState(); settings.subscribe(state => { settingsState = state; }); };