diff --git a/src-tauri/src/presence.rs b/src-tauri/src/presence.rs index 977c7dc..d1a8d00 100644 --- a/src-tauri/src/presence.rs +++ b/src-tauri/src/presence.rs @@ -170,7 +170,7 @@ pub static PRESENCE_DATA: Lazy> = Lazy::new(|| { state: "Idle in Launcher...".to_string(), details: " ".to_string(), large_image_key: "ezppfarm".to_string(), - large_image_text: "EZPPFarm v1.0.0".to_string(), + large_image_text: "EZPPFarm".to_string(), small_image_key: None, small_image_text: None, }) diff --git a/src/lib/api/ezpp.ts b/src/lib/api/ezpp.ts index 707712f..cccd9f5 100644 --- a/src/lib/api/ezpp.ts +++ b/src/lib/api/ezpp.ts @@ -59,12 +59,12 @@ export const ezppfarm = { } return request.data; }, - getUserInfo: async (userId: number) => { + getUserInfo: async (userId: number, scope: 'all' | 'info' | 'stats' = 'all') => { const request = await betterFetch(`${API_ENDPOINT}v1/get_player_info`, { timeout, query: { id: userId, - scope: 'all', + scope, }, headers: { 'Content-Type': 'application/json', diff --git a/src/lib/presence.ts b/src/lib/presence.ts index dbdd538..0a51cfa 100644 --- a/src/lib/presence.ts +++ b/src/lib/presence.ts @@ -3,15 +3,17 @@ import { invoke } from '@tauri-apps/api/core'; export const connect = async () => await invoke('presence_connect'); export const disconnect = async () => await invoke('presence_disconnect'); export const updateStatus = async (status: { - state?: string | null; - details?: string | null; + state: string; + details: string; largeImageKey?: string; }) => await invoke('presence_update_status', { - state: status.state, - details: status.details, - largeImageKey: status.largeImageKey, + status: { + state: status.state, + details: status.details, + largeImageKey: status.largeImageKey, + }, }); export const updateUser = async (user: { username: string; id?: string | null }) => - await invoke('presence_update_user', { username: user.username, id: user.id }); + await invoke('presence_update_user', { user: { username: user.username, id: user.id } }); export const isConnected = async () => await invoke('presence_is_connected'); diff --git a/src/pages/Launch.svelte b/src/pages/Launch.svelte index d983de8..75db8fa 100644 --- a/src/pages/Launch.svelte +++ b/src/pages/Launch.svelte @@ -332,6 +332,7 @@ return; } if ($currentUser) { + const userStats = await ezppfarm.getUserInfo($currentUser.id, 'stats'); const userStatus = await ezppfarm.getUserStatus($currentUser.id); if (userStatus?.player_status.online) { let largeImageKey = 'ezppfarm'; @@ -394,42 +395,53 @@ } details = `[${gamemodeName}] ${details}`; + try { + const currentModeStats = + userStats?.player.stats[userStatus.player_status.status.mode]; + let username = $currentUser.name; - await Promise.all([ - presence.updateUser({ - username: $currentUser.name, - id: $currentUser.id.toFixed(), - }), - presence.updateStatus({ - details, - state, - largeImageKey, - }), - ]); + if (currentModeStats && currentModeStats.rank > 0) + username + ` (#${currentModeStats.rank})`; + + await Promise.all([ + presence.updateUser({ + username, + id: $currentUser.id.toFixed(), + }), + presence.updateStatus({ + details, + state, + largeImageKey, + }), + ]); + } catch {} } } - }, 1000 * 5); + }, 1000 * 2); } await runOsu(osuPath, true); - if (presenceUpdater) { - window.clearInterval(presenceUpdater); - await Promise.all([ - presence.updateUser({ - username: ' ', - id: null, - }), - presence.updateStatus({ - details: null, - state: 'Idle in Launcher...', - largeImageKey: 'ezppfarm', - }), - ]); - } - launchInfo = 'Cleaning up...'; await getCurrentWindow().show(); + if (presenceUpdater) { + window.clearInterval(presenceUpdater); + console.log('clearing discord presence...'); + try { + await Promise.all([ + presence.updateUser({ + username: ' ', + id: null, + }), + presence.updateStatus({ + details: ' ', + state: 'Idle in Launcher...', + largeImageKey: 'ezppfarm', + }), + ]); + } catch {} + console.log('discord presence cleared...'); + } await new Promise((res) => setTimeout(res, 1000)); await replaceUIFiles(osuPath, true);