Просмотр исходного кода

fix: can't download invited graph

Tienson Qin 1 месяц назад
Родитель
Сommit
4e09c4c07b
2 измененных файлов с 12 добавлено и 9 удалено
  1. 10 7
      src/main/frontend/worker/db_sync.cljs
  2. 2 2
      src/main/frontend/worker/db_worker.cljs

+ 10 - 7
src/main/frontend/worker/db_sync.cljs

@@ -351,6 +351,11 @@
   (assert (and k @e2ee-store))
   (idb-keyval/set k value @e2ee-store))
 
+(defn- <clear-item!
+  [k]
+  (assert (and k @e2ee-store))
+  (idb-keyval/del k @e2ee-store))
+
 (defn e2ee-base
   []
   (http-base-url))
@@ -471,10 +476,12 @@
 
 (defn <fetch-graph-aes-key-for-download
   [repo graph-id]
-  (let [base (e2ee-base)]
+  (let [base (e2ee-base)
+        aes-key-k (graph-encrypted-aes-key-idb-key graph-id)]
     (when-not (and (string? base) (string? graph-id))
       (fail-fast :db-sync/missing-field {:base base :graph-id graph-id}))
     (p/let [{:keys [public-key encrypted-private-key]} (<fetch-user-rsa-key-pair-raw base)]
+      (<clear-item! aes-key-k)
       (when-not (and (string? public-key) (string? encrypted-private-key))
         (fail-fast :db-sync/missing-field {:graph-id graph-id :field :user-rsa-key-pair}))
       (p/let [private-key (<decrypt-private-key encrypted-private-key)
@@ -487,12 +494,12 @@
         (when-not encrypted-aes-key
           (fail-fast :db-sync/missing-field {:graph-id graph-id :field :encrypted-aes-key}))
         (when (and encrypted-aes-key (nil? local-encrypted))
-          (<set-item! (graph-encrypted-aes-key-idb-key graph-id) encrypted-aes-key))
+          (<set-item! aes-key-k encrypted-aes-key))
         (p/let [aes-key (crypt/<decrypt-aes-key private-key encrypted-aes-key)]
           (swap! *repo->aes-key assoc repo aes-key)
           aes-key)))))
 
-(defn- <grant-graph-access!
+(defn <grant-graph-access!
   [repo graph-id target-email]
   (if-not (graph-e2ee? repo)
     (p/resolved nil)
@@ -522,10 +529,6 @@
                                 {:response-schema :e2ee/grant-access})]
             nil))))))
 
-(defn grant-graph-access!
-  [repo graph-id target-email]
-  (<grant-graph-access! repo graph-id target-email))
-
 (defn- <encrypt-text-value
   [aes-key value]
   (assert (string? value) (str "encrypting value should be a string, value: " value))

+ 2 - 2
src/main/frontend/worker/db_worker.cljs

@@ -423,7 +423,7 @@
 
 (def-thread-api :thread-api/db-sync-grant-graph-access
   [repo graph-id target-email]
-  (db-sync/grant-graph-access! repo graph-id target-email))
+  (db-sync/<grant-graph-access! repo graph-id target-email))
 
 (def-thread-api :thread-api/db-sync-ensure-user-rsa-keys
   []
@@ -643,10 +643,10 @@
 (def-thread-api :thread-api/db-sync-import-kvs-rows
   [repo rows reset? graph-id remote-tx]
   (p/let [_ (when reset? (close-db! repo))
-          db (ensure-db-sync-import-db! repo reset?)
           aes-key (db-sync/<fetch-graph-aes-key-for-download repo graph-id)
           _ (when (nil? aes-key)
               (db-sync/fail-fast :db-sync/missing-field {:repo repo :field :aes-key}))
+          db (ensure-db-sync-import-db! repo reset?)
           batches (medley/indexed (partition-all 100 rows))]
     (rtc-log-and-state/rtc-log :rtc.log/download
                                {:sub-type :download-progress