Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wip: utilise zustand pour gérer le state de l'auth + user #1182

Draft
wants to merge 9 commits into
base: master
Choose a base branch
from

Conversation

ggrossetie
Copy link
Collaborator

@ggrossetie ggrossetie commented Jan 14, 2025

Changements

  • Déclare la configuration applicative en tant que constante
  • Remplace le store Redux lié à l'authentification (sessionToken) et à l'utilisateur (activeUser) par un store Zustand
  • Supprime la notion de hasBooted et loggedIn
  • Supprime le subscribe sur le store dans index.jsx (avec les hooks Zustand, les composants s'actualisent correctement lorsque l'utilisateur s'authentifie)
  • Déplace la logique de récupération de l'utilisateur et d'extraction de l'espace de travail à partir de l'URL dans les actions du store

Prochaines étapes

  • Permet d'avoir des stores dédiés, notamment sur les tags. Cela devrait simplifier la gestion de l'état lors de la mise à jour, ajout ou suppression de tags
  • On pourrait potentiellement se passer de CurrentUserContext (je ne vois pas trop l'intérêt par rapport aux hooks Zustand)
  • Rationaliser l'utilisation de useActiveUser dans les composants
    • Je pense que si on déplace la logique de mise à jour de l'état dans les stores (ie. les mutations via GraphQL) on déplacer les appels explicites à useActiveUser

Copy link

netlify bot commented Jan 14, 2025

Deploy Preview for stylo-docs canceled.

Name Link
🔨 Latest commit 7b1abe1
🔍 Latest deploy log https://app.netlify.com/sites/stylo-docs/deploys/67865f83b7306c00085ec41e

Copy link

netlify bot commented Jan 14, 2025

Deploy Preview for stylo-dev ready!

Name Link
🔨 Latest commit 7b1abe1
🔍 Latest deploy log https://app.netlify.com/sites/stylo-dev/deploys/67865f83624756000864ce44
😎 Deploy Preview https://deploy-preview-1182--stylo-dev.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify site configuration.

@thom4parisot
Copy link
Member

Super :-) Tu imagines quoi comme prochaines étapes ? Pour remplacer Redux par Zustand ?

@ggrossetie
Copy link
Collaborator Author

Je voulais faire un store dédié aux tags afin de faciliter le travail sur #892 et #893

Il faut que je fasse quelques tests quand l'URL contient #auth-token. On avait aussi un appel à refreshProfile quand la popup /login/zotero se ferme et il faut que je vois ce qu'on a besoin de faire.

Pour remplacer Redux par Zustand ?

On peut le remplacer progressivement.

@ggrossetie ggrossetie changed the title feat: utilise zustand pour gérer le state de l'auth + user wip: utilise zustand pour gérer le state de l'auth + user Jan 14, 2025
@ggrossetie ggrossetie marked this pull request as draft January 14, 2025 11:26
@thom4parisot
Copy link
Member

Oui, les étapes c'était pour le remplacement progressif 😄 (dans d'autres PR).

Je ne suis pas sûr qu'il faille un store pour gérer les tags, si ? Si on utilise swr, il gère déjà l'état des données rappatriées par API. Sinon ça m'intéresserait de savoir où on trace la limite entre les responsabilités de ces deux outils.

@ggrossetie ggrossetie marked this pull request as ready for review January 14, 2025 13:01
@ggrossetie
Copy link
Collaborator Author

Je ne suis pas sûr qu'il faille un store pour gérer les tags, si ? Si on utilise swr, il gère déjà l'état des données rappatriées par API. Sinon ça m'intéresserait de savoir où on trace la limite entre les responsabilités de ces deux outils.

C'est une bonne question. Je suppose qu'on pourrait conserver uniquement l'état "local" dans un store (identifiant de l'espace de travail sélectionné, identifiant de l'utilisateur connecté, token de session) et obtenir les données "remote" avec swr.

Peut être qu'il manque des hooks de plus haut niveau afin qu'on puisse utiliser les données plus facilement. Par exemple: const { tags, error, isLoading, createTag, updateTag, deleteTag } = useTags() qui s'appuie sur useSWR ?

@ggrossetie ggrossetie marked this pull request as draft January 14, 2025 18:09
@ggrossetie
Copy link
Collaborator Author

C'est une bonne question. Je suppose qu'on pourrait conserver uniquement l'état "local" dans un store (identifiant de l'espace de travail sélectionné, identifiant de l'utilisateur connecté, token de session) et obtenir les données "remote" avec swr.

@thom4parisot est-ce que ça te semble être une bonne idée de faire ce découpage : état "local" avec Zustand, état "remote" avec swr ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants