mirror of
https://github.com/status-im/status-react.git
synced 2025-02-11 18:36:34 +00:00
37 lines
1.3 KiB
Clojure
37 lines
1.3 KiB
Clojure
(ns status-im.chat.handlers.unviewed-messages
|
|
(:require [re-frame.core :refer [after enrich path dispatch]]
|
|
[status-im.utils.handlers :refer [register-handler]]
|
|
[status-im.data-store.messages :as messages]))
|
|
|
|
(defn set-unviewed-messages [db]
|
|
(let [messages (->> (::raw-unviewed-messages db)
|
|
(group-by :chat-id)
|
|
(map (fn [[id messages]]
|
|
[id {:messages-ids (map :message-id messages)
|
|
:count (count messages)}]))
|
|
(into {}))]
|
|
(-> db
|
|
(assoc :unviewed-messages messages)
|
|
(dissoc ::raw-unviewed-messages))))
|
|
|
|
(defn load-messages! [db]
|
|
(let [messages (messages/get-unviewed)]
|
|
(assoc db ::raw-unviewed-messages messages)))
|
|
|
|
(register-handler ::set-unviewed-messages set-unviewed-messages)
|
|
|
|
(register-handler :load-unviewed-messages!
|
|
(after #(dispatch [::set-unviewed-messages]))
|
|
load-messages!)
|
|
|
|
(register-handler :add-unviewed-message
|
|
(path :unviewed-messages)
|
|
(fn [db [_ chat-id message-id]]
|
|
(-> db
|
|
(update-in [chat-id :messages-ids] conj message-id)
|
|
(update-in [chat-id :count] inc))))
|
|
|
|
(register-handler :remove-unviewed-messages
|
|
(path :unviewed-messages)
|
|
(fn [db [_ chat-id]]
|
|
(dissoc db chat-id))) |