You've already forked AstralRinth
Remove "prepare backup" step (#4551)
* Remove "prepare backup" step * fix post-approval.ts
This commit is contained in:
@@ -17,13 +17,13 @@ import { ButtonStyled, commonMessages, OverflowMenu, ProgressBar } from '@modrin
|
|||||||
import type { Backup } from '@modrinth/utils'
|
import type { Backup } from '@modrinth/utils'
|
||||||
import { defineMessages, useVIntl } from '@vintl/vintl'
|
import { defineMessages, useVIntl } from '@vintl/vintl'
|
||||||
import dayjs from 'dayjs'
|
import dayjs from 'dayjs'
|
||||||
import { computed, ref } from 'vue'
|
import { computed } from 'vue'
|
||||||
|
|
||||||
const flags = useFeatureFlags()
|
const flags = useFeatureFlags()
|
||||||
const { formatMessage } = useVIntl()
|
const { formatMessage } = useVIntl()
|
||||||
|
|
||||||
const emit = defineEmits<{
|
const emit = defineEmits<{
|
||||||
(e: 'prepare' | 'download' | 'rename' | 'restore' | 'lock' | 'retry'): void
|
(e: 'download' | 'rename' | 'restore' | 'lock' | 'retry'): void
|
||||||
(e: 'delete', skipConfirmation?: boolean): void
|
(e: 'delete', skipConfirmation?: boolean): void
|
||||||
}>()
|
}>()
|
||||||
|
|
||||||
@@ -49,14 +49,8 @@ const backupQueued = computed(
|
|||||||
const automated = computed(() => props.backup.automated)
|
const automated = computed(() => props.backup.automated)
|
||||||
const failedToCreate = computed(() => props.backup.interrupted)
|
const failedToCreate = computed(() => props.backup.interrupted)
|
||||||
|
|
||||||
const preparedDownloadStates = ['ready', 'done']
|
|
||||||
const inactiveStates = ['failed', 'cancelled']
|
const inactiveStates = ['failed', 'cancelled']
|
||||||
|
|
||||||
const hasPreparedDownload = computed(() => {
|
|
||||||
const fileState = props.backup.task?.file?.state ?? ''
|
|
||||||
return preparedDownloadStates.includes(fileState)
|
|
||||||
})
|
|
||||||
|
|
||||||
const creating = computed(() => {
|
const creating = computed(() => {
|
||||||
const task = props.backup.task?.create
|
const task = props.backup.task?.create
|
||||||
if (task && task.progress < 1 && !inactiveStates.includes(task.state)) {
|
if (task && task.progress < 1 && !inactiveStates.includes(task.state)) {
|
||||||
@@ -79,22 +73,7 @@ const restoring = computed(() => {
|
|||||||
return undefined
|
return undefined
|
||||||
})
|
})
|
||||||
|
|
||||||
const initiatedPrepare = ref(false)
|
|
||||||
|
|
||||||
const preparingFile = computed(() => {
|
|
||||||
if (hasPreparedDownload.value) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
const task = props.backup.task?.file
|
|
||||||
return (
|
|
||||||
(!task && initiatedPrepare.value) ||
|
|
||||||
(task && task.progress < 1 && !inactiveStates.includes(task.state))
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
const failedToRestore = computed(() => props.backup.task?.restore?.state === 'failed')
|
const failedToRestore = computed(() => props.backup.task?.restore?.state === 'failed')
|
||||||
const failedToPrepareFile = computed(() => props.backup.task?.file?.state === 'failed')
|
|
||||||
|
|
||||||
const messages = defineMessages({
|
const messages = defineMessages({
|
||||||
locked: {
|
locked: {
|
||||||
@@ -121,22 +100,6 @@ const messages = defineMessages({
|
|||||||
id: 'servers.backups.item.queued-for-backup',
|
id: 'servers.backups.item.queued-for-backup',
|
||||||
defaultMessage: 'Queued for backup',
|
defaultMessage: 'Queued for backup',
|
||||||
},
|
},
|
||||||
preparingDownload: {
|
|
||||||
id: 'servers.backups.item.preparing-download',
|
|
||||||
defaultMessage: 'Preparing download...',
|
|
||||||
},
|
|
||||||
prepareDownload: {
|
|
||||||
id: 'servers.backups.item.prepare-download',
|
|
||||||
defaultMessage: 'Prepare download',
|
|
||||||
},
|
|
||||||
prepareDownloadAgain: {
|
|
||||||
id: 'servers.backups.item.prepare-download-again',
|
|
||||||
defaultMessage: 'Try preparing again',
|
|
||||||
},
|
|
||||||
alreadyPreparing: {
|
|
||||||
id: 'servers.backups.item.already-preparing',
|
|
||||||
defaultMessage: 'Already preparing backup for download',
|
|
||||||
},
|
|
||||||
creatingBackup: {
|
creatingBackup: {
|
||||||
id: 'servers.backups.item.creating-backup',
|
id: 'servers.backups.item.creating-backup',
|
||||||
defaultMessage: 'Creating backup...',
|
defaultMessage: 'Creating backup...',
|
||||||
@@ -153,10 +116,6 @@ const messages = defineMessages({
|
|||||||
id: 'servers.backups.item.failed-to-restore-backup',
|
id: 'servers.backups.item.failed-to-restore-backup',
|
||||||
defaultMessage: 'Failed to restore from backup',
|
defaultMessage: 'Failed to restore from backup',
|
||||||
},
|
},
|
||||||
failedToPrepareFile: {
|
|
||||||
id: 'servers.backups.item.failed-to-prepare-backup',
|
|
||||||
defaultMessage: 'Failed to prepare download',
|
|
||||||
},
|
|
||||||
automated: {
|
automated: {
|
||||||
id: 'servers.backups.item.automated',
|
id: 'servers.backups.item.automated',
|
||||||
defaultMessage: 'Automated',
|
defaultMessage: 'Automated',
|
||||||
@@ -200,17 +159,13 @@ const messages = defineMessages({
|
|||||||
</span>
|
</span>
|
||||||
<span v-if="(failedToCreate || failedToRestore) && (automated || backup.locked)">•</span>
|
<span v-if="(failedToCreate || failedToRestore) && (automated || backup.locked)">•</span>
|
||||||
<span
|
<span
|
||||||
v-if="failedToCreate || failedToRestore || failedToPrepareFile"
|
v-if="failedToCreate || failedToRestore"
|
||||||
class="flex items-center gap-1 text-sm text-red"
|
class="flex items-center gap-1 text-sm text-red"
|
||||||
>
|
>
|
||||||
<XIcon />
|
<XIcon />
|
||||||
{{
|
{{
|
||||||
formatMessage(
|
formatMessage(
|
||||||
failedToCreate
|
failedToCreate ? messages.failedToCreateBackup : messages.failedToRestoreBackup,
|
||||||
? messages.failedToCreateBackup
|
|
||||||
: failedToRestore
|
|
||||||
? messages.failedToRestoreBackup
|
|
||||||
: messages.failedToPrepareFile,
|
|
||||||
)
|
)
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
@@ -270,7 +225,6 @@ const messages = defineMessages({
|
|||||||
<template v-else>
|
<template v-else>
|
||||||
<ButtonStyled>
|
<ButtonStyled>
|
||||||
<a
|
<a
|
||||||
v-if="hasPreparedDownload"
|
|
||||||
:class="{
|
:class="{
|
||||||
disabled: !kyrosUrl || !jwt,
|
disabled: !kyrosUrl || !jwt,
|
||||||
}"
|
}"
|
||||||
@@ -280,28 +234,6 @@ const messages = defineMessages({
|
|||||||
<DownloadIcon />
|
<DownloadIcon />
|
||||||
{{ formatMessage(commonMessages.downloadButton) }}
|
{{ formatMessage(commonMessages.downloadButton) }}
|
||||||
</a>
|
</a>
|
||||||
<button
|
|
||||||
v-else
|
|
||||||
:disabled="!!preparingFile"
|
|
||||||
@click="
|
|
||||||
() => {
|
|
||||||
initiatedPrepare = true
|
|
||||||
emit('prepare')
|
|
||||||
}
|
|
||||||
"
|
|
||||||
>
|
|
||||||
<SpinnerIcon v-if="preparingFile" class="animate-spin" />
|
|
||||||
<DownloadIcon v-else />
|
|
||||||
{{
|
|
||||||
formatMessage(
|
|
||||||
preparingFile
|
|
||||||
? messages.preparingDownload
|
|
||||||
: failedToPrepareFile
|
|
||||||
? messages.prepareDownloadAgain
|
|
||||||
: messages.prepareDownload,
|
|
||||||
)
|
|
||||||
}}
|
|
||||||
</button>
|
|
||||||
</ButtonStyled>
|
</ButtonStyled>
|
||||||
<ButtonStyled circular type="transparent">
|
<ButtonStyled circular type="transparent">
|
||||||
<OverflowMenu
|
<OverflowMenu
|
||||||
@@ -310,7 +242,7 @@ const messages = defineMessages({
|
|||||||
{
|
{
|
||||||
id: 'restore',
|
id: 'restore',
|
||||||
action: () => emit('restore'),
|
action: () => emit('restore'),
|
||||||
disabled: !!restoring || !!preparingFile,
|
disabled: !!restoring,
|
||||||
},
|
},
|
||||||
{ id: 'lock', action: () => emit('lock') },
|
{ id: 'lock', action: () => emit('lock') },
|
||||||
{ divider: true },
|
{ divider: true },
|
||||||
@@ -318,7 +250,7 @@ const messages = defineMessages({
|
|||||||
id: 'delete',
|
id: 'delete',
|
||||||
color: 'red',
|
color: 'red',
|
||||||
action: () => emit('delete'),
|
action: () => emit('delete'),
|
||||||
disabled: !!restoring || !!preparingFile,
|
disabled: !!restoring,
|
||||||
},
|
},
|
||||||
]"
|
]"
|
||||||
>
|
>
|
||||||
|
|||||||
@@ -41,12 +41,6 @@ export class BackupsModule extends ServerModule {
|
|||||||
await this.fetch() // Refresh this module
|
await this.fetch() // Refresh this module
|
||||||
}
|
}
|
||||||
|
|
||||||
async prepare(backupId: string): Promise<void> {
|
|
||||||
await useServersFetch(`servers/${this.serverId}/backups/${backupId}/prepare-download`, {
|
|
||||||
method: 'POST',
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
async lock(backupId: string): Promise<void> {
|
async lock(backupId: string): Promise<void> {
|
||||||
await useServersFetch(`servers/${this.serverId}/backups/${backupId}/lock`, {
|
await useServersFetch(`servers/${this.serverId}/backups/${backupId}/lock`, {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
|
|||||||
@@ -1877,9 +1877,6 @@
|
|||||||
"servers.backup.restore.in-progress.tooltip": {
|
"servers.backup.restore.in-progress.tooltip": {
|
||||||
"message": "Backup restore in progress"
|
"message": "Backup restore in progress"
|
||||||
},
|
},
|
||||||
"servers.backups.item.already-preparing": {
|
|
||||||
"message": "Already preparing backup for download"
|
|
||||||
},
|
|
||||||
"servers.backups.item.automated": {
|
"servers.backups.item.automated": {
|
||||||
"message": "Automated"
|
"message": "Automated"
|
||||||
},
|
},
|
||||||
@@ -1889,9 +1886,6 @@
|
|||||||
"servers.backups.item.failed-to-create-backup": {
|
"servers.backups.item.failed-to-create-backup": {
|
||||||
"message": "Failed to create backup"
|
"message": "Failed to create backup"
|
||||||
},
|
},
|
||||||
"servers.backups.item.failed-to-prepare-backup": {
|
|
||||||
"message": "Failed to prepare download"
|
|
||||||
},
|
|
||||||
"servers.backups.item.failed-to-restore-backup": {
|
"servers.backups.item.failed-to-restore-backup": {
|
||||||
"message": "Failed to restore from backup"
|
"message": "Failed to restore from backup"
|
||||||
},
|
},
|
||||||
@@ -1901,15 +1895,6 @@
|
|||||||
"servers.backups.item.locked": {
|
"servers.backups.item.locked": {
|
||||||
"message": "Locked"
|
"message": "Locked"
|
||||||
},
|
},
|
||||||
"servers.backups.item.prepare-download": {
|
|
||||||
"message": "Prepare download"
|
|
||||||
},
|
|
||||||
"servers.backups.item.prepare-download-again": {
|
|
||||||
"message": "Try preparing again"
|
|
||||||
},
|
|
||||||
"servers.backups.item.preparing-download": {
|
|
||||||
"message": "Preparing download..."
|
|
||||||
},
|
|
||||||
"servers.backups.item.queued-for-backup": {
|
"servers.backups.item.queued-for-backup": {
|
||||||
"message": "Queued for backup"
|
"message": "Queued for backup"
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -107,7 +107,6 @@
|
|||||||
:backup="backup"
|
:backup="backup"
|
||||||
:kyros-url="props.server.general?.node.instance"
|
:kyros-url="props.server.general?.node.instance"
|
||||||
:jwt="props.server.general?.node.token"
|
:jwt="props.server.general?.node.token"
|
||||||
@prepare="() => prepareDownload(backup.id)"
|
|
||||||
@download="() => triggerDownloadAnimation()"
|
@download="() => triggerDownloadAnimation()"
|
||||||
@rename="() => renameBackupModal?.show(backup)"
|
@rename="() => renameBackupModal?.show(backup)"
|
||||||
@restore="() => restoreBackupModal?.show(backup)"
|
@restore="() => restoreBackupModal?.show(backup)"
|
||||||
@@ -233,19 +232,6 @@ function triggerDownloadAnimation() {
|
|||||||
setTimeout(() => (overTheTopDownloadAnimation.value = false), 500)
|
setTimeout(() => (overTheTopDownloadAnimation.value = false), 500)
|
||||||
}
|
}
|
||||||
|
|
||||||
const prepareDownload = async (backupId: string) => {
|
|
||||||
try {
|
|
||||||
await props.server.backups?.prepare(backupId)
|
|
||||||
} catch (error) {
|
|
||||||
console.error('Failed to prepare download:', error)
|
|
||||||
addNotification({
|
|
||||||
type: 'error',
|
|
||||||
title: 'Failed to prepare backup for download',
|
|
||||||
text: error as string,
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const lockBackup = async (backupId: string) => {
|
const lockBackup = async (backupId: string) => {
|
||||||
try {
|
try {
|
||||||
await props.server.backups?.lock(backupId)
|
await props.server.backups?.lock(backupId)
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ const postApproval: Stage = {
|
|||||||
weight: 1,
|
weight: 1,
|
||||||
severity: 'low',
|
severity: 'low',
|
||||||
message: async () =>
|
message: async () =>
|
||||||
(await import('../messages/misc-metadata/dependancies.md?raw')).default,
|
(await import('../messages/misc-metadata/dependencies.md?raw')).default,
|
||||||
relevantExtraInput: [
|
relevantExtraInput: [
|
||||||
{
|
{
|
||||||
label: 'Dependency Name',
|
label: 'Dependency Name',
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ export interface WSNewModEvent {
|
|||||||
event: 'new-mod'
|
event: 'new-mod'
|
||||||
}
|
}
|
||||||
|
|
||||||
export type WSBackupTask = 'file' | 'create' | 'restore'
|
export type WSBackupTask = 'create' | 'restore'
|
||||||
export type WSBackupState = 'ongoing' | 'done' | 'failed' | 'cancelled' | 'unchanged'
|
export type WSBackupState = 'ongoing' | 'done' | 'failed' | 'cancelled' | 'unchanged'
|
||||||
|
|
||||||
export interface WSBackupProgressEvent {
|
export interface WSBackupProgressEvent {
|
||||||
|
|||||||
Reference in New Issue
Block a user