Browse Source

feat(login): add *token-updated atom

rcmerci 3 years ago
parent
commit
1606facfbc
2 changed files with 11 additions and 3 deletions
  1. 1 0
      src/main/frontend/components/header.cljs
  2. 10 3
      src/main/frontend/handler/user.cljs

+ 1 - 0
src/main/frontend/components/header.cljs

@@ -32,6 +32,7 @@
 
 (rum/defc login < rum/reactive
   []
+  (let [_ (rum/react user-handler/*token-updated)])
   (rum/with-context [[t] i18n/*tongue-context*]
     (when-not config/publishing?
       (if (user-handler/logged?)

+ 10 - 3
src/main/frontend/handler/user.cljs

@@ -76,6 +76,10 @@
 
 ;;; userinfo, token, login/logout, ...
 
+(def *token-updated
+  "used to notify other parts that tokens updated"
+  (atom false))
+
 (defn- parse-jwt [jwt]
   (some-> jwt
           (string/split ".")
@@ -114,16 +118,19 @@
 (defn- clear-tokens []
   (state/set-auth-id-token nil)
   (state/set-auth-access-token nil)
-  (state/set-auth-refresh-token nil))
+  (state/set-auth-refresh-token nil)
+  (swap! *token-updated not))
 
 (defn- set-tokens!
   ([id-token access-token]
    (state/set-auth-id-token id-token)
-   (state/set-auth-access-token access-token))
+   (state/set-auth-access-token access-token)
+   (swap! *token-updated not))
   ([id-token access-token refresh-token]
    (state/set-auth-id-token id-token)
    (state/set-auth-access-token access-token)
-   (state/set-auth-refresh-token refresh-token)))
+   (state/set-auth-refresh-token refresh-token)
+   (swap! *token-updated not)))
 
 (defn login-callback [code]
   (go