From 0c555774f1a0a51ac5f505aa15b754b987533396 Mon Sep 17 00:00:00 2001 From: Andrea Maria Piana Date: Fri, 24 Nov 2023 14:49:54 +0000 Subject: [PATCH] Add fetch messages behind a toggle & some advanced settings This PR does a few things: 1) Add fetch messages implementation on any kind of chat. It's behind a toggle (on by default) as design is still unsure whether we want it, but it's very useful for debugging. 2) Allow setting light client from mobile It also partially remove node config management from the clojure part, as it's better if that's not explicitly managed by clients. Some parts are still relying on it but they are not functional (keycard), while others are still using it and will need to be updated eventually (syncing), in order to get rid completely of node config. https://github.com/status-im/status-go/compare/8a4c2d8d...5de4057a --- src/native_module/core.cljs | 17 --- src/status_im/fleet/core.cljs | 11 +- src/status_im/keycard/recovery.cljs | 43 +++--- src/status_im/keycard/simulated_keycard.cljs | 17 ++- src/status_im/log_level/core.cljs | 13 +- src/status_im/multiaccounts/create/core.cljs | 140 +----------------- src/status_im/network/core.cljs | 11 +- src/status_im/node/core.cljs | 35 +---- .../ui/screens/advanced_settings/views.cljs | 50 +++---- src/status_im/waku/core.cljs | 44 +++--- src/status_im2/common/home/actions/view.cljs | 20 +-- src/status_im2/config.cljs | 1 + .../contexts/chat/actions/view.cljs | 13 ++ src/status_im2/contexts/chat/events.cljs | 9 ++ .../communities/actions/chat/view.cljs | 12 +- src/status_im2/contexts/profile/rpc.cljs | 7 + src/status_im2/subs/profile.cljs | 12 ++ status-go-version.json | 6 +- translations/en.json | 1 + 19 files changed, 149 insertions(+), 313 deletions(-) diff --git a/src/native_module/core.cljs b/src/native_module/core.cljs index c549912fa3d0..2585a2aba1f4 100644 --- a/src/native_module/core.cljs +++ b/src/native_module/core.cljs @@ -40,23 +40,6 @@ config #(callback (types/json->clj %)))) -(defn save-account-and-login - "NOTE: beware, the password has to be sha3 hashed" - [key-uid multiaccount-data hashed-password settings config accounts-data] - (log/debug "[native-module] save-account-and-login" - "multiaccount-data" - multiaccount-data) - (clear-web-data) - (init-keystore - key-uid - #(.saveAccountAndLogin - ^js (status) - multiaccount-data - hashed-password - settings - config - accounts-data))) - (defn save-multiaccount-and-login-with-keycard "NOTE: chat-key is a whisper private key sent from keycard" [key-uid multiaccount-data password settings config accounts-data chat-key] diff --git a/src/status_im/fleet/core.cljs b/src/status_im/fleet/core.cljs index 022b8bb1189d..4cb98a491f73 100644 --- a/src/status_im/fleet/core.cljs +++ b/src/status_im/fleet/core.cljs @@ -78,10 +78,9 @@ [{:keys [db now] :as cofx} fleet] (let [old-fleet (get-in db [:profile/profile :fleet])] (when (not= fleet old-fleet) - (rf/merge + (multiaccounts.update/multiaccount-update cofx - (multiaccounts.update/multiaccount-update :fleet fleet {}) - (node/prepare-new-config - {:on-success - #(re-frame/dispatch - [:multiaccounts.update.callback/save-settings-success])}))))) + :fleet + fleet + {:on-success + #(re-frame/dispatch [:logout])})))) diff --git a/src/status_im/keycard/recovery.cljs b/src/status_im/keycard/recovery.cljs index f37297296d64..4b77737ee47f 100644 --- a/src/status_im/keycard/recovery.cljs +++ b/src/status_im/keycard/recovery.cljs @@ -17,7 +17,6 @@ [taoensso.timbre :as log] [utils.address :as address] [utils.datetime :as datetime] - [utils.ethereum.eip.eip55 :as eip55] [utils.i18n :as i18n] [utils.re-frame :as rf] [utils.security.core :as security])) @@ -183,26 +182,28 @@ {:db (-> db (assoc-in [:keycard :setup-step] nil) (dissoc :intro-wizard))} - (multiaccounts.create/on-multiaccount-created - {:recovered (or recovered (get-in db [:intro-wizard :recovering?])) - :derived {constants/path-wallet-root-keyword - {:public-key wallet-root-public-key - :address (eip55/address->checksum wallet-root-address)} - constants/path-whisper-keyword - {:public-key whisper-public-key - :address (eip55/address->checksum whisper-address)} - constants/path-default-wallet-keyword - {:public-key wallet-public-key - :address (eip55/address->checksum wallet-address)}} - :address address - :public-key public-key - :keycard-instance-uid instance-uid - :key-uid (address/normalized-hex key-uid) - :keycard-pairing pairing - :keycard-paired-on paired-on - :chat-key whisper-private-key} - encryption-public-key - {})))) + ;; NOTE: Disabling as keycard not functional and this needs to be moved to + ;; status-go + #_(multiaccounts.create/on-multiaccount-created + {:recovered (or recovered (get-in db [:intro-wizard :recovering?])) + :derived {constants/path-wallet-root-keyword + {:public-key wallet-root-public-key + :address (eip55/address->checksum wallet-root-address)} + constants/path-whisper-keyword + {:public-key whisper-public-key + :address (eip55/address->checksum whisper-address)} + constants/path-default-wallet-keyword + {:public-key wallet-public-key + :address (eip55/address->checksum wallet-address)}} + :address address + :public-key public-key + :keycard-instance-uid instance-uid + :key-uid (address/normalized-hex key-uid) + :keycard-pairing pairing + :keycard-paired-on paired-on + :chat-key whisper-private-key} + encryption-public-key + {})))) (rf/defn return-to-keycard-login [{:keys [db] :as cofx}] diff --git a/src/status_im/keycard/simulated_keycard.cljs b/src/status_im/keycard/simulated_keycard.cljs index 734208c0ca6a..cc3c8db46d63 100644 --- a/src/status_im/keycard/simulated_keycard.cljs +++ b/src/status_im/keycard/simulated_keycard.cljs @@ -489,14 +489,15 @@ (log/warn "sign-typed-data not implemented" args)) (defn save-multiaccount-and-login - [{:keys [key-uid multiaccount-data password settings node-config accounts-data]}] - (native-module/save-account-and-login - key-uid - (types/clj->json multiaccount-data) - password - (types/clj->json settings) - node-config - (types/clj->json accounts-data))) + [_] + ;; NOTE: disabling as we don't support keycard for now and it's using an outdated endpoint + #_(native-module/save-account-and-login + key-uid + (types/clj->json multiaccount-data) + password + (types/clj->json settings) + node-config + (types/clj->json accounts-data))) (defn login [{:keys [key-uid multiaccount-data password]}] diff --git a/src/status_im/log_level/core.cljs b/src/status_im/log_level/core.cljs index 3dd31d0d0596..c8b581c79f2a 100644 --- a/src/status_im/log_level/core.cljs +++ b/src/status_im/log_level/core.cljs @@ -2,7 +2,6 @@ (:require [re-frame.core :as re-frame] [status-im.multiaccounts.update.core :as multiaccounts.update] - [status-im.node.core :as node] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -11,13 +10,11 @@ [{:keys [db now] :as cofx} log-level] (let [old-log-level (get-in db [:profile/profile :log-level])] (when (not= old-log-level log-level) - (rf/merge cofx - (multiaccounts.update/multiaccount-update - :log-level - log-level - {}) - (node/prepare-new-config - {:on-success #(re-frame/dispatch [:logout])}))))) + (multiaccounts.update/multiaccount-update + cofx + :log-level + log-level + {:on-success #(re-frame/dispatch [:logout])})))) (rf/defn show-change-log-level-confirmation {:events [:log-level.ui/log-level-selected]} diff --git a/src/status_im/multiaccounts/create/core.cljs b/src/status_im/multiaccounts/create/core.cljs index bbb918c40275..0616daddda6b 100644 --- a/src/status_im/multiaccounts/create/core.cljs +++ b/src/status_im/multiaccounts/create/core.cljs @@ -2,17 +2,10 @@ (:require [native-module.core :as native-module] [re-frame.core :as re-frame] - [status-im.data-store.settings :as data-store.settings] - [status-im.node.core :as node] - [status-im.ui.components.colors :as colors] [status-im.utils.deprecated-types :as types] [status-im.utils.signing-phrase.core :as signing-phrase] - [status-im2.config :as config] [status-im2.constants :as constants] - [utils.ethereum.eip.eip55 :as eip55] - [utils.i18n :as i18n] - [utils.re-frame :as rf] - [utils.security.core :as security])) + [utils.re-frame :as rf])) (defn normalize-derived-data-keys [derived-data] @@ -82,134 +75,3 @@ (rf/defn save-multiaccount-and-login-with-keycard [_ args] {:keycard/save-multiaccount-and-login args}) - -(re-frame/reg-fx - ::save-account-and-login - (fn [[key-uid multiaccount-data hashed-password settings config accounts-data]] - (native-module/save-account-and-login - key-uid - multiaccount-data - hashed-password - settings - config - accounts-data))) - -(rf/defn save-account-and-login - [_ key-uid multiaccount-data password settings node-config accounts-data] - {::save-account-and-login [key-uid - (types/clj->json multiaccount-data) - password - (types/clj->json settings) - node-config - (types/clj->json accounts-data)]}) - -(defn prepare-accounts-data - [multiaccount] - [(let [{:keys [public-key address]} - (get-in multiaccount [:derived constants/path-default-wallet-keyword])] - {:public-key public-key - :address (eip55/address->checksum address) - :color colors/blue-persist - :wallet true - :path constants/path-default-wallet - :name (i18n/label :t/main-account)}) - (let [{:keys [compressed-key public-key address name]} - (get-in multiaccount [:derived constants/path-whisper-keyword])] - {:public-key public-key - :compressed-key compressed-key - :address (eip55/address->checksum address) - :name name - :path constants/path-whisper - :chat true})]) - -(rf/defn on-multiaccount-created - [{:keys [signing-phrase random-guid-generator db] :as cofx} - {:keys [address chat-key keycard-instance-uid key-uid - keycard-pairing keycard-paired-on mnemonic recovered] - :as multiaccount} - password - {:keys [save-mnemonic? login?] :or {login? true save-mnemonic? false}}] - (let [[wallet-account - {:keys [public-key - compressed-key - name]} :as accounts-data] - (prepare-accounts-data - multiaccount) - multiaccount-data {:name name - :address address - :key-uid key-uid - :keycard-pairing keycard-pairing} - keycard-multiaccount? (boolean keycard-pairing) - eip1581-address (get-in multiaccount - [:derived - constants/path-eip1581-keyword - :address]) - new-multiaccount - (cond-> - (merge - {;; address of the master key - :address address - ;; sha256 of master public key - :key-uid key-uid - ;; The address from which we derive any wallet - :wallet-root-address - (get-in multiaccount - [:derived - constants/path-wallet-root-keyword - :address]) - :name name - ;; public key of the chat account - :public-key public-key - ;; compressed key of the chat account - :compressed-key compressed-key - ;; default address for Dapps - :dapps-address (:address wallet-account) - :latest-derived-path 0 - :signing-phrase signing-phrase - :backup-enabled? true - :installation-id (random-guid-generator) - ;; default mailserver (history node) setting - :use-mailservers? true - :recovered recovered} - config/default-multiaccount) - ;; The address from which we derive any chat - ;; account/encryption keys - eip1581-address - (assoc :eip1581-address eip1581-address) - save-mnemonic? - (assoc :mnemonic mnemonic) - keycard-multiaccount? - (assoc :keycard-instance-uid keycard-instance-uid - :keycard-pairing keycard-pairing - :keycard-paired-on keycard-paired-on)) - db (assoc db - :profile/login {:key-uid key-uid - :name name - :password password - :creating? true - :processing true} - :profile/profile new-multiaccount - :profile/wallet-accounts [wallet-account] - :networks/current-network config/default-network - :networks/networks (data-store.settings/rpc->networks config/default-networks)) - settings (assoc new-multiaccount - :networks/current-network config/default-network - :networks/networks config/default-networks)] - (rf/merge cofx - {:db db} - (if keycard-multiaccount? - (save-multiaccount-and-login-with-keycard - {:key-uid key-uid - :multiaccount-data multiaccount-data - :password password - :settings settings - :node-config (node/get-new-config db) - :accounts-data accounts-data - :chat-key chat-key}) - (save-account-and-login - key-uid - multiaccount-data - (native-module/sha3 (security/safe-unmask-data password)) - settings - (node/get-new-config db) - accounts-data))))) diff --git a/src/status_im/network/core.cljs b/src/status_im/network/core.cljs index 463758209ad9..2fb9ad18863e 100644 --- a/src/status_im/network/core.cljs +++ b/src/status_im/network/core.cljs @@ -2,7 +2,6 @@ (:require [clojure.string :as string] [re-frame.core :as re-frame] - [status-im.node.core :as node] [status-im2.navigation.events :as navigation] [utils.ethereum.chain :as chain] [utils.i18n :as i18n] @@ -117,12 +116,10 @@ (rf/defn save-network-settings {:events [::save-network-settings-pressed]} [{:keys [db] :as cofx} network] - (rf/merge cofx - {:db (assoc db :networks/current-network network) - :json-rpc/call [{:method "settings_saveSetting" - :params [:networks/current-network network] - :on-success #()}]} - (node/prepare-new-config {:on-success #(re-frame/dispatch [:logout])}))) + {:db (assoc db :networks/current-network network) + :json-rpc/call [{:method "settings_saveSetting" + :params [:networks/current-network network] + :on-success #(re-frame/dispatch [:logout])}]}) (rf/defn remove-network {:events [::remove-network-confirmed]} diff --git a/src/status_im/node/core.cljs b/src/status_im/node/core.cljs index 50d581e9e5e1..8f36955965b1 100644 --- a/src/status_im/node/core.cljs +++ b/src/status_im/node/core.cljs @@ -1,12 +1,9 @@ (ns status-im.node.core (:require [clojure.string :as string] - [native-module.core :as native-module] - [re-frame.core :as re-frame] [react-native.platform :as platform] [status-im.utils.deprecated-types :as types] - [status-im2.config :as config] - [utils.re-frame :as rf])) + [status-im2.config :as config])) (defn- add-custom-bootnodes [config network all-bootnodes] @@ -196,32 +193,4 @@ :always (add-log-level log-level)))) -(defn get-new-config - [db] - (types/clj->json (get-multiaccount-node-config db))) - -(rf/defn save-new-config - "Saves a new status-go config for the current account - This RPC method is the only way to change the node config of an account. - NOTE: it is better used indirectly through `prepare-new-config`, - which will take care of building up the proper config based on settings in -app-db" - {:events [::save-new-config]} - [_ config {:keys [on-success]}] - {:json-rpc/call [{:method "settings_saveSetting" - :params [:node-config config] - :on-success on-success}]}) - -(rf/defn prepare-new-config - "Use this function to apply settings to the current account node config" - [{:keys [db]} {:keys [on-success]}] - (let [key-uid (get-in db [:profile/profile :key-uid])] - {::prepare-new-config [key-uid - (get-new-config db) - #(re-frame/dispatch - [::save-new-config % {:on-success on-success}])]})) - -(re-frame/reg-fx - ::prepare-new-config - (fn [[key-uid config callback]] - (native-module/prepare-dir-and-update-config key-uid config callback))) + diff --git a/src/status_im/ui/screens/advanced_settings/views.cljs b/src/status_im/ui/screens/advanced_settings/views.cljs index 3a70aa54d201..9655cb5de51c 100644 --- a/src/status_im/ui/screens/advanced_settings/views.cljs +++ b/src/status_im/ui/screens/advanced_settings/views.cljs @@ -10,9 +10,8 @@ (defn- normal-mode-settings-data [{:keys [network-name current-log-level - waku-bloom-filter-mode + light-client-enabled? transactions-management-enabled? - wakuv2-flag current-fleet webview-debug]}] (keep @@ -49,19 +48,12 @@ :accessory :text :accessory-text current-fleet :chevron true} - (if wakuv2-flag - {:size :small - :title (i18n/label :t/wakuv2-settings) - :accessibility-label :wakuv2-settings-button - :on-press - #(re-frame/dispatch [:wakuv2.ui/enter-settings-pressed]) - :chevron true} - {:size :small - :title (i18n/label :t/bootnodes) - :accessibility-label :bootnodes-settings-button - :on-press - #(re-frame/dispatch [:navigate-to :bootnodes-settings]) - :chevron true}) + {:size :small + :title (i18n/label :t/wakuv2-settings) + :accessibility-label :wakuv2-settings-button + :on-press + #(re-frame/dispatch [:wakuv2.ui/enter-settings-pressed]) + :chevron true} {:size :small :title (i18n/label :t/rpc-usage-info) :accessibility-label :rpc-usage-info @@ -76,6 +68,15 @@ :on-press #(re-frame/dispatch [:navigate-to :peers-stats]) :chevron true} + {:size :small + :title (i18n/label :t/light-client-enabled) + :accessibility-label :light-client-enabled + :container-margin-bottom 8 + :on-press + #(re-frame/dispatch + [:wakuv2.ui/toggle-light-client (not light-client-enabled?)]) + :accessory :switch + :active light-client-enabled?} {:size :small :title (i18n/label :t/transactions-management-enabled) :accessibility-label :transactions-management-enabled @@ -94,16 +95,7 @@ #(re-frame/dispatch [:profile.settings/change-webview-debug (not webview-debug)]) :accessory :switch - :active webview-debug} - {:size :small - :title (i18n/label :t/waku-bloom-filter-mode) - :accessibility-label :waku-bloom-filter-mode-settings-switch - :container-margin-bottom 8 - :on-press - #(re-frame/dispatch - [:multiaccounts.ui/waku-bloom-filter-mode-switched (not waku-bloom-filter-mode)]) - :accessory :switch - :active waku-bloom-filter-mode}])) + :active webview-debug}])) (defn- flat-list-data [options] @@ -117,10 +109,9 @@ (views/defview advanced-settings [] - (views/letsubs [{:keys [webview-debug]} [:profile/profile] + (views/letsubs [webview-debug [:profile/webview-debug] + light-client-enabled? [:profile/light-client-enabled?] network-name [:network-name] - waku-bloom-filter-mode [:waku/bloom-filter-mode] - wakuv2-flag [:waku/v2-flag] transactions-management-enabled? [:wallet-legacy/transactions-management-enabled?] current-log-level [:log-level/current-log-level] current-fleet [:fleets/current-fleet]] @@ -129,10 +120,9 @@ {:network-name network-name :current-log-level current-log-level :transactions-management-enabled? transactions-management-enabled? + :light-client-enabled? light-client-enabled? :current-fleet current-fleet :dev-mode? false - :wakuv2-flag wakuv2-flag - :waku-bloom-filter-mode waku-bloom-filter-mode :webview-debug webview-debug}) :key-fn (fn [_ i] (str i)) :render-fn render-item}])) diff --git a/src/status_im/waku/core.cljs b/src/status_im/waku/core.cljs index 47f47861488a..ee1b7667cba2 100644 --- a/src/status_im/waku/core.cljs +++ b/src/status_im/waku/core.cljs @@ -2,22 +2,11 @@ (:require [clojure.string :as string] [re-frame.core :as re-frame] - [status-im.multiaccounts.update.core :as multiaccounts.update] - [status-im.node.core :as node] [status-im2.navigation.events :as navigation] + [taoensso.timbre :as log] [utils.i18n :as i18n] [utils.re-frame :as rf])) -(rf/defn switch-waku-bloom-filter-mode - {:events [:multiaccounts.ui/waku-bloom-filter-mode-switched]} - [cofx enabled?] - (rf/merge cofx - (multiaccounts.update/multiaccount-update - :waku-bloom-filter-mode - enabled? - {}) - (node/prepare-new-config - {:on-success #(re-frame/dispatch [:logout])}))) (def address-regex #"/ip4/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/tcp/\d{1,5}/p2p/[a-zA-Z0-9]+") @@ -108,13 +97,16 @@ vals (map #(vector (:name %1) (:address %1))) (into {}))] - (rf/merge cofx - {:db (-> db - (assoc-in [:profile/profile :wakuv2-config :CustomNodes] new-nodes) - (dissoc :wakuv2-nodes/manage :wakuv2-nodes/list)) - :dispatch [:navigate-back]} - (node/prepare-new-config - {:on-success #(re-frame/dispatch [:logout])})))) + {:db (-> db + (assoc-in [:profile/profile :wakuv2-config :CustomNodes] new-nodes) + (dissoc :wakuv2-nodes/manage :wakuv2-nodes/list)) + :json-rpc/call [{:method "wakuext_setCustomNodes" + :params [{:customNodes new-nodes}] + :on-success #(log/info "updated custom nodes") + :on-error #(log/error "failed to set custom nodes" + {:error % + :custom-nodes new-nodes})}] + :dispatch [:navigate-back]})) (rf/defn show-delete-node-confirmation {:events [:wakuv2.ui/delete-pressed]} @@ -131,3 +123,17 @@ (rf/merge cofx (delete id) (navigation/navigate-back))) + +(rf/defn toggle-light-client + {:events [:wakuv2.ui/toggle-light-client]} + [{:keys [db]} enabled?] + {:db (assoc-in db [:profile/profile :wakuv2-config :LightClient] enabled?) + + :json-rpc/call [{:method "wakuext_setLightClient" + :params [{:enabled enabled?}] + :on-success (fn [] + (log/info "light client set successfully" enabled?) + (re-frame/dispatch [:logout])) + :on-error #(log/error "failed to set light client" + {:error % + :enabled? enabled?})}]}) diff --git a/src/status_im2/common/home/actions/view.cljs b/src/status_im2/common/home/actions/view.cljs index 3325f9f831e6..96dde9d94e23 100644 --- a/src/status_im2/common/home/actions/view.cljs +++ b/src/status_im2/common/home/actions/view.cljs @@ -6,8 +6,10 @@ [status-im2.common.confirmation-drawer.view :as confirmation-drawer] [status-im2.common.mute-drawer.view :as mute-drawer] [status-im2.common.muting.helpers :refer [format-mute-till]] + [status-im2.config :as config] [status-im2.constants :as constants] - [status-im2.contexts.communities.actions.chat.view :as chat-actions] + [status-im2.contexts.chat.actions.view :as chat-actions] + [status-im2.contexts.communities.actions.chat.view :as communities-chat-actions] [status-im2.contexts.contacts.drawers.nickname-drawer.view :as nickname-drawer] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -253,16 +255,6 @@ :chevron? true :add-divider? add-divider?})) -;; TODO(OmarBasem): Requires design input. -(defn fetch-messages-entry - [] - (entry {:icon :i/save - :label (i18n/label :t/fetch-messages) - :on-press #(js/alert "TODO: to be implemented, requires design input") - :danger? false - :accessibility-label :fetch-messages - :sub-label nil - :chevron? true})) (defn remove-from-contacts-entry [contact] @@ -419,8 +411,8 @@ [(mark-as-read-entry chat-id needs-divider?) (mute-chat-entry chat-id chat-type muted-till) (notifications-entry false) - (when inside-chat? - (fetch-messages-entry)) + (when (and config/fetch-messages-enabled? inside-chat?) + (chat-actions/fetch-messages chat-id)) (when (or (not group-chat) public?) (show-qr-entry)) (when-not group-chat @@ -481,7 +473,7 @@ constants/private-group-chat-type [private-group-chat-actions chat inside-chat?] constants/community-chat-type - [chat-actions/actions chat inside-chat?] + [communities-chat-actions/actions chat inside-chat?] nil)) (defn group-details-actions diff --git a/src/status_im2/config.cljs b/src/status_im2/config.cljs index aead3d4755c2..e8d72dec7cd7 100644 --- a/src/status_im2/config.cljs +++ b/src/status_im2/config.cljs @@ -170,3 +170,4 @@ (def default-kdf-iterations 3200) (def shell-navigation-disabled? false) +(def fetch-messages-enabled? (enabled? (get-config :FETCH_MESSAGES_ENABLED "1"))) diff --git a/src/status_im2/contexts/chat/actions/view.cljs b/src/status_im2/contexts/chat/actions/view.cljs index 7a5753438521..4c8cb1281650 100644 --- a/src/status_im2/contexts/chat/actions/view.cljs +++ b/src/status_im2/contexts/chat/actions/view.cljs @@ -4,6 +4,19 @@ [utils.i18n :as i18n] [utils.re-frame :as rf])) +(defn fetch-messages! + [chat-id] + (rf/dispatch [:hide-bottom-sheet]) + (rf/dispatch [:chat/fetch-messages chat-id])) + +(defn fetch-messages + [chat-id] + {:icon :i/download + :right-icon :i/chevron-right + :accessibility-label :chat-fetch-messages + :on-press (partial fetch-messages! chat-id) + :label (i18n/label :t/fetch-messages)}) + (defn new-chat [] [quo/action-drawer diff --git a/src/status_im2/contexts/chat/events.cljs b/src/status_im2/contexts/chat/events.cljs index 9819f370a698..1f76e8cb3ef0 100644 --- a/src/status_im2/contexts/chat/events.cljs +++ b/src/status_im2/contexts/chat/events.cljs @@ -449,3 +449,12 @@ {:events [:chat/check-last-chat]} [{:keys [db]}] {:chat/open-last-chat (get-in db [:profile/profile :key-uid])}) + +(rf/defn fetch-messages + {:events [:chat/fetch-messages]} + [_ chat-id] + {:json-rpc/call [{:method "wakuext_fetchMessages" + :params [{:id chat-id}] + :on-success #() + :on-error #(log/error "failed to fetch messages for chat" chat-id %)}]}) + diff --git a/src/status_im2/contexts/communities/actions/chat/view.cljs b/src/status_im2/contexts/communities/actions/chat/view.cljs index 0dc75d41702f..1f241027905b 100644 --- a/src/status_im2/contexts/communities/actions/chat/view.cljs +++ b/src/status_im2/contexts/communities/actions/chat/view.cljs @@ -4,6 +4,8 @@ [status-im2.common.mute-drawer.view :as mute-drawer] [status-im2.common.muting.helpers :refer [format-mute-till]] [status-im2.common.not-implemented :as not-implemented] + [status-im2.config :as config] + [status-im2.contexts.chat.actions.view :as chat-actions] [utils.i18n :as i18n] [utils.re-frame :as rf])) @@ -83,13 +85,6 @@ :on-press not-implemented/alert :label (i18n/label :t/pinned-messages)}) -(defn- action-fetch-messages - [] - {:icon :i/download - :right-icon :i/chevron-right - :accessibility-label :chat-fetch-messages - :on-press not-implemented/alert - :label (i18n/label :t/fetch-messages)}) (defn- action-invite-people [] @@ -141,7 +136,8 @@ (action-mark-as-read) (action-toggle-muted chat-id muted muted-till chat-type) (action-notification-settings) - (action-fetch-messages) + (when config/fetch-messages-enabled? + (chat-actions/fetch-messages chat-id)) (action-invite-people) (action-qr-code) (action-share)]]] diff --git a/src/status_im2/contexts/profile/rpc.cljs b/src/status_im2/contexts/profile/rpc.cljs index a7c6a6d6b9ed..c6bb09db7b30 100644 --- a/src/status_im2/contexts/profile/rpc.cljs +++ b/src/status_im2/contexts/profile/rpc.cljs @@ -1,11 +1,18 @@ (ns status-im2.contexts.profile.rpc (:require + clojure.set [clojure.string :as string] [utils.ens.core :as utils.ens])) +(defn rpc->wakuv2-config + [wakuv2-config] + (-> wakuv2-config + (clojure.set/rename-keys {:LightClient :light-client}))) + (defn rpc->profiles-overview [{:keys [customizationColor keycard-pairing] :as profile}] (-> profile + (update :wakuv2-config rpc->wakuv2-config) (dissoc :customizationColor) (assoc :customization-color (keyword customizationColor)) (assoc :ens-name? (utils.ens/is-valid-eth-name? (:name profile))) diff --git a/src/status_im2/subs/profile.cljs b/src/status_im2/subs/profile.cljs index 5d1a1a152826..8d93cfdf4e83 100644 --- a/src/status_im2/subs/profile.cljs +++ b/src/status_im2/subs/profile.cljs @@ -63,6 +63,18 @@ (fn [{:keys [public-key]}] public-key)) +(re-frame/reg-sub + :profile/webview-debug + :<- [:profile/profile] + (fn [{:keys [webview-debug]}] + webview-debug)) + +(re-frame/reg-sub + :profile/light-client-enabled? + :<- [:profile/profile] + (fn [profile] + (get-in profile [:wakuv2-config :LightClient]))) + (re-frame/reg-sub :multiaccount/contact :<- [:profile/profile] diff --git a/status-go-version.json b/status-go-version.json index 67246856d09c..0b19e2159f06 100644 --- a/status-go-version.json +++ b/status-go-version.json @@ -3,7 +3,7 @@ "_comment": "Instead use: scripts/update-status-go.sh ", "owner": "status-im", "repo": "status-go", - "version": "v0.171.11", - "commit-sha1": "8a4c2d8d2f17117aa0a00338e83b0f753ebf1328", - "src-sha256": "160qnl9dsl1ypvqg9w6z8wps4fvgq3qxi16piymhrlzgssdwkz8h" + "version": "v0.171.21", + "commit-sha1": "5de4057a6a6ce2d8b25a0e0ec952ad88fd8c2584", + "src-sha256": "1c298czx103jc7mgwxlq6fzjxwmc0ss8a1wf5zbm8a2858giksvx" } diff --git a/translations/en.json b/translations/en.json index 43f88f4e11d4..9b844f6dd4d4 100644 --- a/translations/en.json +++ b/translations/en.json @@ -2373,6 +2373,7 @@ "edit-derivation-path": "Edit derivation path", "path-format": "Path format", "reset": "Reset", + "light-client-enabled": "Light client", "reveal-address": "Reveal address", "derive-addresses": "Derive addresses", "sign transactions": "sign transactions",