36 lines
1.4 KiB
JavaScript
36 lines
1.4 KiB
JavaScript
import { initializeRuntime } from "./core/runtime.js";
|
|
import { closeKeyDrawer, initializeKeys, loadKeys } from "./features/keys.js";
|
|
import { initializePricing, loadPricing } from "./features/pricing.js";
|
|
import { activateUsage, initializeUsage, refreshVisibleUsage, resetUsage } from "./features/usage.js";
|
|
|
|
const loaders = Object.freeze({ keys: loadKeys, usage: activateUsage, pricing: loadPricing, logs: () => {} });
|
|
|
|
initializeKeys();
|
|
initializeUsage();
|
|
initializePricing();
|
|
initializeRuntime(reloadCurrentView);
|
|
|
|
document.querySelectorAll(".nav-button").forEach(button => {
|
|
button.addEventListener("click", () => setView(button.dataset.view));
|
|
});
|
|
document.addEventListener("visibilitychange", refreshVisibleUsage);
|
|
setInterval(refreshVisibleUsage, 3000);
|
|
|
|
setView(sessionStorage.getItem("billing:active-view") || "keys");
|
|
|
|
function setView(view) {
|
|
document.querySelectorAll(".nav-button").forEach(button => button.classList.toggle("active", button.dataset.view === view));
|
|
document.querySelectorAll(".view").forEach(panel => panel.classList.toggle("active", panel.id === "view-" + view));
|
|
try {
|
|
sessionStorage.setItem("billing:active-view", view);
|
|
} catch (_) {}
|
|
loaders[view]?.();
|
|
}
|
|
|
|
function reloadCurrentView() {
|
|
closeKeyDrawer();
|
|
const active = document.querySelector(".nav-button.active")?.dataset.view || "keys";
|
|
if (active === "usage") resetUsage();
|
|
else loaders[active]?.();
|
|
}
|