mirror of https://github.com/wg-easy/wg-easy
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.7 KiB
81 lines
1.7 KiB
<template>
|
|
<div>
|
|
<p class="p-8 text-center text-lg">
|
|
{{ $t('setup.messageSetupMigration') }}
|
|
</p>
|
|
<div>
|
|
<Label for="migration">{{ $t('setup.migration') }}</Label>
|
|
<input id="migration" type="file" @change="onChangeFile" />
|
|
</div>
|
|
<BaseButton @click="sendFile">Upload</BaseButton>
|
|
</div>
|
|
</template>
|
|
|
|
<script lang="ts" setup>
|
|
import { FetchError } from 'ofetch';
|
|
|
|
definePageMeta({
|
|
layout: 'setup',
|
|
});
|
|
|
|
const { t } = useI18n();
|
|
|
|
const setupStore = useSetupStore();
|
|
setupStore.setStep(5);
|
|
const backupFile = ref<null | File>(null);
|
|
|
|
function onChangeFile(evt: Event) {
|
|
const target = evt.target as HTMLInputElement;
|
|
const file = target.files?.[0];
|
|
|
|
console.log('file', file);
|
|
|
|
if (file) {
|
|
backupFile.value = file;
|
|
console.log('backupFile.value', backupFile.value);
|
|
}
|
|
}
|
|
|
|
const router = useRouter();
|
|
const toast = useToast();
|
|
|
|
async function sendFile() {
|
|
if (!backupFile.value) {
|
|
toast.showToast({
|
|
type: 'error',
|
|
title: t('setup.requirements'),
|
|
message: t('setup.emptyFields'),
|
|
});
|
|
return;
|
|
}
|
|
|
|
try {
|
|
const content = await readFileContent(backupFile.value);
|
|
|
|
await setupStore.runMigration(content);
|
|
await router.push('/setup/success');
|
|
} catch (error) {
|
|
if (error instanceof FetchError) {
|
|
toast.showToast({
|
|
type: 'error',
|
|
title: t('setup.requirements'),
|
|
message: error.data.message,
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|
|
async function readFileContent(file: File): Promise<string> {
|
|
return new Promise((resolve, reject) => {
|
|
const reader = new FileReader();
|
|
|
|
reader.onload = (event) => {
|
|
resolve(event.target?.result as string);
|
|
};
|
|
reader.onerror = (error) => {
|
|
reject(error);
|
|
};
|
|
reader.readAsText(file);
|
|
});
|
|
}
|
|
</script>
|
|
|