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
}