diff --git a/dashboard/src/components/app/Uninstall.vue b/dashboard/src/components/app/Uninstall.vue index a795f5921..7d852b6dc 100644 --- a/dashboard/src/components/app/Uninstall.vue +++ b/dashboard/src/components/app/Uninstall.vue @@ -48,12 +48,30 @@ async function onUninstall() { window.location.href = '/#/apps'; } -function onArchive() { - // TODO +async function onArchive() { + if (!latestBackup.value) return; + + const yes = await inputDialog.value.confirm({ + title: t('app.archiveDialog.title', { app: (props.app.label || props.app.fqdn) }), + message: t('app.archiveDialog.description', { date: prettyLongDate(latestBackup.value.creationTime) }), + confirmStyle: 'danger', + confirmLabel: t('app.archive.action'), + rejectLabel: t('main.dialog.cancel') + }); + + if (!yes) return; + + const [error] = await appsModel.archive(props.app.id, latestBackup.value.id); + if (error) return console.error(error); + + window.location.href = '/#/apps'; } -onMounted(() => { - latestBackup.value = null; +onMounted(async () => { + const [error, result] = await appsModel.backups(props.app.id); + if (error) return console.error(error); + + latestBackup.value = result[0] || null; }); @@ -78,7 +96,7 @@ onMounted(() => {