Move push notification setting to separate page
Set up a dedicated Account Setttings page to hold account specific settings such as the push notifications.
This commit is contained in:
parent
d4cbbcbc2d
commit
ca51c07065
4 changed files with 38 additions and 4 deletions
|
@ -11,6 +11,7 @@
|
||||||
{{ session.account.name || "anonymous" }}
|
{{ session.account.name || "anonymous" }}
|
||||||
(s:{{ session.id }} a:{{ session.account.id }}{{ session.push ? " push" : null }})
|
(s:{{ session.id }} a:{{ session.account.id }}{{ session.push ? " push" : null }})
|
||||||
{{ session.account.type }}
|
{{ session.account.type }}
|
||||||
|
<NuxtLink to="/account/settings">Settings</NuxtLink>
|
||||||
<button type="button" @click="logOut">Log out</button>
|
<button type="button" @click="logOut">Log out</button>
|
||||||
</template>
|
</template>
|
||||||
<template v-else>
|
<template v-else>
|
||||||
|
|
8
middleware/authenticated.ts
Normal file
8
middleware/authenticated.ts
Normal file
|
@ -0,0 +1,8 @@
|
||||||
|
export default defineNuxtRouteMiddleware((to, from) => {
|
||||||
|
const { data: session } = useAccountSession();
|
||||||
|
|
||||||
|
if (!session.value) {
|
||||||
|
console.log("Not logged in, redirecting to /login");
|
||||||
|
return navigateTo("/login");
|
||||||
|
}
|
||||||
|
})
|
22
pages/account/settings.vue
Normal file
22
pages/account/settings.vue
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
<template>
|
||||||
|
<main>
|
||||||
|
<h1>Account Settings</h1>
|
||||||
|
<p>Name: {{ session?.account.name }}</p>
|
||||||
|
<p>Access: {{ session?.account.type }}</p>
|
||||||
|
<p>
|
||||||
|
<PushNotification />
|
||||||
|
</p>
|
||||||
|
</main>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
definePageMeta({
|
||||||
|
middleware: ["authenticated"],
|
||||||
|
});
|
||||||
|
|
||||||
|
const { data: session } = useAccountSession();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style>
|
||||||
|
|
||||||
|
</style>
|
|
@ -4,10 +4,12 @@
|
||||||
<p>
|
<p>
|
||||||
Study carefully, we only hold these events once a year.
|
Study carefully, we only hold these events once a year.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p v-if="!session">
|
||||||
Get notified about updates
|
<NuxtLink to="/login">Login</NuxtLink> to get notified about updates to the schedule.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Check out your <NuxtLink to="/account/settings">Account Setting</NuxtLink> to set up notifications for changes to schedule.
|
||||||
</p>
|
</p>
|
||||||
<PushNotification />
|
|
||||||
<h2>Schedule</h2>
|
<h2>Schedule</h2>
|
||||||
<Timetable />
|
<Timetable />
|
||||||
<EventsEdit />
|
<EventsEdit />
|
||||||
|
@ -25,11 +27,12 @@
|
||||||
|
|
||||||
<script setup lang="ts">
|
<script setup lang="ts">
|
||||||
import type { Schedule } from '~/shared/types/schedule';
|
import type { Schedule } from '~/shared/types/schedule';
|
||||||
|
const { data: session } = useAccountSession();
|
||||||
|
|
||||||
const schedule = useSchedule();
|
const schedule = useSchedule();
|
||||||
|
|
||||||
await callOnce(async () => {
|
await callOnce(async () => {
|
||||||
schedule.value = await $fetch("/api/schedule")
|
schedule.value = await $fetch("/api/schedule");
|
||||||
})
|
})
|
||||||
|
|
||||||
const source = ref<EventSource | null>(null);
|
const source = ref<EventSource | null>(null);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue