Skip to content

Commit b06ab0e

Browse files
committed
fix(OneClient-SkinManager): Select the player's selected cape
Closes: #454
1 parent c998953 commit b06ab0e

File tree

3 files changed

+37
-25
lines changed

3 files changed

+37
-25
lines changed

apps/oneclient/frontend/src/bindings.gen.ts

Lines changed: 22 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,27 @@ export type VersionType =
303303
*/
304304
"old_beta"
305305

306-
const ARGS_MAP = { 'core':'{"getLogByName":["id","name"],"getClusterById":["id"],"getLogs":["id"],"setDiscordRPCMessage":["message"],"getClusters":[],"getWorlds":["id"],"createSettingsProfile":["name"],"getUsers":[],"isClusterRunning":["cluster_id"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getScreenshots":["id"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"getLinkedPackages":["cluster_id"],"openMsaLogin":[],"getDefaultUser":["fallback"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"writeSettings":["setting"],"getUser":["uuid"],"readSettings":[],"fetchLoggedInProfile":["access_token"],"getLoadersForVersion":["mc_version"],"open":["input"],"killProcess":["pid"],"installModpack":["modpack","cluster_id"],"setClusterStage":["id","stage"],"getRunningProcesses":[],"getProfileOrDefault":["name"],"updateClusterProfile":["name","profile"],"removeCluster":["id"],"getGameVersions":[],"getPackageBody":["provider","body"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"removeUser":["uuid"],"setDefaultUser":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterById":["id","request"],"createCluster":["options"],"getGlobalProfile":[],"searchPackages":["provider","query"],"removePackage":["cluster_id","package_hash"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'debug':'{"getArch":[],"getBuildTimestamp":[],"getPlatform":[],"getType":[],"getLocale":[],"getOsVersion":[],"openDevTools":[],"getGitCommitHash":[],"isInDev":[],"getPackageVersion":[],"getFamily":[]}', 'oneclient':'{"installUpdate":[],"getClustersGroupedByMajor":[],"checkForUpdate":[],"getBundlesFor":["cluster_id"],"getVersions":[]}', 'events':'{"process":["event"],"ingress":["event"],"message":["event"]}' }
307-
export type Router = { 'core': { getClusters: () => Promise<ClusterModel[]>,
306+
const ARGS_MAP = { 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'core':'{"getLogByName":["id","name"],"getClusterById":["id"],"getLogs":["id"],"setDiscordRPCMessage":["message"],"getClusters":[],"getWorlds":["id"],"createSettingsProfile":["name"],"getUsers":[],"isClusterRunning":["cluster_id"],"fetchMinecraftProfile":["uuid"],"getPackage":["provider","slug"],"getScreenshots":["id"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"getLinkedPackages":["cluster_id"],"openMsaLogin":[],"getDefaultUser":["fallback"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"writeSettings":["setting"],"getUser":["uuid"],"readSettings":[],"fetchLoggedInProfile":["access_token"],"getLoadersForVersion":["mc_version"],"open":["input"],"killProcess":["pid"],"installModpack":["modpack","cluster_id"],"setClusterStage":["id","stage"],"getRunningProcesses":[],"getProfileOrDefault":["name"],"updateClusterProfile":["name","profile"],"removeCluster":["id"],"getGameVersions":[],"getPackageBody":["provider","body"],"getMultiplePackages":["provider","slugs"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"changeSkin":["access_token","skin_url","skin_variant"],"changeCape":["access_token","cape_uuid"],"removeUser":["uuid"],"setDefaultUser":["uuid"],"launchCluster":["id","uuid","search_for_java"],"updateClusterById":["id","request"],"createCluster":["options"],"getGlobalProfile":[],"searchPackages":["provider","query"],"removePackage":["cluster_id","package_hash"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"]}', 'debug':'{"getArch":[],"getBuildTimestamp":[],"getPlatform":[],"getType":[],"getLocale":[],"getOsVersion":[],"openDevTools":[],"getGitCommitHash":[],"isInDev":[],"getPackageVersion":[],"getFamily":[]}', 'oneclient':'{"installUpdate":[],"getClustersGroupedByMajor":[],"checkForUpdate":[],"getBundlesFor":["cluster_id"],"getVersions":[]}', 'events':'{"process":["event"],"ingress":["event"],"message":["event"]}' }
307+
export type Router = { 'events': { ingress: (event: IngressPayload) => Promise<void>,
308+
message: (event: MessagePayload) => Promise<void>,
309+
process: (event: ProcessPayload) => Promise<void> },
310+
'debug': { openDevTools: () => Promise<void>,
311+
isInDev: () => Promise<boolean>,
312+
getArch: () => Promise<string>,
313+
getFamily: () => Promise<string>,
314+
getLocale: () => Promise<string | null>,
315+
getType: () => Promise<string>,
316+
getPlatform: () => Promise<string>,
317+
getOsVersion: () => Promise<string>,
318+
getGitCommitHash: () => Promise<string>,
319+
getBuildTimestamp: () => Promise<string>,
320+
getPackageVersion: () => Promise<string> },
321+
'oneclient': { getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
322+
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]>,
323+
getVersions: () => Promise<OnlineClusterManifest>,
324+
checkForUpdate: () => Promise<Update | null>,
325+
installUpdate: () => Promise<null> },
326+
'core': { getClusters: () => Promise<ClusterModel[]>,
308327
getClusterById: (id: number) => Promise<ClusterModel | null>,
309328
removeCluster: (id: number) => Promise<null>,
310329
createCluster: (options: CreateCluster) => Promise<ClusterModel>,
@@ -354,26 +373,7 @@ convertUsernameUUID: (usernameUuid: string) => Promise<MowojangProfile>,
354373
setDiscordRPCMessage: (message: string) => Promise<null>,
355374
open: (input: string) => Promise<null> },
356375
'folders': { fromCluster: (folderName: string) => Promise<string>,
357-
openCluster: (folderName: string) => Promise<null> },
358-
'debug': { openDevTools: () => Promise<void>,
359-
isInDev: () => Promise<boolean>,
360-
getArch: () => Promise<string>,
361-
getFamily: () => Promise<string>,
362-
getLocale: () => Promise<string | null>,
363-
getType: () => Promise<string>,
364-
getPlatform: () => Promise<string>,
365-
getOsVersion: () => Promise<string>,
366-
getGitCommitHash: () => Promise<string>,
367-
getBuildTimestamp: () => Promise<string>,
368-
getPackageVersion: () => Promise<string> },
369-
'events': { ingress: (event: IngressPayload) => Promise<void>,
370-
message: (event: MessagePayload) => Promise<void>,
371-
process: (event: ProcessPayload) => Promise<void> },
372-
'oneclient': { getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
373-
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]>,
374-
getVersions: () => Promise<OnlineClusterManifest>,
375-
checkForUpdate: () => Promise<Update | null>,
376-
installUpdate: () => Promise<null> } };
376+
openCluster: (folderName: string) => Promise<null> } };
377377

378378

379379
export type { InferCommandOutput }

apps/oneclient/frontend/src/routes/app/account/route.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,18 +21,28 @@ export const Route = createFileRoute('/app/account')({
2121
// TODO instead replace this with a refresh access_token function. Waiting on binding from @LynithDev
2222
const { profile, search: validSearch } = search;
2323
if (!profile)
24-
return { profileData: null, profile: null, validSearch };
24+
return { profileData: null, profile: null, validSearch, playerData: null };
2525

2626
const query = context.queryClient.ensureQueryData({
2727
queryKey: ['fetchLoggedInProfile', profile.access_token],
2828
queryFn: () => bindings.core.fetchLoggedInProfile(profile.access_token),
2929
});
3030

31+
3132
const profileData = await query;
33+
34+
const playerDataQuery = context.queryClient.ensureQueryData({
35+
queryKey: ['fetchMinecraftProfile', profileData.id],
36+
queryFn: () => bindings.core.fetchMinecraftProfile(profileData.id),
37+
});
38+
39+
const playerData = await playerDataQuery
40+
3241
return {
3342
profileData,
3443
profile,
3544
validSearch,
45+
playerData
3646
};
3747
},
3848
});

apps/oneclient/frontend/src/routes/app/account/skins.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ import { CrouchAnimation, FlyingAnimation, HitAnimation, IdleAnimation, WalkingA
1616
interface Skin {
1717
is_slim: boolean;
1818
skin_url: string;
19+
cape_url?: string;
1920
}
2021

2122
interface Cape {
@@ -109,7 +110,7 @@ export function MissingAccountData({ validSearch }: { validSearch: boolean }) {
109110
}
110111

111112
function RouteComponent() {
112-
const { profileData, profile, queryClient, validSearch } = Route.useRouteContext();
113+
const { profileData, profile, queryClient, validSearch, playerData } = Route.useRouteContext();
113114

114115
const [capes, setCapes] = useState<Array<Cape>>([]);
115116
const [selectedCape, setSelectedCape] = useState<string>('');
@@ -123,14 +124,15 @@ function RouteComponent() {
123124

124125
const [skins, setSkins, loaded] = useSkinHistory();
125126
const [selectedSkin, setSelectedSkin] = useState<Skin>({ skin_url: getSkinUrl(null), is_slim: false });
126-
const skinData: Skin = { is_slim: profileData?.skins[0].variant === 'slim', skin_url: getSkinUrl(profileData?.skins[0].url) };
127+
const skinData: Skin = { is_slim: profileData?.skins[0].variant === 'slim', skin_url: getSkinUrl(profileData?.skins[0].url), cape_url: playerData?.cape_url ?? '' };
127128

128129
useEffect(() => {
129130
if (!loaded)
130131
return;
131132

132133
setSkins(prev => [...prev, skinData]);
133134
setSelectedSkin(skinData);
135+
setSelectedCape(skinData.cape_url ?? '')
134136
}, [loaded]);
135137

136138
const importFromURL = (url: string) => {

0 commit comments

Comments
 (0)