From d1514ec52d5b5a4989e10183e41f7e0821fec2c3 Mon Sep 17 00:00:00 2001 From: Siddarth Kumar Date: Fri, 10 Feb 2023 16:32:46 +0530 Subject: [PATCH] fetch emoji hash for profile (#14987) * add emoji-hash to app-db post login --- .../status/ethereum/module/StatusModule.java | 5 +++++ .../ios/RCTStatus/RCTStatus.m | 6 ++++++ src/status_im/multiaccounts/login/core.cljs | 4 +++- src/status_im/native_module/core.cljs | 6 ++++++ .../contexts/emoji_hash/events.cljs | 19 +++++++++++++++++++ 5 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 src/status_im2/contexts/emoji_hash/events.cljs diff --git a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java index e239de7286..1dd3c78b5d 100644 --- a/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java +++ b/modules/react-native-status/android/src/main/java/im/status/ethereum/module/StatusModule.java @@ -1139,6 +1139,11 @@ class StatusModule extends ReactContextBaseJavaModule implements LifecycleEventL executeRunnableStatusGoMethod(() -> Statusgo.generateAlias(seed), callback); } + @ReactMethod + public void emojiHash(final String publicKey, final Callback callback) throws JSONException { + executeRunnableStatusGoMethod(() -> Statusgo.emojiHash(publicKey), callback); + } + @ReactMethod(isBlockingSynchronousMethod = true) public String identicon(final String seed) { return Statusgo.identicon(seed); diff --git a/modules/react-native-status/ios/RCTStatus/RCTStatus.m b/modules/react-native-status/ios/RCTStatus/RCTStatus.m index 7487b37326..86a7cdd226 100644 --- a/modules/react-native-status/ios/RCTStatus/RCTStatus.m +++ b/modules/react-native-status/ios/RCTStatus/RCTStatus.m @@ -865,6 +865,12 @@ RCT_EXPORT_METHOD(generateAliasAsync:(NSString *)publicKey callback(@[result]); } +RCT_EXPORT_METHOD(emojiHash:(NSString *)publicKey + callback:(RCTResponseSenderBlock)callback) { + NSString *result = StatusgoEmojiHash(publicKey); + callback(@[result]); +} + RCT_EXPORT_BLOCKING_SYNCHRONOUS_METHOD(identicon:(NSString *)publicKey) { return StatusgoIdenticon(publicKey); } diff --git a/src/status_im/multiaccounts/login/core.cljs b/src/status_im/multiaccounts/login/core.cljs index ff36279b2e..5f70c93386 100644 --- a/src/status_im/multiaccounts/login/core.cljs +++ b/src/status_im/multiaccounts/login/core.cljs @@ -44,7 +44,8 @@ [status-im2.navigation.events :as navigation] [status-im2.common.log :as logging] [taoensso.timbre :as log] - [utils.security.core :as security])) + [utils.security.core :as security] + [status-im2.contexts.emoji-hash.events :as emoji-hash])) (re-frame/reg-fx ::initialize-communities-enabled @@ -473,6 +474,7 @@ (get-group-chat-invitations) (multiaccounts/get-profile-picture) (multiaccounts/switch-preview-privacy-mode-flag) + (emoji-hash/fetch-for-current-public-key) (link-preview/request-link-preview-whitelist) (visibility-status-updates-store/fetch-visibility-status-updates-rpc) (switcher-cards-store/fetch-switcher-cards-rpc)))) diff --git a/src/status_im/native_module/core.cljs b/src/status_im/native_module/core.cljs index c24adc3f14..b3390741fb 100644 --- a/src/status_im/native_module/core.cljs +++ b/src/status_im/native_module/core.cljs @@ -481,6 +481,12 @@ (when (validators/valid-public-key? public-key) (.generateAliasAsync ^js (status) public-key callback))) +(defn public-key->emoji-hash + "Generate an emoji hash from the multiaccount public key" + [public-key callback] + (when (validators/valid-public-key? public-key) + (.emojiHash ^js (status) public-key callback))) + (defn identicon "Generate a icon based on a string, synchronously" [seed] diff --git a/src/status_im2/contexts/emoji_hash/events.cljs b/src/status_im2/contexts/emoji_hash/events.cljs new file mode 100644 index 0000000000..797e83ea3a --- /dev/null +++ b/src/status_im2/contexts/emoji_hash/events.cljs @@ -0,0 +1,19 @@ +(ns status-im2.contexts.emoji-hash.events + (:require [utils.re-frame :as rf] + [status-im.native-module.core :as native-module] + [utils.transforms :as transform])) + +(defn fetch-for-current-public-key + [] + (let [public-key (rf/sub [:multiaccount/public-key])] + (native-module/public-key->emoji-hash + public-key + (fn [response] + (let [response-clj (transform/json->clj response) + emoji-hash (get response-clj :result)] + (rf/dispatch [:emoji-hash/add-to-multiaccount emoji-hash])))))) + +(rf/defn add-emoji-hash-to-multiaccount + {:events [:emoji-hash/add-to-multiaccount]} + [{:keys [db]} emoji-hash] + {:db (assoc db :multiaccount/emoji-hash emoji-hash)})