From e304acb9451ee67171aaa084fbcd0decc1980e01 Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 29 Dec 2025 12:44:37 +0800 Subject: [PATCH 1/4] fix(OneClient): Spamming modrinth requests Closes: https://github.com/Polyfrost/OneLauncher/issues/437 --- apps/oneclient/frontend/src/routes/__root.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/oneclient/frontend/src/routes/__root.tsx b/apps/oneclient/frontend/src/routes/__root.tsx index 6280da2d..f6b6503f 100644 --- a/apps/oneclient/frontend/src/routes/__root.tsx +++ b/apps/oneclient/frontend/src/routes/__root.tsx @@ -65,10 +65,10 @@ function ReplaceVariables(template: string, variables: Record) { function useDiscordRPC() { const location = useLocation(); const clusterId = location.search.clusterId ?? 0; - const provider = location.search.provider ?? 'Modrinth'; - const packageId = location.search.packageId ?? '8pJYUDNi'; + const provider = location.search.provider ?? null; + const packageId = location.search.packageId ?? null; const { data: cluster } = useCommand(['getClusterById', clusterId], () => bindings.core.getClusterById(clusterId)); - const { data: managedPackage } = useCommand(['getPackage', provider, packageId], () => bindings.core.getPackage(provider, packageId)); + const { data: managedPackage } = useCommand(['getPackage', provider, packageId], () => bindings.core.getPackage(provider!, packageId!), { enabled: provider != null && packageId != null }); useEffect(() => { bindings.core.setDiscordRPCMessage(ReplaceVariables(ResolvedPathNames[location.pathname as URLPath], { clusterName: cluster?.name ?? 'UNKNOWN', packageName: managedPackage?.name ?? 'UNKNOWN' })); }, [location.pathname, location.search.clusterId, cluster?.name, managedPackage?.name]); From eccf13f5fd04ccf61849e98f553052addc76110d Mon Sep 17 00:00:00 2001 From: Jacob Date: Mon, 29 Dec 2025 12:45:35 +0800 Subject: [PATCH 2/4] feat(OneClient-SkinManager): Scroll bar on skins and capes Closes: https://github.com/Polyfrost/OneLauncher/issues/438 --- .../frontend/src/routes/app/account/skins.tsx | 108 +++++++++--------- 1 file changed, 57 insertions(+), 51 deletions(-) diff --git a/apps/oneclient/frontend/src/routes/app/account/skins.tsx b/apps/oneclient/frontend/src/routes/app/account/skins.tsx index 42213ddf..4f193015 100644 --- a/apps/oneclient/frontend/src/routes/app/account/skins.tsx +++ b/apps/oneclient/frontend/src/routes/app/account/skins.tsx @@ -9,6 +9,7 @@ import { dataDir, downloadDir, join } from '@tauri-apps/api/path'; import { save } from '@tauri-apps/plugin-dialog'; import { exists, mkdir, readTextFile, writeFile, writeTextFile } from '@tauri-apps/plugin-fs'; import { Download01Icon, PlusIcon, Trash01Icon } from '@untitled-theme/icons-react'; +import { OverlayScrollbarsComponent } from 'overlayscrollbars-react'; import { useEffect, useState } from 'react'; import { CrouchAnimation, FlyingAnimation, HitAnimation, IdleAnimation, WalkingAnimation } from 'skinview3d'; @@ -238,7 +239,7 @@ function RouteComponent() {
-
+
void; skins: Array; setSkins: (updater: (prev: Array) => Array) => void; importFromURL: (url: string) => void; importFromUsername: (username: string) => void; capeURL: string; shouldShowElytra: boolean }) { return ( -
+

Skin History

-
- - - - - - - {skins.map(skinData => ( - - ))} -
+ +
+ + + + + + + {skins.map(skinData => ( + + ))} +
+
+
); } @@ -355,16 +359,16 @@ function RenderSkin({ skin, selected, animation, setSelectedSkin, setSkins, cape {selected.skin_url === skin.skin_url ? <> : ( - - - - - setSkins(prev => prev.filter(skinData => skinData.skin_url !== skin.skin_url))} /> - - - )} + + + + + setSkins(prev => prev.filter(skinData => skinData.skin_url !== skin.skin_url))} /> + + + )}