feat: refonte UX du dashboard (coquille, tri/filtre/pagination, ⌘K, toasts)
Refonte front (packages/web) : coquille applicative partagée (sidebar desktop + barre d'onglets mobile + PageHeader, langue/push/logout centralisés) pilotée par route.meta.layout ; design system (BaseButton/BaseBadge/SegmentedControl/EmptyState/ SkeletonRow, anneau de focus, icônes @lucide/vue) ; tri/filtre/recherche/pagination côté client via useListControls (+ synchro URL) sur sessions/worktrees/groupes ; section « À traiter », palette de commandes ⌘K, toasts. Aucune modif serveur/protocole/DB.
This commit is contained in:
19
packages/web/src/composables/useSession.ts
Normal file
19
packages/web/src/composables/useSession.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
import { useRouter } from 'vue-router';
|
||||
import { useAuthStore } from '../stores/auth';
|
||||
|
||||
/**
|
||||
* Déconnexion centralisée. `auth.logout()` ferme la WebSocket ; la redirection vers /login
|
||||
* démonte l'AppShell, qui stoppe alors les abonnements temps réel (source unique). Corrige
|
||||
* l'incohérence où certaines vues ne stoppaient pas tous les flux au logout.
|
||||
*/
|
||||
export function useSession() {
|
||||
const auth = useAuthStore();
|
||||
const router = useRouter();
|
||||
|
||||
async function logout(): Promise<void> {
|
||||
await auth.logout();
|
||||
await router.replace({ name: 'login' });
|
||||
}
|
||||
|
||||
return { logout };
|
||||
}
|
||||
Reference in New Issue
Block a user