about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorPaul Frazee <pfrazee@gmail.com>2022-11-21 16:17:40 -0600
committerPaul Frazee <pfrazee@gmail.com>2022-11-21 16:17:40 -0600
commitb2dba9a15b0b27c9221808ff037090c2b4c2d500 (patch)
tree66cafb354e0863879023de55ca8a7e472708f465 /src
parented146a582c140b9a472298390dafbc07bd06cf60 (diff)
downloadvoidsky-b2dba9a15b0b27c9221808ff037090c2b4c2d500.tar.zst
Track rotated auth tokens
Diffstat (limited to 'src')
-rw-r--r--src/state/index.ts2
-rw-r--r--src/state/models/session.ts15
2 files changed, 16 insertions, 1 deletions
diff --git a/src/state/index.ts b/src/state/index.ts
index fd81bc842..7bb757757 100644
--- a/src/state/index.ts
+++ b/src/state/index.ts
@@ -34,6 +34,8 @@ export async function setupState() {
     if (!api.sessionManager.session && rootStore.session.isAuthed) {
       // reset session
       rootStore.session.clear()
+    } else if (api.sessionManager.session) {
+      rootStore.session.updateAuthTokens(api.sessionManager.session)
     }
   })
 
diff --git a/src/state/models/session.ts b/src/state/models/session.ts
index e10a08e86..0f1faeaba 100644
--- a/src/state/models/session.ts
+++ b/src/state/models/session.ts
@@ -1,6 +1,9 @@
 import {makeAutoObservable} from 'mobx'
 import {sessionClient as AtpApi} from '../../third-party/api/index'
-import type {SessionServiceClient} from '../../third-party/api/src/index'
+import type {
+  SessionServiceClient,
+  Session,
+} from '../../third-party/api/src/index'
 import type * as GetAccountsConfig from '../../third-party/api/src/client/types/com/atproto/server/getAccountsConfig'
 import {isObj, hasProp} from '../lib/type-guards'
 import {RootStoreModel} from './root-store'
@@ -88,6 +91,16 @@ export class SessionModel {
     this.data = data
   }
 
+  updateAuthTokens(session: Session) {
+    if (this.data) {
+      this.setState({
+        ...this.data,
+        accessJwt: session.accessJwt,
+        refreshJwt: session.refreshJwt,
+      })
+    }
+  }
+
   private configureApi(): boolean {
     if (!this.data) {
       return false