You've already forked AstralRinth
forked from didirus/AstralRinth
* feat: migrate frontend notifications to dependency injection based notificaton manager * fix: lint * fix: issues * fix: compile error + notif binding issue * refactor: move org context to new DI setup * feat: migrate app notifications to DI + frontend styling * fix: sidebar issues * fix: dont use delete in computed * fix: import and prop issue * refactor: move handleError to main notification manager class * fix: lint & build * fix: merge issues * fix: lint issues * fix: lint issues --------- Signed-off-by: IMB11 <hendersoncal117@gmail.com> Signed-off-by: Cal H. <hendersoncal117@gmail.com>
62 lines
1.6 KiB
Vue
62 lines
1.6 KiB
Vue
<template>
|
|
<ConfirmModal
|
|
ref="modal"
|
|
danger
|
|
title="Are you sure you want to restore from this backup?"
|
|
proceed-label="Restore from backup"
|
|
description="This will **overwrite all files on your server** and replace them with the files from the backup."
|
|
@proceed="restoreBackup"
|
|
>
|
|
<BackupItem
|
|
v-if="currentBackup"
|
|
:backup="currentBackup"
|
|
preview
|
|
class="border-px border-solid border-button-border"
|
|
/>
|
|
</ConfirmModal>
|
|
</template>
|
|
|
|
<script setup lang="ts">
|
|
import { ConfirmModal, injectNotificationManager, NewModal } from "@modrinth/ui";
|
|
import type { Backup } from "@modrinth/utils";
|
|
import { ref } from "vue";
|
|
import BackupItem from "~/components/ui/servers/BackupItem.vue";
|
|
import { ModrinthServer } from "~/composables/servers/modrinth-servers.ts";
|
|
|
|
const { addNotification } = injectNotificationManager();
|
|
|
|
const props = defineProps<{
|
|
server: ModrinthServer;
|
|
}>();
|
|
|
|
const modal = ref<InstanceType<typeof NewModal>>();
|
|
const currentBackup = ref<Backup | null>(null);
|
|
|
|
function show(backup: Backup) {
|
|
currentBackup.value = backup;
|
|
modal.value?.show();
|
|
}
|
|
|
|
const restoreBackup = async () => {
|
|
if (!currentBackup.value) {
|
|
addNotification({
|
|
type: "error",
|
|
title: "Failed to restore backup",
|
|
text: "Current backup is null",
|
|
});
|
|
return;
|
|
}
|
|
|
|
try {
|
|
await props.server.backups?.restore(currentBackup.value.id);
|
|
} catch (error) {
|
|
const message = error instanceof Error ? error.message : String(error);
|
|
addNotification({ type: "error", title: "Failed to restore backup", text: message });
|
|
}
|
|
};
|
|
|
|
defineExpose({
|
|
show,
|
|
});
|
|
</script>
|