From d1d1ca30edd620142fc9b281341eb7cf3bd0bc91 Mon Sep 17 00:00:00 2001 From: rcmerci Date: Sat, 1 Nov 2025 20:39:55 +0800 Subject: [PATCH] feat(rtc,e2ee): basic e2ee-password ui --- src/main/frontend/common/crypt.cljs | 14 ++++++ src/main/frontend/components/e2ee.cljs | 53 +++++++++++++++++++++++ src/main/frontend/handler.cljs | 3 +- src/main/frontend/handler/crypt.cljs | 6 --- src/main/frontend/handler/e2ee.cljs | 26 +++++++++++ src/main/frontend/handler/events/rtc.cljs | 22 ++++++++++ src/main/frontend/worker/rtc/crypt.cljs | 9 ++-- 7 files changed, 123 insertions(+), 10 deletions(-) create mode 100644 src/main/frontend/components/e2ee.cljs delete mode 100644 src/main/frontend/handler/crypt.cljs create mode 100644 src/main/frontend/handler/e2ee.cljs create mode 100644 src/main/frontend/handler/events/rtc.cljs diff --git a/src/main/frontend/common/crypt.cljs b/src/main/frontend/common/crypt.cljs index 728c5a0438..f2fab1a15d 100644 --- a/src/main/frontend/common/crypt.cljs +++ b/src/main/frontend/common/crypt.cljs @@ -35,6 +35,20 @@ true #js ["encrypt"])) +(defn (p/let [kp ( e .-target .-value)))}] + (shui/button + {:on-click (fn [] + (p/resolve! password-promise password) + (shui/dialog-close!))} + "OK") + (shui/button + {:on-click (fn [] + (p/reject! password-promise :cancelled) + (shui/dialog-close!))} + "Cancel")]])) + +(rum/defc e2ee-password-to-decrypt-private-key + [encrypted-private-key private-key-promise] + (let [[password set-password!] (hooks/use-state "") + [decrypt-fail? set-decrypt-fail] (hooks/use-state false)] + [:div.e2ee-password-modal-overlay + [:div.e2ee-password-modal-content + [:h3 "Enter E2EE Password"] + (when decrypt-fail? [:p "Wrong Password"]) + [:input {:type "password" + :value password + :on-change (fn [e] (set-password! (-> e .-target .-value)))}] + (shui/button + {:on-click (fn [] + (-> + (p/let [private-key (crypt/ + (p/let [private-key-promise (state/pub-event! [:rtc/decrypt-user-e2ee-private-key encrypted-private-key]) + private-key private-key-promise] + (crypt/