fix: can't download invited graph

This commit is contained in:
Tienson Qin
2026-01-28 18:28:40 +08:00
parent 1c4dd7cf7c
commit 4e09c4c07b
2 changed files with 12 additions and 9 deletions

View File

@@ -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))

View File

@@ -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