<template>
    <div class="flex h-full items-center justify-center">
        <p class="text-neutral-500">{{ $t('auth.logout') }}...</p>
    </div>
</template>

<script setup lang="ts">
definePageMeta({ layout: 'auth' })

const auth = useAuthStore()
const { resetSidebar } = useSidebar()
const { resetModules } = useModules()
const { resetCurrentSite } = useCurrentSite()
const { resetAuditLog } = useAuditLog()
const { resetCategoriesAdmin } = useCategoriesAdmin()

onMounted(async () => {
    try {
        await auth.logout()
    } finally {
        // Les resets sont garantis meme si auth.logout() rejette : eviter
        // qu'un user suivant (connecte sur le meme onglet) voie l'etat de
        // l'ancien. Toutes les fonctions reset sont synchrones et ne
        // peuvent pas throw (juste des assignations reactives).
        // navigateTo est dans le finally pour garantir la redirection
        // meme si auth.logout() lance une exception (ex: reseau coupé).
        resetSidebar()
        resetModules()
        resetCurrentSite()
        resetAuditLog()
        resetCategoriesAdmin()
        await navigateTo('/login')
    }
})
</script>
