From 87ff8fd4d9ead772a26b8fa14d54eeef6592f8ae Mon Sep 17 00:00:00 2001 From: "Calum H." Date: Mon, 29 Jun 2026 15:39:03 +0100 Subject: [PATCH] fix: server panel not using correct endpoint for mrpack reupload (#6539) fix: server panel not using correct endpoint for local modpack reupload --- .../server-settings/pages/installation.vue | 43 ++++++++++++++----- packages/ui/src/providers/file-picker.ts | 2 +- 2 files changed, 33 insertions(+), 12 deletions(-) diff --git a/packages/ui/src/layouts/shared/server-settings/pages/installation.vue b/packages/ui/src/layouts/shared/server-settings/pages/installation.vue index 15035cd77a..6a3609984b 100644 --- a/packages/ui/src/layouts/shared/server-settings/pages/installation.vue +++ b/packages/ui/src/layouts/shared/server-settings/pages/installation.vue @@ -390,6 +390,22 @@ function toApiLoader(loader: string): Archon.Content.v1.Modloader { return loader as Archon.Content.v1.Modloader } +async function uploadLocalModpackWithSoftOverride() { + const picked = await filePicker.pickModpackFile() + if (!picked?.file) return false + + const handle = client.kyros.content_v1.uploadModpackFile( + worldId.value!, + picked.file, + { known: {} }, + { softOverride: true }, + ) + await uploadProgressModal.value!.track(handle) + emit('reinstall') + await invalidateServerState() + return true +} + provideInstallationSettings({ closeSettings: serverSettings.closeModal, onGameVersionHover: handleGameVersionHover, @@ -612,18 +628,8 @@ provideInstallationSettings({ if (!modpack.value) return if (modpack.value.spec.platform === 'local_file') { debug('reinstallModpack: local file, opening file picker') - const picked = await filePicker.pickModpackFile() - if (!picked?.file) return try { - const handle = client.kyros.content_v1.uploadModpackFile( - worldId.value!, - picked.file, - { known: {} }, - { softOverride: true }, - ) - await uploadProgressModal.value!.track(handle) - emit('reinstall') - invalidateServerState() + await uploadLocalModpackWithSoftOverride() } catch (err) { emit('reinstall-failed') addNotification({ @@ -664,6 +670,21 @@ provideInstallationSettings({ } }, + async swapModpack() { + if (setupActionDisabled.value) return + if (modpack.value?.spec.platform !== 'local_file') return + debug('swapModpack: local file, opening file picker') + try { + await uploadLocalModpackWithSoftOverride() + } catch (err) { + emit('reinstall-failed') + addNotification({ + type: 'error', + text: err instanceof Error ? err.message : formatMessage(messages.failedToChangeVersion), + }) + } + }, + async unlinkModpack() { if (setupActionDisabled.value) return debug('unlinkModpack: called') diff --git a/packages/ui/src/providers/file-picker.ts b/packages/ui/src/providers/file-picker.ts index 87b4bc2d79..3c9842e9fd 100644 --- a/packages/ui/src/providers/file-picker.ts +++ b/packages/ui/src/providers/file-picker.ts @@ -10,7 +10,7 @@ export interface PickedFile { } export interface PickedModpackFile extends Omit { - /** Only present for upload flows; native imports avoid copying huge packs into the webview heap. */ + /** Only present for upload flows; native imports avoid copying huge packs into the browser heap. */ file?: File }