diff --git a/app/middleware/require-classroom-intro.ts b/app/middleware/require-classroom-intro.ts new file mode 100644 index 0000000..e0eff44 --- /dev/null +++ b/app/middleware/require-classroom-intro.ts @@ -0,0 +1,10 @@ +import {CLASSROOM_INTRO_STORAGE_KEY} from '~~/shared/constants/storage' + +export default defineNuxtRouteMiddleware(() => { + if (process.server) return + + const introComplete = localStorage.getItem(CLASSROOM_INTRO_STORAGE_KEY) === 'true' + if (!introComplete) { + return navigateTo('/classroom-introduction') + } +}) diff --git a/app/pages/classroom-introduction.vue b/app/pages/classroom-introduction.vue index 423d838..6643a4e 100644 --- a/app/pages/classroom-introduction.vue +++ b/app/pages/classroom-introduction.vue @@ -13,7 +13,7 @@

Guided preflight briefing

- + Enter Classroom hub @@ -167,7 +167,7 @@ Start guided tour - + Skip to Classroom @@ -382,10 +382,10 @@ Next stop - + Enter Classroom hub - + @@ -403,6 +403,7 @@ import { computed, nextTick, onBeforeUnmount, ref, watch } from 'vue' import { useHead } from '#imports' import { useApi } from '~/composables/useApi' +import { CLASSROOM_INTRO_STORAGE_KEY } from '~~/shared/constants/storage' import type { PizzicatoLite } from '~~/shared/utils/pizzicatoLite' import { loadPizzicatoLite } from '~~/shared/utils/pizzicatoLite' import { clampReadability, createNoiseGenerators, getReadabilityProfile } from '~~/shared/utils/radioEffects' @@ -420,6 +421,8 @@ interface StageStop { voiceLine: string } +definePageMeta({ middleware: 'require-auth' }) + useHead({ title: 'Classroom orientation • OpenSquawk' }) const stages: StageStop[] = [ @@ -497,6 +500,15 @@ const stages: StageStop[] = [ const api = useApi() +function markClassroomIntroComplete() { + if (typeof window === 'undefined') return + localStorage.setItem(CLASSROOM_INTRO_STORAGE_KEY, 'true') +} + +function handleClassroomEntry() { + markClassroomIntroComplete() +} + const voiceMode = ref('text') const radioLevel = ref(3) const hasCompletedRadioCheck = ref(false) diff --git a/app/pages/classroom.vue b/app/pages/classroom.vue index 82d89bd..20956b9 100644 --- a/app/pages/classroom.vue +++ b/app/pages/classroom.vue @@ -122,6 +122,10 @@
+ + mdi-message-draw + Feedback +