From 9b894a9452850c35d7271c93e7b8d08d85954088 Mon Sep 17 00:00:00 2001 From: Andrea Maria Piana Date: Tue, 11 Jun 2019 08:22:05 +0200 Subject: [PATCH] wip 3 --- env/dev/env/config.cljs | 4 +- src/status_im/chat/db.cljs | 1 - src/status_im/chat/models.cljs | 4 +- src/status_im/contact/core.cljs | 1 - src/status_im/contact_code/core.cljs | 33 +++++---- src/status_im/data_store/core.cljs | 11 ++- .../realm/schemas/account/core.cljs | 20 +++++- .../realm/schemas/account/transport.cljs | 3 +- src/status_im/events.cljs | 13 +--- src/status_im/group_chats/core.cljs | 2 - src/status_im/mailserver/constants.cljs | 2 +- src/status_im/mailserver/core.cljs | 28 +------- src/status_im/mailserver/topics.cljs | 19 ++--- src/status_im/transport/core.cljs | 1 - src/status_im/transport/message/protocol.cljs | 5 +- .../transport/partitioned_topic.cljs | 60 ---------------- src/status_im/transport/shh.cljs | 2 - src/status_im/utils/config.cljs | 1 - .../status_im/test/contact_code/core.cljs | 2 +- .../status_im/test/mailserver/topics.cljs | 7 +- test/cljs/status_im/test/runner.cljs | 72 ++++++++++++++++++- 21 files changed, 137 insertions(+), 154 deletions(-) delete mode 100644 src/status_im/transport/partitioned_topic.cljs diff --git a/env/dev/env/config.cljs b/env/dev/env/config.cljs index ef57eb3c3fa6..af77efd8127b 100644 --- a/env/dev/env/config.cljs +++ b/env/dev/env/config.cljs @@ -1,6 +1,6 @@ (ns env.config) -(def figwheel-urls {:android "ws://10.0.3.2:3449/figwheel-ws", - :ios "ws://192.168.56.1:3449/figwheel-ws", +(def figwheel-urls {:android "ws://localhost:3449/figwheel-ws", + :ios "ws://192.168.0.9:3449/figwheel-ws", :desktop "ws://localhost:3449/figwheel-ws"} ) \ No newline at end of file diff --git a/src/status_im/chat/db.cljs b/src/status_im/chat/db.cljs index ab9e3b8a618d..b7be01171620 100644 --- a/src/status_im/chat/db.cljs +++ b/src/status_im/chat/db.cljs @@ -6,7 +6,6 @@ [status-im.contact.db :as contact.db] [status-im.group-chats.db :as group-chats.db] [status-im.mailserver.constants :as mailserver.constants] - [status-im.transport.partitioned-topic :as topic] [status-im.utils.gfycat.core :as gfycat])) (defn group-chat-name diff --git a/src/status_im/chat/models.cljs b/src/status_im/chat/models.cljs index 430d58d8d11c..dc088f14cc2d 100644 --- a/src/status_im/chat/models.cljs +++ b/src/status_im/chat/models.cljs @@ -168,7 +168,7 @@ (log/error "can't remove a chat:" error))}]} (navigation/navigate-to-cofx :home {})) (fx/merge cofx - (mailserver/remove-gaps chat-id) + (mailserver/remove-gaps chat-id) (mailserver/remove-range chat-id) (deactivate-chat chat-id) (clear-history chat-id) @@ -238,6 +238,8 @@ (fx/merge cofx {:db (-> (assoc db :current-chat-id chat-id) (set-chat-ui-props {:validation-messages nil}))} + ;; Group chat don't need this to load as all the loading of topics + ;; happens on membership changes (when-not (group-chat? cofx chat-id) (contact-code/load-chat chat-id)) (when platform/desktop? diff --git a/src/status_im/contact/core.cljs b/src/status_im/contact/core.cljs index 50716fbb7fd8..9251ab75dd5f 100644 --- a/src/status_im/contact/core.cljs +++ b/src/status_im/contact/core.cljs @@ -8,7 +8,6 @@ [status-im.mailserver.core :as mailserver] [status-im.transport.message.contact :as message.contact] [status-im.transport.message.protocol :as protocol] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.tribute-to-talk.db :as tribute-to-talk] [status-im.tribute-to-talk.whitelist :as whitelist] [status-im.ui.screens.navigation :as navigation] diff --git a/src/status_im/contact_code/core.cljs b/src/status_im/contact_code/core.cljs index efa788216907..e18e44d7e81e 100644 --- a/src/status_im/contact_code/core.cljs +++ b/src/status_im/contact_code/core.cljs @@ -15,10 +15,9 @@ [status-im.utils.handlers :as handlers] [status-im.native-module.core :as status] [status-im.contact.db :as contacts.db] - [status-im.mailserver.topics :as mailserver.topics] + [status-im.mailserver.topics :as mailserver.topics] [status-im.mailserver.core :as mailserver])) - ;; fx functions (defn load-filter-fx [web3 filters] @@ -118,15 +117,15 @@ members-joined public?]}] (cond - (not group-chat) - [{:ChatID chat-id - :OneToOne true - :Identity (subs chat-id 2)}] - public? - [{:ChatID chat-id - :OneToOne false}] - :else - (mapcat #(->filter-request {:chat-id %}) members-joined))) + (not group-chat) + [{:ChatID chat-id + :OneToOne true + :Identity (subs chat-id 2)}] + public? + [{:ChatID chat-id + :OneToOne false}] + :else + (mapcat #(->filter-request {:chat-id %}) members-joined))) (defn- chats->filter-requests "Convert a list of active chats to filter requests" @@ -274,12 +273,12 @@ (contains? members chat-id))) (vals (:chats db)))] (when - (or public? - (and one-to-one? - (not (contact.db/active? db chat-id)) - (not= my-public-key chat-id) - (not (get-in db [:chats chat-id :is-active])) - (empty? active-group-chats))) + (or public? + (and one-to-one? + (not (contact.db/active? db chat-id)) + (not= my-public-key chat-id) + (not (get-in db [:chats chat-id :is-active])) + (empty? active-group-chats))) (fx/merge cofx (remove-filter-fx (get-in db [:transport/filters chat-id])))))) diff --git a/src/status_im/data_store/core.cljs b/src/status_im/data_store/core.cljs index fd4b5a87e6e7..43b742833813 100644 --- a/src/status_im/data_store/core.cljs +++ b/src/status_im/data_store/core.cljs @@ -80,10 +80,15 @@ (re-frame/reg-fx :data-store/base-tx (fn [transactions] - (perform-transactions transactions @data-source/base-realm))) + (async/go (async/>! data-source/realm-queue + (partial perform-transactions + transactions + @data-source/base-realm))))) (re-frame/reg-fx :data-store/tx (fn [transactions] - (perform-transactions transactions @data-source/account-realm))) - + (async/go (async/>! data-source/realm-queue + (partial perform-transactions + transactions + @data-source/account-realm))))) diff --git a/src/status_im/data_store/realm/schemas/account/core.cljs b/src/status_im/data_store/realm/schemas/account/core.cljs index bcb1e8b3dc5b..5eb1d6138ac4 100644 --- a/src/status_im/data_store/realm/schemas/account/core.cljs +++ b/src/status_im/data_store/realm/schemas/account/core.cljs @@ -560,6 +560,21 @@ contact-recovery/v1 mailserver-requests-gap/v1]) +(def v47 [chat/v15 + chat-requests-range/v1 + transport/v10 + contact/v8 + message/v11 + mailserver/v11 + mailserver-topic/v2 + membership-update/v1 + installation/v3 + browser/v8 + dapp-permissions/v9 + contact-device-info/v1 + contact-recovery/v1 + mailserver-requests-gap/v1]) + ;; put schemas ordered by version (def schemas [{:schema v1 :schemaVersion 1 @@ -698,4 +713,7 @@ :migration (constantly nil)} {:schema v46 :schemaVersion 46 - :migration migrations/v46}]) + :migration migrations/v46} + {:schema v47 + :schemaVersion 47 + :migration (constantly nil)}]) diff --git a/src/status_im/data_store/realm/schemas/account/transport.cljs b/src/status_im/data_store/realm/schemas/account/transport.cljs index 06b9964b845a..b378032e3490 100644 --- a/src/status_im/data_store/realm/schemas/account/transport.cljs +++ b/src/status_im/data_store/realm/schemas/account/transport.cljs @@ -72,4 +72,5 @@ (def v9 (update v8 :properties dissoc :ack :seen :pending-ack :pending-send)) -(def v10 (update v9 :properties dissoc :sym-key-id :sym-key)) + +(def v10 (update v9 :properties dissoc :topic :sym-key-id :sym-key)) diff --git a/src/status_im/events.cljs b/src/status_im/events.cljs index b1b71933bb03..544cfd16aec1 100644 --- a/src/status_im/events.cljs +++ b/src/status_im/events.cljs @@ -827,13 +827,11 @@ (handlers/register-handler-fx :chat.ui/start-chat - [(re-frame/inject-cofx :web3/get-web3)] (fn [cofx [_ contact-id opts]] (chat/start-chat cofx contact-id opts))) (handlers/register-handler-fx :chat.ui/start-public-chat - [(re-frame/inject-cofx :web3/get-web3)] (fn [cofx [_ topic opts]] (fx/merge cofx @@ -842,7 +840,6 @@ (handlers/register-handler-fx :chat.ui/remove-chat - [(re-frame/inject-cofx :web3/get-web3)] (fn [cofx [_ chat-id]] (chat/remove-chat cofx chat-id))) @@ -1715,8 +1712,7 @@ (handlers/register-handler-fx :contact.ui/add-to-contact-pressed - [(re-frame/inject-cofx :random-id-generator) - (re-frame/inject-cofx :web3/get-web3)] + [(re-frame/inject-cofx :random-id-generator)] (fn [cofx [_ public-key]] (contact/add-contact cofx public-key))) @@ -1727,21 +1723,18 @@ (handlers/register-handler-fx :contact.ui/block-contact-confirmed - [(re-frame/inject-cofx :data-store/get-user-messages) - (re-frame/inject-cofx :web3/get-web3)] + [(re-frame/inject-cofx :data-store/get-user-messages)] (fn [cofx [_ public-key]] (contact.block/block-contact cofx public-key))) (handlers/register-handler-fx :contact.ui/unblock-contact-pressed - [(re-frame/inject-cofx :web3/get-web3)] (fn [cofx [_ public-key]] (contact.block/unblock-contact cofx public-key))) (handlers/register-handler-fx :contact/qr-code-scanned - [(re-frame/inject-cofx :random-id-generator) - (re-frame/inject-cofx :web3/get-web3)] + [(re-frame/inject-cofx :random-id-generator)] (fn [{:keys [db] :as cofx} [_ _ contact-identity]] (let [current-account (:account/account db) fx {:db (assoc db :contacts/new-identity contact-identity)} diff --git a/src/status_im/group_chats/core.cljs b/src/status_im/group_chats/core.cljs index 7ca9eb175647..ef335e66faff 100644 --- a/src/status_im/group_chats/core.cljs +++ b/src/status_im/group_chats/core.cljs @@ -14,7 +14,6 @@ [status-im.native-module.core :as native-module] [status-im.transport.message.group-chat :as message.group-chat] [status-im.transport.message.protocol :as protocol] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.utils.clocks :as utils.clocks] [status-im.utils.fx :as fx] [status-im.mailserver.core :as mailserver] @@ -458,7 +457,6 @@ (contact-code/load-members members) (mailserver/process-next-messages-request))))) - (fx/defn handle-membership-update "Upsert chat and receive message if valid" ;; Care needs to be taken here as chat-id is not coming from a whisper filter diff --git a/src/status_im/mailserver/constants.cljs b/src/status_im/mailserver/constants.cljs index 8b6fd2752d14..2db0b56035c4 100644 --- a/src/status_im/mailserver/constants.cljs +++ b/src/status_im/mailserver/constants.cljs @@ -1,5 +1,5 @@ (ns ^{:doc "Mailserver events and API"} - status-im.mailserver.constants) + status-im.mailserver.constants) (def one-day (* 24 3600)) (def seven-days (* 7 one-day)) diff --git a/src/status_im/mailserver/core.cljs b/src/status_im/mailserver/core.cljs index dcbc39d86061..2779d8573054 100644 --- a/src/status_im/mailserver/core.cljs +++ b/src/status_im/mailserver/core.cljs @@ -19,7 +19,6 @@ [status-im.utils.handlers :as handlers] [status-im.accounts.update.core :as accounts.update] [status-im.ui.screens.navigation :as navigation] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.ui.screens.mobile-network-settings.utils :as mobile-network-utils] [status-im.utils.random :as rand])) @@ -498,31 +497,6 @@ (reset-request-to) (connect-to-mailserver)))) -(fx/defn remove-chat-from-mailserver-topic - "if the chat is the only chat of the mailserver topic delete the mailserver topic - and process-next-messages-requests again to remove pending request for that topic - otherwise remove the chat-id of the chat from the mailserver topic and save" - [{:keys [db] :as cofx} chat-id] - (let [{:keys [public?] :as chat} (get-in db [:chats chat-id]) - topic (if (and chat (not public?)) - ;; TODO: look for all the topics for this chat and remove them - (transport.topic/discovery-topic-hash) - (get-in db [:transport/chats chat-id :topic])) - {:keys [chat-ids] :as mailserver-topic} (update (get-in db [:mailserver/topics topic]) - :chat-ids - disj chat-id)] - - (log/info "mailserver: removing topic: " topic " chat-id: " chat-id " chat-ids: " chat-ids) - (if (empty? chat-ids) - (fx/merge cofx - {:db (update db :mailserver/topics dissoc topic) - :data-store/tx [(data-store.mailservers/delete-mailserver-topic-tx topic)]} - (process-next-messages-request)) - {:db (assoc-in db [:mailserver/topics topic] mailserver-topic) - :data-store/tx [(data-store.mailservers/save-mailserver-topic-tx - {:topic topic - :mailserver-topic mailserver-topic})]}))) - (fx/defn remove-gaps [{:keys [db]} chat-id] {:db (update db :mailserver/gaps dissoc chat-id) @@ -852,6 +826,8 @@ :confirm-button-text (i18n/label :t/mailserver-request-retry)}})) (fx/defn fetch-history + "Retrive a list of topics given a chat id, set them to the specified time interval + and start a mailserver request" [{:keys [db] :as cofx} chat-id {:keys [from to]}] (let [topics (mailserver.topics/topics-for-chat db diff --git a/src/status_im/mailserver/topics.cljs b/src/status_im/mailserver/topics.cljs index 0ca7fc837aec..dd1dd560b121 100644 --- a/src/status_im/mailserver/topics.cljs +++ b/src/status_im/mailserver/topics.cljs @@ -1,14 +1,12 @@ (ns ^{:doc "Mailserver events and API"} - status-im.mailserver.topics + status-im.mailserver.topics (:require [clojure.string :as string] [taoensso.timbre :as log] [status-im.data-store.mailservers :as data-store.mailservers] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.mailserver.constants :as constants] [status-im.utils.fx :as fx])) - (defn calculate-last-request [{:keys [fetch? discovery?] :or {fetch? true}} {:keys [new-account? previous-last-request @@ -28,7 +26,6 @@ :else (- now-s constants/max-request-range))) - (fx/defn store [{:keys [db]} {:keys [topic filter-ids chat-ids] :as mailserver-topic}] @@ -84,7 +81,6 @@ (store topic) (when persist? (persist topic)))) - (fx/defn upsert "if the topic didn't exist create the topic @@ -117,11 +113,11 @@ (fx/defn delete [{:keys [db] :as cofx} {:keys [chat-id filter-id]}] (println (vals (:mailserver/topics db))) (when-let [matching-topics (filter (fn [{:keys [filter-ids] :as topic}] - (if (not filter-ids) - (do (log/warn "topic not initialized, removing" topic) - true) - (filter-ids filter-id))) - (vals (:mailserver/topics db)))] + (if (not filter-ids) + (do (log/warn "topic not initialized, removing" topic) + true) + (filter-ids filter-id))) + (vals (:mailserver/topics db)))] (println "UPDATING" matching-topics) (update-many cofx (map #(update % :filter-ids disj filter-id) matching-topics)))) @@ -130,8 +126,6 @@ [cofx filters] (apply fx/merge cofx (map delete filters))) - - (defn extract-topics "return all the topics for this chat, including discovery topics if specified" [topics chat-id include-discovery?] @@ -169,7 +163,6 @@ {:modified [] :removed []} topics)) - (fx/defn upsert-group-chat "Based on the members it will upsert a mailserver topic for any discovery topic and any personal topic that is in members. It will also remove the chat-id from any existing topic if not with a member" diff --git a/src/status_im/transport/core.cljs b/src/status_im/transport/core.cljs index 2dba7f37309d..e06a968d7d24 100644 --- a/src/status_im/transport/core.cljs +++ b/src/status_im/transport/core.cljs @@ -5,7 +5,6 @@ [status-im.native-module.core :as status] [status-im.mailserver.core :as mailserver] [status-im.transport.message.core :as message] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.contact-code.core :as contact-code] [status-im.utils.publisher :as publisher] [status-im.utils.fx :as fx] diff --git a/src/status_im/transport/message/protocol.cljs b/src/status_im/transport/message/protocol.cljs index fcf8276a2302..d1287168bad6 100644 --- a/src/status_im/transport/message/protocol.cljs +++ b/src/status_im/transport/message/protocol.cljs @@ -4,7 +4,6 @@ [status-im.accounts.db :as accounts.db] [status-im.ethereum.core :as ethereum] [status-im.transport.db :as transport.db] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.data-store.transport :as transport-store] [status-im.transport.utils :as transport.utils] [status-im.tribute-to-talk.whitelist :as whitelist] @@ -12,6 +11,8 @@ [status-im.utils.fx :as fx] [taoensso.timbre :as log])) +(defn discovery-topic-hash [] (transport.utils/get-topic constants/contact-discovery)) + (defprotocol StatusMessage "Protocol for the messages that are sent through the transport layer" (send [this chat-id cofx] "Method producing all effects necessary for sending the message record") @@ -74,7 +75,7 @@ chat-id success-event payload) - (let [topic-hash (transport.topic/discovery-topic-hash)] + (let [topic-hash (discovery-topic-hash)] {:shh/post [{:web3 web3 :success-event success-event :message (merge {:sig (accounts.db/current-public-key cofx) diff --git a/src/status_im/transport/partitioned_topic.cljs b/src/status_im/transport/partitioned_topic.cljs deleted file mode 100644 index 34e3aa372920..000000000000 --- a/src/status_im/transport/partitioned_topic.cljs +++ /dev/null @@ -1,60 +0,0 @@ -(ns status-im.transport.partitioned-topic - (:require [status-im.utils.random :as random] - [status-im.transport.utils :as utils] - [status-im.constants :as constants] - [status-im.utils.config :as config])) - -;; Number of different personal topics -(def n-partitions 5000) - -(defn expected-number-of-collisions - "Expected number of topic collision given the number of expected users, - we want this value to be greater than a threshold to avoid positive - identification given the attacker has a topic & public key. - Used only for safety-checking n-partitions. - - https://en.wikipedia.org/wiki/Birthday_problem#Collision_counting" - [total-users] - (+ - (- total-users n-partitions) - (* n-partitions - (js/Math.pow - (/ - (- n-partitions 1) - n-partitions) - total-users)))) - -(defn- partitioned-topic - [public-key] - (let [gen (random/rand-gen public-key)] - (-> (random/seeded-rand-int gen n-partitions) - (str "-discovery")))) - -(defn partitioned-topic-hash - "Given a public key return a partitioned topic between 0 and n" - [public-key] - (-> public-key - partitioned-topic - utils/get-topic)) - -(def discovery-topic constants/contact-discovery) -(defn discovery-topic-hash [] (utils/get-topic constants/contact-discovery)) - -(defn public-key->discovery-topic - [public-key] - (if config/partitioned-topic-enabled? - (partitioned-topic public-key) - constants/contact-discovery)) - -(defn public-key->discovery-topic-hash - [public-key] - (if config/partitioned-topic-enabled? - (partitioned-topic-hash public-key) - (discovery-topic-hash))) - -(defn discovery-topics [public-key] - [(partitioned-topic-hash public-key) (discovery-topic-hash)]) - -(defn contains-topic? - [available-topics topic] - (contains? available-topics (utils/get-topic topic))) diff --git a/src/status_im/transport/shh.cljs b/src/status_im/transport/shh.cljs index 102435e5442b..996fac991ed3 100644 --- a/src/status_im/transport/shh.cljs +++ b/src/status_im/transport/shh.cljs @@ -3,7 +3,6 @@ (:require [re-frame.core :as re-frame] [status-im.ethereum.core :as ethereum] [status-im.transport.message.transit :as transit] - [status-im.transport.partitioned-topic :as transport.topic] [status-im.transport.utils :as transport.utils] [taoensso.timbre :as log])) @@ -27,7 +26,6 @@ (defn handle-response [success-event error-event messages-count] (fn [err resp] - (println err) (if-not err (if success-event (re-frame/dispatch (conj success-event resp messages-count)) diff --git a/src/status_im/utils/config.cljs b/src/status_im/utils/config.cljs index 403a69a9fe50..a5bfd1e9db9f 100644 --- a/src/status_im/utils/config.cljs +++ b/src/status_im/utils/config.cljs @@ -33,7 +33,6 @@ (def hardwallet-enabled? (enabled? (get-config :HARDWALLET_ENABLED 0))) (def dev-build? (enabled? (get-config :DEV_BUILD 0))) (def erc20-contract-warnings-enabled? (enabled? (get-config :ERC20_CONTRACT_WARNINGS))) -(def partitioned-topic-enabled? (enabled? (get-config :PARTITIONED_TOPIC "0"))) (def tr-to-talk-enabled? (enabled? (get-config :TRIBUTE_TO_TALK 0))) (def max-message-delivery-attempts (js/parseInt (get-config :MAX_MESSAGE_DELIVERY_ATTEMPTS "6"))) (def contract-nodes-enabled? (enabled? (get-config :CONTRACT_NODES "0"))) diff --git a/test/cljs/status_im/test/contact_code/core.cljs b/test/cljs/status_im/test/contact_code/core.cljs index 12d8946db76b..312d2cbf3657 100644 --- a/test/cljs/status_im/test/contact_code/core.cljs +++ b/test/cljs/status_im/test/contact_code/core.cljs @@ -1,6 +1,6 @@ (ns status-im.test.contact-code.core (:require [cljs.test :refer-macros [deftest is testing]] - [status-im.utils.fx :as fx] + [status-im.utils.fx :as fx] [status-im.contact-code.core :as contact-code])) (def me "me") diff --git a/test/cljs/status_im/test/mailserver/topics.cljs b/test/cljs/status_im/test/mailserver/topics.cljs index e10753c036f1..ee927b0a1e1b 100644 --- a/test/cljs/status_im/test/mailserver/topics.cljs +++ b/test/cljs/status_im/test/mailserver/topics.cljs @@ -5,8 +5,7 @@ [status-im.mailserver.topics :as t] [status-im.utils.random :as rand])) -(def now-s 100000 ) - +(def now-s 100000) (deftest test-merge-topic-basic-functionaliry (testing "a new topic" @@ -96,7 +95,6 @@ (is (t/new-chat-ids? {:chat-ids #{"a" "b"}} {:chat-ids #{"a" "b" "c"}})))) - (deftest topics-for-chat (testing "the chat is in multiple topics" (is (= #{"a" "b"} @@ -123,7 +121,6 @@ "chat-id-2" true))))) - (deftest upsert-group-chat-test (testing "new group chat" (let [expected-topics {:modified [{:topic "2" @@ -153,7 +150,7 @@ :chat-ids #{"chat-id"} :fetch? false}] :removed [{:topic "3" - :chat-ids #{"b"}}]}] + :chat-ids #{"b"}}]}] (is (= expected-topics (t/changed-for-group-chat [{:topic "1" :discovery? true diff --git a/test/cljs/status_im/test/runner.cljs b/test/cljs/status_im/test/runner.cljs index 432efb2f4547..313655ae7119 100644 --- a/test/cljs/status_im/test/runner.cljs +++ b/test/cljs/status_im/test/runner.cljs @@ -32,9 +32,9 @@ [status-im.test.hardwallet.core] [status-im.test.i18n] [status-im.test.init.core] + [status-im.test.models.account] [status-im.test.mailserver.core] [status-im.test.mailserver.topics] - [status-im.test.models.account] [status-im.test.models.bootnode] [status-im.test.models.contact] [status-im.test.models.network] @@ -79,6 +79,72 @@ (set! goog.DEBUG false) (doo-tests + 'status-im.test.accounts.recover.core + 'status-im.test.browser.core + 'status-im.test.browser.permissions + 'status-im.test.chat.commands.core + 'status-im.test.chat.commands.impl.transactions + 'status-im.test.chat.commands.input + 'status-im.test.chat.db + 'status-im.test.chat.models + 'status-im.test.chat.models.input + 'status-im.test.chat.models.loading + 'status-im.test.chat.models.message + 'status-im.test.chat.models.message-content + 'status-im.test.chat.views.photos + 'status-im.test.contact-code.core + 'status-im.test.contact-recovery.core + 'status-im.test.contacts.db + 'status-im.test.contacts.device-info + 'status-im.test.data-store.chats + 'status-im.test.data-store.core + 'status-im.test.data-store.realm.core + 'status-im.test.ethereum.abi-spec + 'status-im.test.ethereum.core + 'status-im.test.ethereum.eip55 + 'status-im.test.ethereum.eip681 + 'status-im.test.ethereum.ens + 'status-im.test.ethereum.mnemonic + 'status-im.test.extensions.core + 'status-im.test.extensions.ethereum + 'status-im.test.fleet.core + 'status-im.test.group-chats.core + 'status-im.test.hardwallet.core + 'status-im.test.i18n + 'status-im.test.init.core + 'status-im.test.mailserver.core 'status-im.test.mailserver.topics - 'status-im.test.contact-code.core) - + 'status-im.test.models.account + 'status-im.test.models.bootnode + 'status-im.test.models.contact + 'status-im.test.models.network + 'status-im.test.models.wallet + 'status-im.test.node.core + 'status-im.test.pairing.core + 'status-im.test.search.core + 'status-im.test.sign-in.flow + 'status-im.test.transport.core + 'status-im.test.tribute-to-talk.core + 'status-im.test.tribute-to-talk.db + 'status-im.test.tribute-to-talk.whitelist + 'status-im.test.ui.screens.add-new.models + 'status-im.test.ui.screens.currency-settings.models + 'status-im.test.ui.screens.wallet.db + 'status-im.test.utils.async + 'status-im.test.utils.clocks + 'status-im.test.utils.contenthash + 'status-im.test.utils.datetime + 'status-im.test.utils.fx + 'status-im.test.utils.gfycat.core + 'status-im.test.utils.http + 'status-im.test.utils.keychain.core + 'status-im.test.utils.money + 'status-im.test.utils.prices + 'status-im.test.utils.random + 'status-im.test.utils.signing-phrase.core + 'status-im.test.utils.transducers + 'status-im.test.utils.universal-links.core + 'status-im.test.utils.utils + 'status-im.test.wallet.subs + 'status-im.test.wallet.transactions + 'status-im.test.wallet.transactions.subs)