Files
kantinen-wrapper/src/state.js

43 lines
1.7 KiB
JavaScript

import { getISOWeek } from './utils.js';
import { LS } from './constants.js';
export let allWeeks = [];
export let currentWeekNumber = getISOWeek(new Date());
export let currentYear = new Date().getFullYear();
export let displayMode = 'this-week';
export let authToken = localStorage.getItem(LS.AUTH_TOKEN);
export let currentUser = localStorage.getItem(LS.CURRENT_USER);
export let orderMap = new Map();
export let userFlags = new Set(JSON.parse(localStorage.getItem(LS.FLAGS) || '[]'));
export let pollIntervalId = null;
export let langMode = localStorage.getItem(LS.LANG) || 'de';
export let highlightTags = JSON.parse(localStorage.getItem(LS.HIGHLIGHT_TAGS) || '[]');
export function setAllWeeks(weeks) { allWeeks = weeks; }
export function setCurrentWeekNumber(week) { currentWeekNumber = week; }
export function setCurrentYear(year) { currentYear = year; }
export function setAuthToken(token) { authToken = token; }
export function setCurrentUser(user) { currentUser = user; }
export function setOrderMap(map) { orderMap = map; }
export function setUserFlags(flags) { userFlags = flags; }
export function setPollIntervalId(id) { pollIntervalId = id; }
export function setHighlightTags(tags) { highlightTags = tags; }
/** Only 'this-week' and 'next-week' are valid display modes. */
export function setDisplayMode(mode) {
if (mode !== 'this-week' && mode !== 'next-week') {
console.warn(`[state] Invalid displayMode: "${mode}". Ignoring.`);
return;
}
displayMode = mode;
}
/** Only 'de', 'en', and 'all' are valid language modes. */
export function setLangMode(lang) {
if (!['de', 'en', 'all'].includes(lang)) {
console.warn(`[state] Invalid langMode: "${lang}". Ignoring.`);
return;
}
langMode = lang;
}