mirror of
https://github.com/logseq/logseq.git
synced 2026-06-01 19:01:22 +00:00
enhance(e2ee): store aes encrypted password in OPFS
so no need to input password repeatly
This commit is contained in:
@@ -1,20 +1,31 @@
|
||||
(ns frontend.handler.events.rtc
|
||||
"RTC events"
|
||||
(:require [frontend.components.e2ee :as e2ee]
|
||||
(:require [frontend.common.crypt :as crypt]
|
||||
[frontend.components.e2ee :as e2ee]
|
||||
[frontend.handler.events :as events]
|
||||
[frontend.state :as state]
|
||||
[logseq.shui.ui :as shui]
|
||||
[promesa.core :as p]))
|
||||
|
||||
(defmethod events/handle :rtc/decrypt-user-e2ee-private-key [[_ encrypted-private-key]]
|
||||
(let [private-key-promise (p/deferred)]
|
||||
(let [private-key-promise (p/deferred)
|
||||
refresh-token (state/get-auth-refresh-token)]
|
||||
(shui/dialog-close-all!)
|
||||
(shui/dialog-open!
|
||||
#(e2ee/e2ee-password-to-decrypt-private-key encrypted-private-key private-key-promise)
|
||||
{:auto-width? true
|
||||
:content-props {:onPointerDownOutside #(.preventDefault %)}
|
||||
:on-close (fn []
|
||||
(p/reject! private-key-promise (ex-info "input E2EE password cancelled" {}))
|
||||
(shui/dialog-close!))})
|
||||
(->
|
||||
(p/let [{:keys [password]} (state/<invoke-db-worker :thread-api/get-e2ee-password refresh-token)
|
||||
private-key (crypt/<decrypt-private-key password encrypted-private-key)]
|
||||
(p/resolve! private-key-promise private-key))
|
||||
(p/catch
|
||||
(fn [error]
|
||||
(prn :debug :read-e2ee-password-failed)
|
||||
(js/console.error error)
|
||||
(shui/dialog-open!
|
||||
#(e2ee/e2ee-password-to-decrypt-private-key encrypted-private-key private-key-promise refresh-token)
|
||||
{:auto-width? true
|
||||
:content-props {:onPointerDownOutside #(.preventDefault %)}
|
||||
:on-close (fn []
|
||||
(p/reject! private-key-promise (ex-info "input E2EE password cancelled" {}))
|
||||
(shui/dialog-close!))}))))
|
||||
private-key-promise))
|
||||
|
||||
(defmethod events/handle :rtc/request-e2ee-password [[_]]
|
||||
|
||||
Reference in New Issue
Block a user