owltide/pages/account/settings.vue

66 lines
1.3 KiB
Vue
Raw Normal View History

<template>
<main>
<h1>Account Settings</h1>
2025-03-07 23:53:57 +01:00
<p v-if="session?.account.type !== 'anonymous'">
Name: {{ session?.account.name }}
</p>
<p>Access: {{ session?.account.type }}</p>
<form @submit.prevent="changeSettings">
<label>
Timezone
<input type="text" v-model="timezone">
</label>
<button type="submit">
Save
</button>
</form>
<p>
<PushNotification />
</p>
2025-03-07 22:28:55 +01:00
<fieldset>
<legend>Danger Zone</legend>
Delete my account and all data associated with it
<button @click="deleteAccount">
Delete
</button>
</fieldset>
</main>
</template>
<script lang="ts" setup>
definePageMeta({
middleware: ["authenticated"],
});
const { data: session, refresh: sessionRefresh } = await useAccountSession();
2025-03-07 22:28:55 +01:00
const timezone = ref(session.value?.account.timezone ?? "");
async function changeSettings() {
try {
await $fetch("/api/account", {
method: "patch",
body: {
timezone: timezone.value,
}
});
await sessionRefresh();
} catch (err: any) {
alert(err.data.message);
}
}
2025-03-07 22:28:55 +01:00
async function deleteAccount() {
try {
await $fetch.raw("/api/account", {
method: "DELETE",
});
await sessionRefresh();
await navigateTo("/");
2025-03-07 22:28:55 +01:00
} catch (err: any) {
alert(`Delete account failed: ${err.statusCode} ${err.statusMessage}`);
}
}
</script>