29 lines
859 B
Vue
29 lines
859 B
Vue
<script setup lang="ts">
|
|
import { computed, onMounted } from "vue";
|
|
import { RouterView, useRoute } from "vue-router";
|
|
import AppHeader from "@/layout/AppHeader.vue";
|
|
import AppFooter from "@/layout/AppFooter.vue";
|
|
import { useUserStore } from "@/stores/user";
|
|
|
|
const userStore = useUserStore();
|
|
const route = useRoute();
|
|
// Embed routes (e.g. place/embed) are meant to be dropped into an <iframe>
|
|
// as-is - the header/footer chrome would just eat into the fixed space a
|
|
// stream overlay or OBS browser source gives it.
|
|
const isEmbed = computed(() => route.meta.embed === true);
|
|
|
|
onMounted(() => {
|
|
userStore.loadUserData();
|
|
});
|
|
</script>
|
|
|
|
<template>
|
|
<div class="min-h-screen flex flex-col">
|
|
<AppHeader v-if="!isEmbed" />
|
|
<main class="flex-1 flex flex-col">
|
|
<RouterView />
|
|
</main>
|
|
<AppFooter v-if="!isEmbed" />
|
|
</div>
|
|
</template>
|