Skip to content

Commit 919e607

Browse files
authored
Merge branch 'develop' into mute-for-specific-amount-of-time
2 parents d6cd34f + a261628 commit 919e607

File tree

3 files changed

+73
-24
lines changed

3 files changed

+73
-24
lines changed

src/status_im/multiaccounts/update/core.cljs

+37-21
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,29 @@
11
(ns status-im.multiaccounts.update.core
2-
(:require [status-im2.constants :as constants]
3-
[utils.re-frame :as rf]
4-
[status-im.utils.types :as types]
5-
[taoensso.timbre :as log]))
2+
(:require [status-im.utils.types :as types]
3+
[status-im2.constants :as constants]
4+
[taoensso.timbre :as log]
5+
[utils.re-frame :as rf]))
66

7-
(rf/defn send-multiaccount-update
8-
[{:keys [db] :as cofx}]
9-
(let [multiaccount (:multiaccount db)
10-
{:keys [name preferred-name address]} multiaccount]
7+
(rf/defn send-contact-update
8+
[{:keys [db]}]
9+
(let [{:keys [name preferred-name display-name address]} (:multiaccount db)]
1110
{:json-rpc/call [{:method "wakuext_sendContactUpdates"
12-
:params [(or preferred-name name) ""]
11+
:params [(or preferred-name display-name name) ""]
1312
:on-success #(log/debug "sent contact update")}]}))
1413

14+
(rf/defn update-multiaccount-account-name
15+
"This updates the profile name in the profile list before login"
16+
{:events [:multiaccounts.ui/update-name]}
17+
[{:keys [db] :as cofx} raw-multiaccounts-from-status-go]
18+
(let [{:keys [key-uid name preferred-name
19+
display-name]} (:multiaccount db)
20+
account (some #(and (= (:key-uid %) key-uid) %) raw-multiaccounts-from-status-go)]
21+
(when-let [new-name (and account (or preferred-name display-name name))]
22+
(rf/merge cofx
23+
{:json-rpc/call [{:method "multiaccounts_updateAccount"
24+
:params [(assoc account :name new-name)]
25+
:on-success #(log/debug "sent multiaccount update")}]}))))
26+
1527
(rf/defn multiaccount-update
1628
"Takes effects (containing :db) + new multiaccount fields, adds all effects necessary for multiaccount update.
1729
Optionally, one can specify a success-event to be dispatched after fields are persisted."
@@ -25,17 +37,21 @@
2537
(throw
2638
(js/Error.
2739
"Please shake the phone to report this error and restart the app. multiaccount is currently empty, which means something went wrong when trying to update it with"))
28-
(rf/merge cofx
29-
{:db (if setting-value
30-
(assoc-in db [:multiaccount setting] setting-value)
31-
(update db :multiaccount dissoc setting))
32-
:json-rpc/call
33-
[{:method "settings_saveSetting"
34-
:params [setting setting-value]
35-
:on-success on-success}]}
36-
(when (and (not dont-sync?)
37-
(#{:name :prefered-name} setting))
38-
(send-multiaccount-update))))))
40+
(rf/merge
41+
cofx
42+
{:db (if setting-value
43+
(assoc-in db [:multiaccount setting] setting-value)
44+
(update db :multiaccount dissoc setting))
45+
:json-rpc/call
46+
[{:method "settings_saveSetting"
47+
:params [setting setting-value]
48+
:on-success on-success}]}
49+
50+
(when (#{:name :preferred-name} setting)
51+
(constantly {:setup/open-multiaccounts #(rf/dispatch [:multiaccounts.ui/update-name %])}))
52+
53+
(when (and (not dont-sync?) (#{:name :preferred-name} setting))
54+
(send-contact-update))))))
3955

4056
(rf/defn clean-seed-phrase
4157
"A helper function that removes seed phrase from storage."
@@ -44,7 +60,7 @@
4460

4561
(defn augment-synchronized-recent-stickers
4662
"Add 'url' parameter to stickers that are synchronized from other devices.
47-
It is not sent from aanother devices but we have it in our db."
63+
It is not sent from another devices but we have it in our db."
4864
[synced-stickers stickers-from-db]
4965
(mapv #(assoc %
5066
:url

src/status_im/multiaccounts/update/core_test.cljs

+34-1
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
(ns status-im.multiaccounts.update.core-test
2-
(:require [clojure.test :refer-macros [deftest is]]
2+
(:require [clojure.test :refer-macros [deftest is testing]]
33
[status-im.multiaccounts.update.core :as multiaccounts.update]))
44

55
(deftest test-multiaccount-update
@@ -21,3 +21,36 @@
2121
json-rpc (into #{} (map :method (:json-rpc/call efx)))]
2222
(is (json-rpc "settings_saveSetting"))
2323
(is (nil? (get-in efx [:db :multiaccount :mnemonic])))))
24+
25+
(deftest test-update-multiaccount-account-name
26+
(let [cofx {:db {:multiaccount {:key-uid 1
27+
:name "name"
28+
:preferred-name "preferred-name"
29+
:display-name "display-name"}}}
30+
raw-multiaccounts-from-status-go [{:key-uid 1 :name "old-name"}]]
31+
(testing "wrong account"
32+
(is (nil? (multiaccounts.update/update-multiaccount-account-name cofx []))))
33+
(testing "name priority preferred-name > display-name > name"
34+
(let [new-account-name= (fn [efx new-name]
35+
(-> efx
36+
:json-rpc/call
37+
first
38+
:params
39+
first
40+
:name
41+
(= new-name)))]
42+
(is (new-account-name=
43+
(multiaccounts.update/update-multiaccount-account-name
44+
cofx
45+
raw-multiaccounts-from-status-go)
46+
"preferred-name"))
47+
(is (new-account-name=
48+
(multiaccounts.update/update-multiaccount-account-name
49+
(update-in cofx [:db :multiaccount] dissoc :preferred-name)
50+
raw-multiaccounts-from-status-go)
51+
"display-name"))
52+
(is (new-account-name=
53+
(multiaccounts.update/update-multiaccount-account-name
54+
(update-in cofx [:db :multiaccount] dissoc :preferred-name :display-name)
55+
raw-multiaccounts-from-status-go)
56+
"name"))))))

src/status_im/pairing/core.cljs

+2-2
Original file line numberDiff line numberDiff line change
@@ -247,11 +247,11 @@
247247
[cofx installation-id]
248248
(rf/merge cofx
249249
(enable installation-id)
250-
(multiaccounts.update/send-multiaccount-update)))
250+
(multiaccounts.update/send-contact-update)))
251251

252252
(rf/defn disable-installation-success
253253
{:events [:pairing.callback/disable-installation-success]}
254254
[cofx installation-id]
255255
(rf/merge cofx
256256
(disable installation-id)
257-
(multiaccounts.update/send-multiaccount-update)))
257+
(multiaccounts.update/send-contact-update)))

0 commit comments

Comments
 (0)