Frontend
Stores Pinia
Stores Pinia utilisés dans TrickSpin.
Stores Pinia
useAuthStore — stores/auth.ts
Gère l'état de session de l'utilisateur connecté.
State
| Propriété | Type | Description |
|---|---|---|
isLoggedIn | boolean | Indique si l'utilisateur est connecté |
user | User | null | Données de l'utilisateur hydraté (id, pseudo) |
Getter
| Getter | Description |
|---|---|
isTokenExpired | Décode le cookie jwt_hp et vérifie l'expiration du token sans appel serveur |
Actions
| Action | Description |
|---|---|
login(user) | Hydrate le store après connexion |
checkLogin() | Vérifie la validité de la session (cookie présent + token non expiré + user hydraté) |
clearLocalSession() | Réinitialise le store, vide le cookie de persistance Pinia et les stores dépendants |
logout() | Appelle clearLocalSession() puis redirige vers / |
Persistance
Le store est persisté via pinia-plugin-persistedstate en cookie (auth), ce qui permet de survivre à un rechargement de page sans rappel API.
useKocStore — stores/koc.ts
Gère le score King of Cable de l'utilisateur connecté.
State
| Propriété | Type | Description |
|---|---|---|
totalPoints | number | Score total actuel |
hydrated | boolean | Indique si le score a été chargé depuis l'API |
needsSync | boolean | Indique si le score local diverge du serveur |
isFetching | boolean | Verrou pour éviter les appels concurrents |
Actions
| Action | Description |
|---|---|
fetchScore(force?) | Charge le score depuis /api/users/score. Ignoré si déjà hydraté et synchronisé, sauf si force: true |
addPoints(points) | Mise à jour optimiste à la hausse + marque needsSync |
removePoints(points) | Mise à jour optimiste à la baisse (plancher à 0) + marque needsSync |
useSavedTricks — stores/savedTricks.ts
Gère la liste des tricks enregistrés dans le profil de l'utilisateur.
State
| Propriété | Type | Description |
|---|---|---|
ids | number[] | Liste des identifiants des tricks maîtrisés |
Actions
| Action | Description |
|---|---|
toggle(id) | Ajoute ou retire un trick de la liste |
isSaved(id) | Retourne true si le trick est dans la liste |
sync(ids) | Remplace la liste complète (utilisé après un fetch API) |
clear() | Vide la liste (appelé à la déconnexion) |
Persistance
Les IDs sont persistés dans le localStorage sous la clé saved_tricks.