db1aecd3d8
The congrats page fetches data once a minute, and onRefreshTimer() reloads the page once every 10 minutes. If a data fetch is in flight when the page reload happens, it can cause a 'failed to fetch' error to occur. Closes #2895
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
// Copyright: Ankitects Pty Ltd and contributors
|
|
// License: GNU AGPL, version 3 or later; http://www.gnu.org/licenses/agpl.html
|
|
|
|
import "./congrats-base.scss";
|
|
|
|
import { congratsInfo } from "@tslib/backend";
|
|
import { ModuleName, setupI18n } from "@tslib/i18n";
|
|
import { checkNightMode } from "@tslib/nightmode";
|
|
|
|
import CongratsPage from "./CongratsPage.svelte";
|
|
|
|
const i18n = setupI18n({ modules: [ModuleName.SCHEDULING] });
|
|
|
|
export async function setupCongrats(): Promise<CongratsPage> {
|
|
checkNightMode();
|
|
await i18n;
|
|
|
|
const customMountPoint = document.getElementById("congrats");
|
|
const info = await congratsInfo({});
|
|
const page = new CongratsPage({
|
|
// use #congrats if it exists, otherwise entire body
|
|
target: customMountPoint ?? document.body,
|
|
props: { info },
|
|
});
|
|
|
|
// refresh automatically if a custom area not provided
|
|
if (!customMountPoint) {
|
|
setInterval(async () => {
|
|
try {
|
|
const info = await congratsInfo({});
|
|
page.$set({ info });
|
|
} catch {
|
|
console.log("congrats fetch failed");
|
|
}
|
|
}, 60000);
|
|
}
|
|
|
|
return page;
|
|
}
|
|
|
|
setupCongrats();
|