ctucx.git: trainsearch

web based trip-planner, fork of https://cyberchaos.dev/yuka/trainsearch

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 
import { db } from './dataStorage.js';
import { getDefaultLanguage } from './languages.js';

const subscribers     = [];
const defaultSettings = {
	language: getDefaultLanguage(),
	profile: "db",
	products: {
		'nationalExpress': true,
		'national': true,
		'regionalExpress': true,
		'regional': true,
		'suburban': true,
		'bus': true,
		'ferry': true,
		'subway': true,
		'tram': true,
		'taxi': true
	},
	accessibility: 'none',
	walkingSpeed: 'normal',
	bikeFriendly: false,
	loyaltyCard: 'NONE',
	ageGroup: 'E',
	journeysViewMode: 'canvas',
	combineDateTime: false,
	showPrices: true,
	showDS100: true,
	showVia: false,
};

export let settings;

export const subscribeSettings = cb => subscribers.push(cb);

export const initSettings = async () => {
	settings = (await db.getSettings()) || defaultSettings;

	for (const cb of subscribers) await cb();
};

export const modifySettings = async callback => {
	const newSettings = await db.modifySettings(JSON.parse(JSON.stringify(settings)), callback);
	Object.freeze(newSettings);
	settings = newSettings;
	for (const cb of subscribers) await cb();
};