Move local logout cleanup outside of the logout mutation
- Lingua principale
- Nessun dato sulla lingua
- Stelle
- 3
- Fork
- 0
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
As described in [this PR](https://github.com/coder/coder/pull/19429) our current `AuthProvider` is reliant on some non-obvious behaviors of React Query in order to work. This has manifested in the inability to move local logout clean up code outside of a the logout mutation.
After taking a look at `AuthProvider` for quite a lot of time I think the best solution here would be to refactor the code so that it's easier to reason about all of the different possible authentication states, and how to transition between each one. For example we currently have separate states for `isSignedOut`, `isSigningOut`, `isSignedIn`, and `isSigningIn`. All of which are independently calculated and not always related in obvious ways.
A better solution may be to have a single source of truth in the form of something like a tagged union:
```ts
type AuthState =
| { state: "signed-in"; user: User }
| { state: "signing-in" }
| { state: "signed-out" }
| { state: "signing-out" };
```
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Direzione di ricerca
Inizia leggendo l'AuthProvider e il PR 19429 collegato per comprendere le transizioni di autenticazione attuali e il comportamento attuale della pulizia del logout. Mappa gli stati autenticato, autenticazione in corso, disconnesso e disconnessione in corso prima di scegliere un approccio di refactoring. Done dovrebbe rendere gli stati di autenticazione più facili da comprendere e consentire la pulizia locale del logout al di fuori della mutation di logout.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- react, typescript
- Ambito
- authentication, frontend
- Tipo di issue
- Refactoring
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 25/100