[#11883] Unread indicator re-appears for received message after relogin

Signed-off-by: andrey <motor4ik@gmail.com>
This commit is contained in:
andrey 2021-03-17 08:57:10 +01:00
parent 9d7dcc6ae7
commit 66a4ab5aef
No known key found for this signature in database
GPG Key ID: 89B67245FD2F0272
1 changed files with 4 additions and 8 deletions

View File

@ -142,22 +142,18 @@
acc)))
(defn receive-many [{:keys [db]} ^js response-js]
(let [current-chat-id (:current-chat-id db)
messages-js ^js (.splice (.-messages response-js) 0 (if platform/low-device? 3 10))
{:keys [db chats senders]}
(let [messages-js ^js (.splice (.-messages response-js) 0 (if platform/low-device? 3 10))
{:keys [db senders]}
(reduce reduce-js-messages
{:db db :chats #{} :senders {} :transactions #{}}
messages-js)]
;;we want to render new messages as soon as possible
;;so we dispatch later all other events which can be handled async
{:db db
:utils/dispatch-later
(concat [{:ms 20 :dispatch [:process-response response-js]}]
(when (and current-chat-id
(get chats current-chat-id)
(not (chat-model/profile-chat? {:db db} current-chat-id)))
[{:ms 100 :dispatch [:chat/mark-all-as-read (:current-chat-id db)]}])
(when-let [chat-id (:current-chat-id db)]
[{:ms 100 :dispatch [:chat/mark-all-as-read chat-id]}])
(when (seq senders)
[{:ms 100 :dispatch [:chat/add-senders-to-chat-users (vals senders)]}]))}))