From 1dcc7727f1fb23766ec8cc12fdf21f43ad5ff2ec Mon Sep 17 00:00:00 2001 From: Roman Volosovskyi Date: Wed, 21 Nov 2018 09:44:31 +0200 Subject: [PATCH] [slow sign in] faster :get-referenced-messages --- src/status_im/chat/models/loading.cljs | 4 +--- src/status_im/data_store/messages.cljs | 18 +++++++++--------- src/status_im/data_store/realm/core.cljs | 2 +- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/status_im/chat/models/loading.cljs b/src/status_im/chat/models/loading.cljs index b7defd61c5..86c371340c 100644 --- a/src/status_im/chat/models/loading.cljs +++ b/src/status_im/chat/models/loading.cljs @@ -73,7 +73,6 @@ :referenced-messages (into {} (map (juxt :message-id identity) (get-referenced-messages - chat-id (get-referenced-ids chat-messages)))))))) {} all-stored-chats)] @@ -116,8 +115,7 @@ new-messages (get-stored-messages current-chat-id loaded-count) indexed-messages (index-messages new-messages) referenced-messages (index-messages - (get-referenced-messages current-chat-id - (get-referenced-ids indexed-messages))) + (get-referenced-messages (get-referenced-ids indexed-messages))) new-message-ids (keys indexed-messages) new-statuses (get-stored-user-statuses current-chat-id new-message-ids)] (fx/merge cofx diff --git a/src/status_im/data_store/messages.cljs b/src/status_im/data_store/messages.cljs index 9c025c3b3c..1c311a5ff1 100644 --- a/src/status_im/data_store/messages.cljs +++ b/src/status_im/data_store/messages.cljs @@ -21,15 +21,15 @@ (core/all-clj :message))] (map transform-message messages)))) -(defn- get-by-chat-and-messages-ids - [chat-id message-ids] +(defn- get-by-messages-ids + [message-ids] (when (seq message-ids) - (let [messages (-> @core/account-realm - (.objects "message") - (.filtered (str "chat-id=\"" chat-id "\"" - (str " and (" (core/in-query "message-id" message-ids) ")"))) - (core/all-clj :message))] - (map transform-message messages)))) + (keep (fn [message-id] + (when-let [js-message (.objectForPrimaryKey @core/account-realm "message" message-id)] + (-> js-message + (core/realm-obj->clj :message) + transform-message))) + message-ids))) (def default-values {:to nil}) @@ -101,7 +101,7 @@ (re-frame/reg-cofx :data-store/get-referenced-messages (fn [cofx _] - (assoc cofx :get-referenced-messages get-by-chat-and-messages-ids))) + (assoc cofx :get-referenced-messages get-by-messages-ids))) (defn- prepare-content [content] (if (string? content) diff --git a/src/status_im/data_store/realm/core.cljs b/src/status_im/data_store/realm/core.cljs index 7a26f6e708..736a6e7a98 100644 --- a/src/status_im/data_store/realm/core.cljs +++ b/src/status_im/data_store/realm/core.cljs @@ -275,7 +275,7 @@ #(let [realm-obj (object/get realm-object-list %)] [(object/get realm-obj primary-key) (realm-obj->clj realm-obj entity-name)])))) -(defn- realm-obj->clj [realm-obj entity-name] +(defn realm-obj->clj [realm-obj entity-name] (when realm-obj (let [{:keys [primaryKey properties]} (get entity->schemas entity-name)] (into {}