about summary refs log tree commit diff
path: root/src/state/session/reducer.ts
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2024-08-15 20:58:13 +0100
committerGitHub <noreply@github.com>2024-08-15 20:58:13 +0100
commitb6e515c664d51ffe357c3562fd514301805ade8c (patch)
treeac0193c172d6c7ef62ac59d411c2dfc7ae1614c3 /src/state/session/reducer.ts
parentf3b57dd45600c0c8197ce45a0f927b57e0799760 (diff)
downloadvoidsky-b6e515c664d51ffe357c3562fd514301805ade8c.tar.zst
Move global "Sign out" out of the current account row (#4941)
* Rename logout to logoutEveryAccount

* Add logoutCurrentAccount()

* Make all "Log out" buttons refer to current account

Each of these usages is completely contextual and refers to a specific account.

* Add Sign out of all accounts to Settings

* Move single account Sign Out below as well

* Prompt on account removal

* Add Other Accounts header to reduce ambiguity

* Spacing fix

---------

Co-authored-by: Paul Frazee <pfrazee@gmail.com>
Diffstat (limited to 'src/state/session/reducer.ts')
-rw-r--r--src/state/session/reducer.ts23
1 files changed, 21 insertions, 2 deletions
diff --git a/src/state/session/reducer.ts b/src/state/session/reducer.ts
index b49198514..22ba47162 100644
--- a/src/state/session/reducer.ts
+++ b/src/state/session/reducer.ts
@@ -42,7 +42,10 @@ export type Action =
       accountDid: string
     }
   | {
-      type: 'logged-out'
+      type: 'logged-out-current-account'
+    }
+  | {
+      type: 'logged-out-every-account'
     }
   | {
       type: 'synced-accounts'
@@ -138,7 +141,23 @@ let reducer = (state: State, action: Action): State => {
         needsPersist: true,
       }
     }
-    case 'logged-out': {
+    case 'logged-out-current-account': {
+      const {currentAgentState} = state
+      return {
+        accounts: state.accounts.map(a =>
+          a.did === currentAgentState.did
+            ? {
+                ...a,
+                refreshJwt: undefined,
+                accessJwt: undefined,
+              }
+            : a,
+        ),
+        currentAgentState: createPublicAgentState(),
+        needsPersist: true,
+      }
+    }
+    case 'logged-out-every-account': {
       return {
         accounts: state.accounts.map(a => ({
           ...a,