coder / coder/internal

Move local logout cleanup outside of the logout mutation

Aperta
#922 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
refactor
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

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.