diff --git a/src/status_im/data_store/core.cljs b/src/status_im/data_store/core.cljs index 987a987b21..5feb7b09a3 100644 --- a/src/status_im/data_store/core.cljs +++ b/src/status_im/data_store/core.cljs @@ -197,10 +197,8 @@ #(re-frame/dispatch [::verify-success % realm-error])))) (fx/defn handle-change-multiaccount-success - {:events [::multiaccount-change-success] - :interceptors [(re-frame/inject-cofx :data-store/all-chat-requests-ranges)]} - [{:data-store/keys [mailserver-ranges] :as cofx}] - (protocol/initialize-protocol cofx {:mailserver-ranges mailserver-ranges})) + {:events [::multiaccount-change-success]} + [cofx]) (defn change-multiaccount! [address password create-database-if-not-exist?] diff --git a/src/status_im/data_store/mailservers.cljs b/src/status_im/data_store/mailservers.cljs index 645076bd80..d246b595d1 100644 --- a/src/status_im/data_store/mailservers.cljs +++ b/src/status_im/data_store/mailservers.cljs @@ -42,27 +42,3 @@ :params [chat-id] :on-success #(log/info "deleted gaps successfully") :on-failure #(log/error "failed to delete gap" %)}]}) - -(defn save-chat-requests-range - [chat-requests-range] - (fn [realm] - (log/debug "saving ranges" chat-requests-range) - (core/create realm :chat-requests-range chat-requests-range true))) - -(re-frame/reg-cofx - :data-store/all-chat-requests-ranges - (fn [cofx _] - (assoc cofx :data-store/mailserver-ranges - (reduce (fn [acc {:keys [chat-id] :as range}] - (assoc acc chat-id range)) - {} - (-> @core/account-realm - (core/get-all :chat-requests-range) - (core/all-clj :chat-requests-range)))))) - -(defn delete-range - [chat-id] - (fn [realm] - (log/debug "deleting range" chat-id) - (core/delete realm - (core/get-by-field realm :chat-requests-range :chat-id chat-id)))) diff --git a/src/status_im/ethereum/json_rpc.cljs b/src/status_im/ethereum/json_rpc.cljs index a3dd498232..42e334c8d2 100644 --- a/src/status_im/ethereum/json_rpc.cljs +++ b/src/status_im/ethereum/json_rpc.cljs @@ -81,7 +81,10 @@ "mailservers_deleteMailserver" {} "mailservers_addMailserverTopic" {} "mailservers_getMailserverTopics" {} - "mailservers_deleteMailserverTopic" {}}) + "mailservers_deleteMailserverTopic" {} + "mailservers_addChatRequestRange" {} + "mailservers_getChatRequestRanges" {} + "mailservers_deleteChatRequestRange" {}}) (defn call [{:keys [method params on-success on-error] :as p}] diff --git a/src/status_im/mailserver/core.cljs b/src/status_im/mailserver/core.cljs index 109284d621..bbd21902f4 100644 --- a/src/status_im/mailserver/core.cljs +++ b/src/status_im/mailserver/core.cljs @@ -491,7 +491,11 @@ (fx/defn remove-range [{:keys [db]} chat-id] {:db (update db :mailserver/ranges dissoc chat-id) - :data-store/tx [(data-store.mailservers/delete-range chat-id)]}) + ::json-rpc/call + [{:method "mailservers_deleteChatRequestRange" + :params [chat-id] + :on-success #(log/debug "deleted chat request range successfully") + :on-failure #(log/error "failed to delete chat request range" %)}]}) (defn update-mailserver-topic [{:keys [last-request] :as config} @@ -609,11 +613,16 @@ (< from lowest-request-from)) (assoc :lowest-request-from from))]))) chat-ids)] - (fx/merge - cofx - {:db (update db :mailserver/ranges merge updated-ranges) - :data-store/tx (map data-store.mailservers/save-chat-requests-range - (vals updated-ranges))}))) + (fx/merge cofx + {:db (update db :mailserver/ranges merge updated-ranges) + ::json-rpc/call + (mapv (fn [chat-requests-range] + {:method "mailservers_addChatRequestRange" + :params [chat-requests-range] + :on-success #() + :on-failure + #(log/error "failed to save chat request range" %)}) + (vals updated-ranges))}))) (defn prepare-new-gaps [new-gaps ranges {:keys [from to] :as req} chat-ids] (into diff --git a/src/status_im/multiaccounts/login/core.cljs b/src/status_im/multiaccounts/login/core.cljs index 172dc69c68..e3420a9b82 100644 --- a/src/status_im/multiaccounts/login/core.cljs +++ b/src/status_im/multiaccounts/login/core.cljs @@ -164,6 +164,8 @@ ::json-rpc/call [{:method "mailservers_getMailserverTopics" :on-success #(re-frame/dispatch [::protocol/initialize-protocol {:mailserver-topics (or % {})}])} + {:method "mailservers_getChatRequestRanges" + :on-success #(re-frame/dispatch [::protocol/initialize-protocol {:mailserver-ranges (or % {})}])} {:method "browsers_getBrowsers" :on-success #(re-frame/dispatch [::initialize-browsers %])} {:method "permissions_getDappPermissions" diff --git a/src/status_im/protocol/core.cljs b/src/status_im/protocol/core.cljs index 356fb35a7a..ca0f8d6021 100644 --- a/src/status_im/protocol/core.cljs +++ b/src/status_im/protocol/core.cljs @@ -59,6 +59,15 @@ {} mailserver-topics))) +(defn add-mailserver-ranges + [db mailserver-ranges] + (assoc db + :mailserver/ranges + (reduce (fn [acc {:keys [chat-id] :as range}] + (assoc acc chat-id range)) + {} + mailserver-ranges))) + (fx/defn initialize-protocol {:events [::initialize-protocol]} [{:keys [db] :as cofx} @@ -77,7 +86,7 @@ (fx/merge cofx {:db (cond-> db mailserver-ranges - (assoc :mailserver/ranges mailserver-ranges) + (add-mailserver-ranges mailserver-ranges) mailserver-topics (add-mailserver-topics mailserver-topics) mailservers diff --git a/status-go-version.json b/status-go-version.json index 91f392ca21..b80d694cdd 100644 --- a/status-go-version.json +++ b/status-go-version.json @@ -3,6 +3,6 @@ "owner": "status-im", "repo": "status-go", "version": "develop", - "commit-sha1": "9df64efe2c3d88596ab5cfe358741ed8f9be86b7", - "src-sha256": "0yc76v2kcamxjv7g7b9x4ywmbzch4azzb4sj49rhcdkg0wz8qi5j" + "commit-sha1": "76d184b4c9e666383ba54303b3c4a438ac4519de", + "src-sha256": "141glfhal3chlykz5m3jbmzrv10rprly9yk4xf1ss4a3hd8hj90c" } diff --git a/test/cljs/status_im/test/chat/models.cljs b/test/cljs/status_im/test/chat/models.cljs index 51303fb715..ce1a76d225 100644 --- a/test/cljs/status_im/test/chat/models.cljs +++ b/test/cljs/status_im/test/chat/models.cljs @@ -113,10 +113,10 @@ (testing "it sets the chat as inactive" (let [actual (chat/remove-chat cofx chat-id)] (is (= false (get-in actual [:db :chats chat-id :is-active]))))) - (testing "it adds the relevant transactions for realm" + (testing "it makes the relevant json-rpc calls" (let [actual (chat/remove-chat cofx chat-id)] - (is (:data-store/tx actual)) - (is (= 1 (count (:data-store/tx actual)))))))) + (is (::json-rpc/call actual)) + (is (= 5 (count (::json-rpc/call actual)))))))) (deftest multi-user-chat? (let [chat-id "1"]