Skip to content

Commit b7a5235

Browse files
committed
fix(oneclient-mod-downloading): Not checking for no dependencies
Also allows for using slow lame mod downloading
1 parent d7c345b commit b7a5235

File tree

4 files changed

+53
-24
lines changed

4 files changed

+53
-24
lines changed

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -234,7 +234,7 @@ gallery: string[] }
234234

235235
export type SettingProfileModel = { name: string; java_id: number | null; res: Resolution | null; force_fullscreen: boolean | null; mem_max: number | null; launch_args: string | null; launch_env: string | null; hook_pre: string | null; hook_wrapper: string | null; hook_post: string | null; os_extra: SettingsOsExtra | null }
236236

237-
export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; seen_onboarding: boolean; mod_list_use_grid: boolean; max_concurrent_requests: number; settings_version: number; native_window_frame: boolean; show_tanstack_dev_tools: boolean }
237+
export type Settings = { global_game_settings: SettingProfileModel; allow_parallel_running_clusters: boolean; enable_gamemode: boolean; discord_enabled: boolean; seen_onboarding: boolean; mod_list_use_grid: boolean; slow_mod_bulk_downloading: boolean; max_concurrent_requests: number; settings_version: number; native_window_frame: boolean; show_tanstack_dev_tools: boolean }
238238

239239
export type SettingsOsExtra = Record<string, never>
240240

@@ -301,17 +301,8 @@ export type VersionType =
301301
*/
302302
"old_beta"
303303

304-
const ARGS_MAP = { 'oneclient':'{"openDevTools":[],"getVersions":[],"getBundlesFor":["cluster_id"],"getClustersGroupedByMajor":[]}', 'core':'{"open":["input"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"changeSkin":["access_token","skin_url","skin_variant"],"writeSettings":["setting"],"launchCluster":["id","uuid"],"installModpack":["modpack","cluster_id"],"getUsersFromAuthor":["provider","author"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"removeCape":["access_token"],"getUser":["uuid"],"getLogs":["id"],"readSettings":[],"removeCluster":["id"],"getClusterById":["id"],"getLogByName":["id","name"],"openMsaLogin":[],"isClusterRunning":["cluster_id"],"getUsers":[],"createSettingsProfile":["name"],"getRunningProcessesByClusterId":["cluster_id"],"createCluster":["options"],"getMultiplePackages":["provider","slugs"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"getDefaultUser":["fallback"],"convertUsernameUUID":["username_uuid"],"getScreenshots":["id"],"getClusters":[],"updateClusterProfile":["name","profile"],"getLoadersForVersion":["mc_version"],"fetchLoggedInProfile":["access_token"],"fetchMinecraftProfile":["uuid"],"getProfileOrDefault":["name"],"updateClusterById":["id","request"],"getGameVersions":[],"setDefaultUser":["uuid"],"getGlobalProfile":[],"getWorlds":["id"],"getRunningProcesses":[],"removeUser":["uuid"],"killProcess":["pid"],"searchPackages":["provider","query"],"getPackage":["provider","slug"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"getPackageBody":["provider","body"],"changeCape":["access_token","cape_uuid"]}', 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'events':'{"message":["event"],"ingress":["event"],"process":["event"]}' }
305-
export type Router = { 'events': { ingress: (event: IngressPayload) => Promise<void>,
306-
message: (event: MessagePayload) => Promise<void>,
307-
process: (event: ProcessPayload) => Promise<void> },
308-
'folders': { fromCluster: (folderName: string) => Promise<string>,
309-
openCluster: (folderName: string) => Promise<null> },
310-
'oneclient': { openDevTools: () => Promise<void>,
311-
getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
312-
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]>,
313-
getVersions: () => Promise<OnlineClusterManifest> },
314-
'core': { getClusters: () => Promise<ClusterModel[]>,
304+
const ARGS_MAP = { 'folders':'{"fromCluster":["folder_name"],"openCluster":["folder_name"]}', 'events':'{"process":["event"],"message":["event"],"ingress":["event"]}', 'core':'{"getWorlds":["id"],"getDefaultUser":["fallback"],"updateClusterProfile":["name","profile"],"searchPackages":["provider","query"],"fetchMinecraftProfile":["uuid"],"fetchLoggedInProfile":["access_token"],"removeCluster":["id"],"getPackageBody":["provider","body"],"updateClusterById":["id","request"],"getLoadersForVersion":["mc_version"],"getUsers":[],"killProcess":["pid"],"setDefaultUser":["uuid"],"downloadExternalPackage":["package","cluster_id","force","skip_compatibility"],"getPackageVersions":["provider","slug","mc_version","loader","offset","limit"],"getRunningProcessesByClusterId":["cluster_id"],"getUsersFromAuthor":["provider","author"],"changeSkin":["access_token","skin_url","skin_variant"],"removeCape":["access_token"],"convertUsernameUUID":["username_uuid"],"open":["input"],"getLogs":["id"],"getClusterById":["id"],"removeUser":["uuid"],"getClusters":[],"createSettingsProfile":["name"],"getUser":["uuid"],"downloadPackage":["provider","package_id","version_id","cluster_id","skip_compatibility"],"readSettings":[],"openMsaLogin":[],"launchCluster":["id","uuid"],"getLogByName":["id","name"],"uploadSkinBytes":["access_token","skin_data","image_format","skin_variant"],"createCluster":["options"],"installModpack":["modpack","cluster_id"],"getGlobalProfile":[],"getScreenshots":["id"],"getPackage":["provider","slug"],"isClusterRunning":["cluster_id"],"getMultiplePackages":["provider","slugs"],"changeCape":["access_token","cape_uuid"],"getProfileOrDefault":["name"],"getGameVersions":[],"writeSettings":["setting"],"getRunningProcesses":[]}', 'oneclient':'{"getVersions":[],"openDevTools":[],"getBundlesFor":["cluster_id"],"getClustersGroupedByMajor":[]}' }
305+
export type Router = { 'core': { getClusters: () => Promise<ClusterModel[]>,
315306
getClusterById: (id: number) => Promise<ClusterModel | null>,
316307
removeCluster: (id: number) => Promise<null>,
317308
createCluster: (options: CreateCluster) => Promise<ClusterModel>,
@@ -355,7 +346,16 @@ changeSkin: (accessToken: string, skinUrl: string, skinVariant: SkinVariant) =>
355346
changeCape: (accessToken: string, capeUuid: string) => Promise<MojangFullPlayerProfile>,
356347
removeCape: (accessToken: string) => Promise<MojangFullPlayerProfile>,
357348
convertUsernameUUID: (usernameUuid: string) => Promise<MowojangProfile>,
358-
open: (input: string) => Promise<null> } };
349+
open: (input: string) => Promise<null> },
350+
'oneclient': { openDevTools: () => Promise<void>,
351+
getClustersGroupedByMajor: () => Promise<Partial<{ [key in number]: ClusterModel[] }>>,
352+
getBundlesFor: (clusterId: number) => Promise<ModpackArchive[]>,
353+
getVersions: () => Promise<OnlineClusterManifest> },
354+
'events': { ingress: (event: IngressPayload) => Promise<void>,
355+
message: (event: MessagePayload) => Promise<void>,
356+
process: (event: ProcessPayload) => Promise<void> },
357+
'folders': { fromCluster: (folderName: string) => Promise<string>,
358+
openCluster: (folderName: string) => Promise<null> } };
359359

360360

361361
export type { InferCommandOutput }

apps/oneclient/frontend/src/components/DownloadMods.tsx

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { useEffect, useImperativeHandle, useState } from 'react';
77
import { DialogTrigger } from 'react-aria-components';
88
import { getModMetaDataName } from './Bundle';
99
import { Overlay } from './overlay';
10+
import { useSettings } from '@/hooks/useSettings';
1011

1112
export interface DownloadModsRef {
1213
openDownloadDialog: (nextPath?: string) => void;
@@ -119,24 +120,40 @@ function DownloadingMods({ mods, setOpen, nextPath }: { mods: ModDataArray; setO
119120
continue;
120121
const slug = dependency.project_id ?? '';
121122
const versions = await bindings.core.getPackageVersions(mod.provider, slug, cluster.mc_version, cluster.mc_loader, 0, 1);
122-
await bindings.core.downloadPackage(mod.provider, slug, versions.items[0].version_id, cluster.id, null);
123+
if (versions.items.length !== 0)
124+
await bindings.core.downloadPackage(mod.provider, slug, versions.items[0].version_id, cluster.id, null);
123125
}
124126
await bindings.core.downloadPackage(mod.provider, mod.id, mod.versionId, mod.clusterId, true);
125127
}
126128
else { await bindings.core.downloadExternalPackage(mod.package, mod.clusterId, null, null); }
127129
});
128130

131+
const { setting } = useSettings();
132+
let useSlowDownloading = setting('slow_mod_bulk_downloading');
133+
134+
129135
useEffect(() => {
130136
const downloadAll = async () => {
131-
await downloadModsParallel(mods, 25, async (mod) => {
132-
setModName(mod.name);
133-
try {
134-
await download.mutateAsync(mod);
135-
}
136-
finally {
137-
setDownloadedMods(prev => prev + 1);
138-
}
139-
});
137+
if (useSlowDownloading)
138+
for (const mod of mods) {
139+
setModName(mod.name);
140+
try {
141+
await download.mutateAsync(mod);
142+
}
143+
finally {
144+
setDownloadedMods(prev => prev + 1);
145+
}
146+
} else
147+
await downloadModsParallel(mods, 25, async (mod) => {
148+
setModName(mod.name);
149+
try {
150+
await download.mutateAsync(mod);
151+
}
152+
finally {
153+
setDownloadedMods(prev => prev + 1);
154+
}
155+
});
156+
140157
};
141158

142159
downloadAll();

apps/oneclient/frontend/src/routes/app/settings/developer.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { useSettings } from '@/hooks/useSettings';
44
import { bindings } from '@/main';
55
import { Button } from '@onelauncher/common/components';
66
import { createFileRoute, Link } from '@tanstack/react-router';
7-
import { BatteryFullIcon, Code02Icon, Truck01Icon } from '@untitled-theme/icons-react';
7+
import { BatteryEmptyIcon, BatteryFullIcon, Code02Icon, Truck01Icon } from '@untitled-theme/icons-react';
88
import Sidebar from './route';
99

1010
export const Route = createFileRoute('/app/settings/developer')({
@@ -60,6 +60,16 @@ function RouteComponent() {
6060
<SettingsSwitch setting={createSetting('mod_list_use_grid')} />
6161
</SettingsRow>
6262

63+
64+
<SettingsRow.Header>Mod Downloading</SettingsRow.Header>
65+
<SettingsRow
66+
description="Slow is sometimes better. This is more consistent but takes longer then someone having a god dam CHILD???"
67+
icon={<BatteryEmptyIcon />}
68+
title="Use Slow Mod Bulk Downloading"
69+
>
70+
<SettingsSwitch setting={createSetting('slow_mod_bulk_downloading')} />
71+
</SettingsRow>
72+
6373
</div>
6474
</Sidebar.Page>
6575
);

packages/core/src/store/settings.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ pub struct Settings {
1616
pub discord_enabled: bool,
1717
pub seen_onboarding: bool,
1818
pub mod_list_use_grid: bool,
19+
pub slow_mod_bulk_downloading: bool,
1920
pub max_concurrent_requests: usize,
2021
pub settings_version: u32,
2122
pub native_window_frame: bool,
@@ -32,6 +33,7 @@ impl Default for Settings {
3233
discord_enabled: false,
3334
seen_onboarding: false,
3435
mod_list_use_grid: true,
36+
slow_mod_bulk_downloading: false,
3537
enable_gamemode: false,
3638
max_concurrent_requests: 25,
3739
settings_version: 1,

0 commit comments

Comments
 (0)