/
minecraftbackup
/
LiquidBounce
Обзор
Документация
Войти
/
minecraftbackup
/
LiquidBounce
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
nextgen
src-theme/src/App.svelte
98 строк
3 KB
1zuna
feat: browser controls (#3502)
20 июл 2024, 20:05
Не верифицирован
20 июл 2024, 20:05
6ae450a
Код
Авторство
О чём код?
<script lang="ts"> import Router, {push} from "svelte-spa-router"; import ClickGui from "./routes/clickgui/ClickGui.svelte"; import Hud from "./routes/hud/Hud.svelte"; import {getVirtualScreen} from "./integration/rest"; import {cleanupListeners, listenAlways} from "./integration/ws"; import {onMount} from "svelte"; import {insertPersistentData} from "./integration/persistent_storage"; import Inventory from "./routes/inventory/Inventory.svelte"; import Title from "./routes/menu/title/Title.svelte"; import SplashScreen from "./routes/menu/splash/SplashScreen.svelte"; import Multiplayer from "./routes/menu/multiplayer/Multiplayer.svelte"; import AltManager from "./routes/menu/altmanager/AltManager.svelte"; import Singleplayer from "./routes/menu/singleplayer/Singleplayer.svelte"; import ProxyManager from "./routes/menu/proxymanager/ProxyManager.svelte"; import None from "./routes/none/None.svelte"; import Disconnected from "./routes/menu/disconnected/Disconnected.svelte"; import Browser from "./routes/browser/Browser.svelte"; const routes = { "/clickgui": ClickGui, "/hud": Hud, "/inventory": Inventory, "/title": Title, "/splash": SplashScreen, "/multiplayer": Multiplayer, "/altmanager": AltManager, "/singleplayer": Singleplayer, "/proxymanager": ProxyManager, "/none": None, "/disconnected": Disconnected, "/browser": Browser }; const url = window.location.href; const staticTag = url.split("?")[1]; const isStatic = staticTag === "static"; let showSplash = false; // HACK: Just in case setTimeout(() => { showSplash = false; }, 10 * 1000); async function changeRoute(name: string) { cleanupListeners(); console.log(`[Router] Redirecting to ${name}`); await push(`/${name}`); } onMount(async () => { await insertPersistentData(); if (isStatic) { return; } listenAlways("socketReady", async () => { const virtualScreen = await getVirtualScreen(); showSplash = virtualScreen.showingSplash; await changeRoute(virtualScreen.name || "none"); }); listenAlways("splashOverlay", async (event: any) => { showSplash = event.showingSplash; if (!showSplash) { // Dirty fix to patch lagging browser after launch. window.location.replace(window.location.href.split("#").shift()!); } }); listenAlways("virtualScreen", async (event: any) => { console.log(`[Router] Virtual screen change to ${event.screenName}`); const action = event.action; switch (action) { case "close": await changeRoute("none"); break; case "open": await changeRoute(event.screenName || "none"); break; } }); const virtualScreen = await getVirtualScreen(); showSplash = virtualScreen.showingSplash; await changeRoute(virtualScreen.name || "none"); }); </script> <main> {#if showSplash} <SplashScreen/> {:else} <Router {routes}/> {/if} </main>