anki/ts/congrats/index.ts
Damien Elmes db1aecd3d8 Ignore congrats fetch errors
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
2024-01-19 15:28:54 +10:00

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();