From 14d227a1a3a3de939ebc94de530ed6fcda418acc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois-Xavier=20Talbot?= <108630700+fetchfern@users.noreply.github.com> Date: Wed, 7 Jan 2026 17:28:57 -0500 Subject: [PATCH] Revert "Use backup physical_id for progress updates matching" (#5060) * Revert "Use backup physical_id for progress updates matching" This reverts commit de2f6275b97376fb92497399eba848ae1ace7b01. * Fix page crash on backups page reload --- .../src/pages/hosting/manage/[id].vue | 2 +- .../src/pages/hosting/manage/[id]/backups.vue | 2 +- .../api-client/src/modules/archon/types.ts | 1 - .../servers/backups/BackupRestoreModal.vue | 2 +- .../ui/src/pages/hosting/manage/backups.vue | 32 ++++++++----------- packages/utils/servers/types/backup.ts | 1 - 6 files changed, 17 insertions(+), 23 deletions(-) diff --git a/apps/frontend/src/pages/hosting/manage/[id].vue b/apps/frontend/src/pages/hosting/manage/[id].vue index 580cc19aa..404401936 100644 --- a/apps/frontend/src/pages/hosting/manage/[id].vue +++ b/apps/frontend/src/pages/hosting/manage/[id].vue @@ -790,7 +790,7 @@ const handleBackupProgress = (data: Archon.Websocket.v0.WSBackupProgressEvent) = 'list', serverId, ]) - const backup = backupData?.find((b) => (b.physical_id ?? b.id) === backupId) + const backup = backupData?.find((b) => b.id === backupId) if (backup?.ongoing && attempt < 3) { // retry 3 times max, archon is slow compared to ws state diff --git a/apps/frontend/src/pages/hosting/manage/[id]/backups.vue b/apps/frontend/src/pages/hosting/manage/[id]/backups.vue index 502a20acc..72dd1758a 100644 --- a/apps/frontend/src/pages/hosting/manage/[id]/backups.vue +++ b/apps/frontend/src/pages/hosting/manage/[id]/backups.vue @@ -5,7 +5,7 @@ const { server, isServerRunning } = injectModrinthServerContext() const flags = useFeatureFlags() useHead({ - title: `Backups - ${server.value.name ?? 'Server'} - Modrinth`, + title: `Backups - ${server.value?.name ?? 'Server'} - Modrinth`, }) diff --git a/packages/api-client/src/modules/archon/types.ts b/packages/api-client/src/modules/archon/types.ts index 18b8d1cf1..24c02b6c2 100644 --- a/packages/api-client/src/modules/archon/types.ts +++ b/packages/api-client/src/modules/archon/types.ts @@ -174,7 +174,6 @@ export namespace Archon { export type Backup = { id: string - physical_id?: string name: string created_at: string automated: boolean diff --git a/packages/ui/src/components/servers/backups/BackupRestoreModal.vue b/packages/ui/src/components/servers/backups/BackupRestoreModal.vue index f75cd2213..b4f15562f 100644 --- a/packages/ui/src/components/servers/backups/BackupRestoreModal.vue +++ b/packages/ui/src/components/servers/backups/BackupRestoreModal.vue @@ -87,7 +87,7 @@ const restoreBackup = () => { restoreMutation.mutate(currentBackup.value.id, { onSuccess: () => { // Optimistically update backupsState to show restore in progress immediately - ctx.backupsState.set(currentBackup.value!.physical_id ?? currentBackup.value!.id, { + ctx.backupsState.set(currentBackup.value!.id, { restore: { progress: 0, state: 'ongoing' }, }) modal.value?.hide() diff --git a/packages/ui/src/pages/hosting/manage/backups.vue b/packages/ui/src/pages/hosting/manage/backups.vue index a075617f6..43e313d53 100644 --- a/packages/ui/src/pages/hosting/manage/backups.vue +++ b/packages/ui/src/pages/hosting/manage/backups.vue @@ -242,11 +242,10 @@ const { }) const deleteMutation = useMutation({ - mutationFn: ({ id }: { id: string; physicalId: string }) => - client.archon.backups_v0.delete(serverId, id), - onSuccess: (_data, { physicalId }) => { - markBackupCancelled(physicalId) - backupsState.delete(physicalId) + mutationFn: (backupId: string) => client.archon.backups_v0.delete(serverId, backupId), + onSuccess: (_data, backupId) => { + markBackupCancelled(backupId) + backupsState.delete(backupId) queryClient.invalidateQueries({ queryKey: backupsQueryKey }) }, }) @@ -260,7 +259,7 @@ const backups = computed(() => { if (!backupsData.value) return [] const merged = backupsData.value.map((backup) => { - const progressState = backupsState.get(backup.physical_id ?? backup.id) + const progressState = backupsState.get(backup.id) if (progressState) { const hasOngoingTask = Object.values(progressState).some((task) => task?.state === 'ongoing') const hasCompletedTask = Object.values(progressState).some((task) => task?.state === 'done') @@ -404,19 +403,16 @@ function deleteBackup(backup?: Archon.Backups.v1.Backup) { return } - deleteMutation.mutate( - { id: backup.id, physicalId: backup.physical_id ?? backup.id }, - { - onError: (err) => { - const message = err instanceof Error ? err.message : String(err) - addNotification({ - type: 'error', - title: 'Error deleting backup', - text: message, - }) - }, + deleteMutation.mutate(backup.id, { + onError: (err) => { + const message = err instanceof Error ? err.message : String(err) + addNotification({ + type: 'error', + title: 'Error deleting backup', + text: message, + }) }, - ) + }) } diff --git a/packages/utils/servers/types/backup.ts b/packages/utils/servers/types/backup.ts index 7827df155..2ed3bdb7d 100644 --- a/packages/utils/servers/types/backup.ts +++ b/packages/utils/servers/types/backup.ts @@ -2,7 +2,6 @@ import type { WSBackupState, WSBackupTask } from './websocket' export interface Backup { id: string - physical_id?: string name: string created_at: string automated: boolean