Frontend

Stores Pinia

Stores Pinia utilisés dans TrickSpin.

Stores Pinia

useAuthStorestores/auth.ts

Gère l'état de session de l'utilisateur connecté.

State

PropriétéTypeDescription
isLoggedInbooleanIndique si l'utilisateur est connecté
userUser | nullDonnées de l'utilisateur hydraté (id, pseudo)

Getter

GetterDescription
isTokenExpiredDécode le cookie jwt_hp et vérifie l'expiration du token sans appel serveur

Actions

ActionDescription
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.


useKocStorestores/koc.ts

Gère le score King of Cable de l'utilisateur connecté.

State

PropriétéTypeDescription
totalPointsnumberScore total actuel
hydratedbooleanIndique si le score a été chargé depuis l'API
needsSyncbooleanIndique si le score local diverge du serveur
isFetchingbooleanVerrou pour éviter les appels concurrents

Actions

ActionDescription
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

useSavedTricksstores/savedTricks.ts

Gère la liste des tricks enregistrés dans le profil de l'utilisateur.

State

PropriétéTypeDescription
idsnumber[]Liste des identifiants des tricks maîtrisés

Actions

ActionDescription
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.