diff --git a/dashboard/src/components/app/Backups.vue b/dashboard/src/components/app/Backups.vue index 002b82a61..0fdc6e140 100644 --- a/dashboard/src/components/app/Backups.vue +++ b/dashboard/src/components/app/Backups.vue @@ -56,6 +56,7 @@ const autoBackupsEnabled = ref(false); const backups = ref([]); const editDialog = useTemplateRef('editDialog'); const restoreDialog = useTemplateRef('restoreDialog'); +const backupTasks = ref([]); async function onChangeAutoBackups(value) { const [error] = await appsModel.configure(props.app.id, 'automatic_backup', { enable: value }); @@ -71,18 +72,20 @@ async function waitForTask(taskId) { const [error, result] = await tasksModel.get(taskId); if (error) return console.error(error); - if (!result.active) return refresh(); + if (!result.active) { + createBusy.value = false; + return refresh(); + } setTimeout(waitForTask.bind(null, taskId), 2000); } async function onCreate() { createBusy.value = true; + const [error, result] = await appsModel.backup(props.app.id); if (error) return console.error(error); - setTimeout(() => createBusy.value = false, 2000); - await waitForTask(result); } @@ -181,6 +184,16 @@ onMounted(async () => { busy.value = false; autoBackupsEnabled.value = props.app.enableBackup; + + const [error, result] = await tasksModel.getByType(`appBackup_${props.app.id}`); + if (error) return console.error(error); + + if (result[0] && result[0].active) { + createBusy.value = true; + waitForTask(result[0].id); + } + + backupTasks.value = result; });