fix logout

Seto Elkahfi committed Aug 1, 2024 at 14:45 UTC 0ca60fd7d298acad4a87a56c54503038135a73ca
2 files changed +14 -16
frontend/splitfire-desktop/app/_src/lib/CurrentUserContext.ts
+1 -1
@@ -3,7 +3,7 @@ import { CurrentUser } from "./db";
3
4 interface CurrentUserContext {
5 user: CurrentUser | null
6 - updateUser: (user: CurrentUser) => void
6 + updateUser: (user: CurrentUser | null) => void
7 }
8
9 export const UserContext = createContext<CurrentUserContext>({ user: null, updateUser: () => { } });
\ No newline at end of file
frontend/splitfire-desktop/app/logout/page.tsx
+13 -15
@@ -17,19 +17,13 @@ enum State {
17
18 export default function Page() {
19 const [state, setState] = useState(State.LOADING);
20 - const [user, setUser] = useState<CurrentUser | null>(null);
20 const log = useLogger("Logout/Page");
21 const router = useRouter();
22 const userContext = useContext(UserContext);
23
25 - const updateUser = (newUser: CurrentUser | null) => {
26 - setUser(newUser);
27 - };
28 -
29 - const logout = async () => {
24 + const logout = async (update: (user: CurrentUser | null) => void) => {
25 try {
26 setState(State.LOADING);
32 - log.debug("user", user);
27 log.debug("userContext", userContext);
28 const payload = {
29 accessToken: userContext.user?.accessToken,
@@ -37,11 +31,9 @@ export default function Page() {
31 log.debug("Logging out", payload);
32 const res = await invoke(TAURI_ACCOUNT_LOGOUT, payload);
33 log.debug(res);
40 - updateUser(null);
34 + update(null);
35 db.currentUser.clear();
42 - setState(State.LOADED);
36 router.push("/");
44 - router.refresh();
37 } catch (error) {
38 log.error(error);
39 setState(State.ERROR);
@@ -51,15 +43,21 @@ export default function Page() {
43 const buttonText = state === State.LOADING ? "Logging out..." : "Logout";
44
45 return (
54 - <UserContext.Provider value={{ user, updateUser }}>
55 - <div className="prose prose-sm prose-invert max-w-none">
46 + <div className="prose prose-sm prose-invert max-w-none">
47 + <UserContext.Consumer>
48 + {({ updateUser: update }) => (
49 <div className="grid grid-cols-1 gap-6 lg:grid-cols-3">
57 - <Button onClick={() => logout()} variant={"outline"} size={"lg"}>
50 + <Button
51 + onClick={() => logout(update)}
52 + variant={"outline"}
53 + size={"lg"}
54 + >
55 {buttonText}
56 </Button>
57 <div>This will remove your session and caches.</div>
58 </div>
62 - </div>
63 - </UserContext.Provider>
59 + )}
60 + </UserContext.Consumer>
61 + </div>
62 );
63 }