diff --git a/dashboard/src/components/app/Backups.vue b/dashboard/src/components/app/Backups.vue index c553ef1d5..fb142d870 100644 --- a/dashboard/src/components/app/Backups.vue +++ b/dashboard/src/components/app/Backups.vue @@ -12,9 +12,11 @@ import { download } from '../../utils.js'; import SettingsItem from '../SettingsItem.vue'; import AppsModel from '../../models/AppsModel.js'; import BackupsModel from '../../models/BackupsModel.js'; +import TasksModel from '../../models/TasksModel.js'; const appsModel = AppsModel.create(); const backupsModel = BackupsModel.create(); +const tasksModel = TasksModel.create(); const props = defineProps([ 'app' ]); @@ -61,12 +63,27 @@ async function onChangeAutoBackups(value) { } } -async function onCreate() { - createBusy.value = true; - const [error] = await appsModel.backup(props.app.id); +async function waitForTask(taskId) { + if (!taskId) return; + + const [error, result] = await tasksModel.get(taskId); if (error) return console.error(error); + if (!result.active) 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); + + console.log(result) + setTimeout(() => createBusy.value = false, 2000); + + await waitForTask(result); } function onEdit(backup) { diff --git a/dashboard/src/models/AppsModel.js b/dashboard/src/models/AppsModel.js index e89a2f782..f1bc9a8b5 100644 --- a/dashboard/src/models/AppsModel.js +++ b/dashboard/src/models/AppsModel.js @@ -342,7 +342,7 @@ function create() { } if (result.status !== 202) return [result]; - return [null]; + return [null, result.body.taskId]; }, async updateBackup(id, backupId, label, preserveSecs) { let result;