From f74e51943ff6f7df14b29f2c37a05dd169ff15e5 Mon Sep 17 00:00:00 2001 From: HorizonCode Date: Thu, 3 Jul 2025 22:15:53 +0200 Subject: [PATCH] fix: update data on game exit --- src/pages/Launch.svelte | 42 +++++++++++++++++++++++++++++++---------- 1 file changed, 32 insertions(+), 10 deletions(-) diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte index 57051a2..554efe6 100644 --- a/src/pages/Launch.svelte +++ b/src/pages/Launch.svelte @@ -131,10 +131,11 @@ }); return; } + const osuPath = $osuInstallationPath; launchInfo = 'Validating osu! installation...'; launching = true; - const validFolder: boolean = await invoke('valid_osu_folder', { folder: $osuInstallationPath }); + const validFolder: boolean = await invoke('valid_osu_folder', { folder: osuPath }); if (!validFolder) { toast.error('Hmmm...', { description: 'Your selected osu! installation folder is not valid.', @@ -158,8 +159,8 @@ launchInfo = 'Update found!'; await new Promise((res) => setTimeout(res, 1500)); launchInfo = 'Running osu! updater...'; - await setUserConfigValue($osuInstallationPath, 'LastVersion', streamInfo); - await invoke('run_osu_updater', { folder: $osuInstallationPath }); + await setUserConfigValue(osuPath, 'LastVersion', streamInfo); + await invoke('run_osu_updater', { folder: osuPath }); launchInfo = 'osu! is now up to date!'; } else { launchInfo = 'You are up to date!'; @@ -168,24 +169,45 @@ const username = $userAuth.value('username').get(''); const password = $userAuth.value('password').get(''); if (username.length > 0 && password.length > 0) { - await setUserConfigValue($osuInstallationPath, 'Username', username); - await setUserConfigValue($osuInstallationPath, 'Password', password); - await setUserConfigValue($osuInstallationPath, 'SaveUsername', '1'); - await setUserConfigValue($osuInstallationPath, 'SavePassword', '1'); + //TODO: make this one function to prevent multiple file writes + await setUserConfigValue(osuPath, 'Username', username); + await setUserConfigValue(osuPath, 'Password', password); + await setUserConfigValue(osuPath, 'SaveUsername', '1'); + await setUserConfigValue(osuPath, 'SavePassword', '1'); } - await setUserConfigValue($osuInstallationPath, 'CredentialEndpoint', 'ez-pp.farm'); + await setUserConfigValue(osuPath, 'CredentialEndpoint', 'ez-pp.farm'); } await new Promise((res) => setTimeout(res, 1500)); launchInfo = 'Launching osu!...'; await new Promise((res) => setTimeout(res, 1000)); await getCurrentWindow().hide(); - await invoke('run_osu', { folder: $osuInstallationPath }); + await invoke('run_osu', { folder: osuPath }); await getCurrentWindow().show(); + + const osuReleaseStream: string = await invoke('get_osu_release_stream', { + folder: osuPath, + }); + osuStream.set(osuReleaseStream); + const osuVersion: string = await invoke('get_osu_version', { + folder: osuPath, + }); + osuBuild.set(osuVersion); + + const beatmapSetCount: number | null = await invoke('get_beatmapsets_count', { + folder: osuPath, + }); + if (beatmapSetCount) beatmapSets.set(beatmapSetCount); + + const skinCount: number | null = await invoke('get_skins_count', { + folder: osuPath, + }); + if (skinCount) skins.set(skinCount); + launching = false; } catch (err) { console.log(err); toast.error('Hmmm...', { - description: 'Failed to check for updates.', + description: 'Failed to launch.', }); launching = false; }