// State shared between views: who is signed in, the user list, and the open // queue that drives the badges. import * as api from './api.js'; export const state = { me: null, // { user, has_password } open: [], // the default queue: open, not snoozed }; export function myID() { return state.me ? state.me.user.id : null; } // The user list changes rarely; it is fetched once and then at most every // five minutes, for the assign sheet and for display names. let usersCache = null; let usersAt = 0; export async function users() { if (!usersCache || Date.now() - usersAt > 5 * 60 * 1000) { usersCache = await api.users(); usersAt = Date.now(); } return usersCache; } export function reset() { state.me = null; state.open = []; usersCache = null; }