43 lines
1.7 KiB
JavaScript
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;
|
|
}
|