import { browser } from '$app/environment'; import { ezppfarm } from './api/ezpp'; import type { Theme } from './theme/themes'; import type { Release } from './types'; import { setGlobalVolume } from './utils'; import type { Component } from 'svelte'; import { writable } from 'svelte/store'; export const currentView = writable(null); export const platform = writable(''); export const launcherVersion = writable(''); export const newVersion = writable(undefined); export const launcherStreams = writable(['stable']); export const launcherStream = writable('stable'); export const trackingEnabled = writable(false); export const discordPresence = writable(false); export const presenceLoading = writable(false); export const currentLoadingInfo = writable('Initializing...'); export const firstStartup = writable(false); export const launching = writable(false); export const custom_themes = writable([]); export const custom_theme_container = writable(undefined); export const active_custom_theme = writable(undefined); /** Incremented to remount theme media after reloading the active theme from disk. */ export const theme_reload_token = writable(0); export const custom_theme_audio_playing = writable(false); export const custom_theme_volume = writable(0.15); custom_theme_volume.subscribe((val) => { if (browser) { setGlobalVolume(val); } }); export const openTabletDriverEnabled = writable(false); export const openTabletDriverPath = writable(''); export const serverPing = writable(undefined); export const serverConnectionFails = writable(0); export const onlineFriends = writable(undefined); export const beatmapSets = writable(undefined); export const skinsCount = writable(undefined); export const skins = writable<{ name: string; author: string | undefined; modified: number }[]>([]); export const osuStream = writable(undefined); export const osuBuild = writable(undefined); export const currentSkin = writable(''); let updateValues = true; launching.subscribe((val) => (updateValues = !val)); export const setupValues = () => { updatePing(); const pingUpdater = setInterval(updatePing, 5000 * 2); return () => { clearInterval(pingUpdater); }; }; const updatePing = async () => { if (!updateValues) return; const currentServerPing = await ezppfarm.ping(); if (!currentServerPing) { serverConnectionFails.update((num) => num + 1); } else { serverConnectionFails.set(0); serverPing.set(currentServerPing); } };