diff --git a/src/status_im/chat/models/input.cljs b/src/status_im/chat/models/input.cljs index 71c5db4b8b..ae9d8c3620 100644 --- a/src/status_im/chat/models/input.cljs +++ b/src/status_im/chat/models/input.cljs @@ -70,13 +70,12 @@ [{:keys [db] :as cofx} text-input-ref {:keys [primary-name searched-text match public-key] :as user}] (let [chat-id (:current-chat-id db) text (get-in db [:chat/inputs chat-id :input-text]) - method "wakuext_chatMentionNewInputTextWithMention" - params [chat-id text primary-name]] + method "wakuext_chatMentionSelectMention" + params [chat-id text primary-name public-key]] {:json-rpc/call [{:method method :params params - :on-success #(rf/dispatch [:mention/on-new-input-text-with-mentions-success % - primary-name text-input-ref match searched-text - public-key]) + :on-success #(rf/dispatch [:mention/on-select-mention-success % + primary-name match searched-text public-key]) :on-error #(rf/dispatch [:mention/on-error {:method method :params params} %])}]})) @@ -250,21 +249,21 @@ [{{:keys [current-chat-id] :as db} :db :as cofx}] (let [{:keys [input-text metadata]} (get-in db [:chat/inputs current-chat-id]) editing-message (:editing-message metadata) - method "wakuext_chatMentionCheckMentions" + method "wakuext_chatMentionReplaceWithPublicKey" params [current-chat-id input-text]] {:json-rpc/call [{:method method :params params :on-error #(rf/dispatch [:mention/on-error {:method method :params params} %]) - :on-success #(rf/dispatch [:mention/on-check-mentions-success + :on-success #(rf/dispatch [:mention/on-replace-with-public-key-success current-chat-id editing-message input-text %])}]})) -(rf/defn on-check-mentions-success - {:events [:mention/on-check-mentions-success]} +(rf/defn on-replace-with-public-key-success + {:events [:mention/on-replace-with-public-key-success]} [{:keys [db] :as cofx} current-chat-id editing-message input-text new-text] - (log/debug "[mentions] on-check-mentions-success" + (log/debug "[mentions] on-replace-with-public-key-success" {:chat-id current-chat-id :editing-message editing-message :input-text input-text diff --git a/src/status_im/chat/models/mentions.cljs b/src/status_im/chat/models/mentions.cljs index a295681f10..4079185904 100644 --- a/src/status_im/chat/models/mentions.cljs +++ b/src/status_im/chat/models/mentions.cljs @@ -1,11 +1,7 @@ (ns status-im.chat.models.mentions (:require [clojure.set :as set] - [quo.react :as react] - [quo.react-native :as rn] - [re-frame.core :as re-frame] [utils.re-frame :as rf] - [taoensso.timbre :as log] - [native-module.core :as native-module])) + [taoensso.timbre :as log])) (defn- transfer-input-segments [segments] @@ -126,47 +122,21 @@ (assoc-in [:chats/mentions chat-id :mentions] state) (assoc-in [:chat/inputs-with-mentions chat-id] input-segments))})) -(rf/defn recheck-at-idxs - [{:keys [db]} public-key] - (let [chat-id (:current-chat-id db) - text (get-in db [:chat/inputs chat-id :input-text]) - params [chat-id text public-key] - method "wakuext_chatMentionRecheckAtIdxs"] - {:json-rpc/call [{:method method - :params params - :on-success #(rf/dispatch [:mention/on-recheck-at-idxs-success %]) - :on-error #(rf/dispatch [:mention/on-error - {:method method - :params params} %])}]})) - -(rf/defn on-recheck-at-idxs-success - {:events [:mention/on-recheck-at-idxs-success]} - [{:keys [db]} result] - (log/debug "[mentions] on-recheck-at-idxs-success" {:result result}) - (let [{:keys [input-segments state chat-id]} (transfer-mention-result result)] - {:db (-> db - (assoc-in [:chats/mentions chat-id :mentions] state) - (assoc-in [:chat/inputs-with-mentions chat-id] input-segments))})) - -(rf/defn reset-text-input-cursor - [_ ref cursor] - {::reset-text-input-cursor [ref cursor]}) - -(rf/defn on-new-input-text-with-mentions-success - {:events [:mention/on-new-input-text-with-mentions-success]} - [{:keys [db] :as cofx} result primary-name text-input-ref match searched-text public-key] - (log/debug "[mentions] on-new-input-text-with-mentions-success" +(rf/defn on-select-mention-success + {:events [:mention/on-select-mention-success]} + [{:keys [db] :as cofx} result primary-name match searched-text public-key] + (log/debug "[mentions] on-select-mention-success" {:result result :primary-name primary-name :match match :searched-text searched-text :public-key public-key}) - (let [{:keys [new-text chat-id]} (transfer-mention-result result)] - (rf/merge - cofx - {:db (assoc-in db [:chats/mention-suggestions chat-id] nil) - :dispatch [:chat.ui/set-chat-input-text new-text chat-id]} - (recheck-at-idxs public-key)))) + (let [{:keys [new-text chat-id state input-segments]} (transfer-mention-result result)] + {:db (-> db + (assoc-in [:chats/mentions chat-id :mentions] state) + (assoc-in [:chat/inputs-with-mentions chat-id] input-segments) + (assoc-in [:chats/mention-suggestions chat-id] nil)) + :dispatch [:chat.ui/set-chat-input-text new-text chat-id]})) (rf/defn clear-suggestions [{:keys [db]}] @@ -189,38 +159,3 @@ :on-error #(log/error "Error while calling wakuext_chatMentionClearMentions" {:error %})}]} (clear-suggestions)))) - -(rf/defn check-selection - {:events [:mention/on-selection-change]} - [{:keys [db]} - {:keys [start end]}] - (let [chat-id (:current-chat-id db) - text (get-in db [:chat/inputs chat-id :input-text]) - params [chat-id text start end] - method "wakuext_chatMentionHandleSelectionChange"] - (when text - (log/debug "[mentions] check-selection" {:params params}) - {:json-rpc/call [{:method method - :params params - :on-success #(rf/dispatch [:mention/on-handle-selection-change-success %]) - :on-error #(rf/dispatch [:mention/on-error - {:method method - :params params} %])}]}))) - -(rf/defn on-check-selection-success - {:events [:mention/on-handle-selection-change-success]} - [{:keys [db]} result] - (log/debug "[mentions] on-check-selection-success" {:result result}) - (let [{:keys [state chat-id mentionable-users input-segments]} (transfer-mention-result result)] - {:db (-> db - (assoc-in [:chats/mention-suggestions chat-id] mentionable-users) - (assoc-in [:chats/mentions chat-id :mentions] state) - (assoc-in [:chat/inputs-with-mentions chat-id] input-segments))})) - -(re-frame/reg-fx - ::reset-text-input-cursor - (fn [[ref cursor]] - (when ref - (native-module/reset-keyboard-input - (rn/find-node-handle (react/current-ref ref)) - cursor)))) diff --git a/src/status_im2/contexts/chat/composer/effects.cljs b/src/status_im2/contexts/chat/composer/effects.cljs index 7536108620..5fab5b8cfe 100644 --- a/src/status_im2/contexts/chat/composer/effects.cljs +++ b/src/status_im2/contexts/chat/composer/effects.cljs @@ -8,7 +8,7 @@ [status-im2.contexts.chat.composer.keyboard :as kb] [utils.number :as utils.number] [oops.core :as oops] - [utils.re-frame :as rf])) + [utils.debounce :as debounce])) (defn reenter-screen-effect [{:keys [text-value saved-cursor-position maximized?]} @@ -159,7 +159,7 @@ (when @input-ref (.setNativeProps ^js @input-ref (clj->js {:text input-text}))) (reset! text-value input-text) - (rf/dispatch [:mention/on-change-text input-text]))) + (debounce/debounce-and-dispatch [:mention/on-change-text input-text] 300))) [input-text])) (defn did-mount diff --git a/src/status_im2/contexts/chat/composer/handlers.cljs b/src/status_im2/contexts/chat/composer/handlers.cljs index 69748a2f21..5e476b6d5b 100644 --- a/src/status_im2/contexts/chat/composer/handlers.cljs +++ b/src/status_im2/contexts/chat/composer/handlers.cljs @@ -8,7 +8,8 @@ [status-im2.contexts.chat.composer.keyboard :as kb] [status-im2.contexts.chat.composer.utils :as utils] [status-im2.contexts.chat.composer.selection :as selection] - [utils.re-frame :as rf])) + [utils.re-frame :as rf] + [utils.debounce :as debounce])) (defn focus [{:keys [input-ref] :as props} @@ -118,7 +119,7 @@ (@record-reset-fn) (reset! recording? false)) (rf/dispatch [:chat.ui/set-chat-input-text text]) - (rf/dispatch [:mention/on-change-text text])) + (debounce/debounce-and-dispatch [:mention/on-change-text text] 300)) (defn selection-change [event diff --git a/status-go-version.json b/status-go-version.json index 21478d9f26..a83467afe7 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.150.2", - "commit-sha1": "31144ed5a38589fd129945b634f54e800b39645a", - "src-sha256": "0jh6bidhf0gs15samqh5whw4iigr7ql11cx0v6ma7achr6j4r1d2" + "version": "v0.151.4", + "commit-sha1": "39f486a47ad04a224416ff23f06363bc4991d7e1", + "src-sha256": "04djwki409xcjsqgv59k5vh1nwfw7hxq64kh3kh6m4cz14symqk3" }