1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
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;
});
};