Persist unseen messages
This commit is contained in:
parent
5cd643b98e
commit
cd5542f648
|
@ -70,13 +70,16 @@
|
||||||
(when-not (get-in db [:chats current-chat-id :all-loaded?])
|
(when-not (get-in db [:chats current-chat-id :all-loaded?])
|
||||||
(let [loaded-count (count (get-in db [:chats current-chat-id :messages]))
|
(let [loaded-count (count (get-in db [:chats current-chat-id :messages]))
|
||||||
new-messages (get-stored-messages current-chat-id loaded-count)
|
new-messages (get-stored-messages current-chat-id loaded-count)
|
||||||
indexed-messages (index-messages new-messages)]
|
indexed-messages (index-messages new-messages)
|
||||||
|
new-message-ids (keys indexed-messages)]
|
||||||
(handlers-macro/merge-fx
|
(handlers-macro/merge-fx
|
||||||
cofx
|
cofx
|
||||||
{:db (-> db
|
{:db (-> db
|
||||||
(update-in [:chats current-chat-id :messages] merge indexed-messages)
|
(update-in [:chats current-chat-id :messages] merge indexed-messages)
|
||||||
(update-in [:chats current-chat-id :not-loaded-message-ids]
|
(update-in [:chats current-chat-id :not-loaded-message-ids]
|
||||||
#(apply disj % (keys indexed-messages)))
|
#(apply disj % new-message-ids))
|
||||||
|
(update-in [:chats current-chat-id :unviewed-messages]
|
||||||
|
#(apply disj % new-message-ids))
|
||||||
(assoc-in [:chats current-chat-id :all-loaded?]
|
(assoc-in [:chats current-chat-id :all-loaded?]
|
||||||
(> constants/default-number-of-messages (count new-messages))))}
|
(> constants/default-number-of-messages (count new-messages))))}
|
||||||
(models.message/group-messages current-chat-id new-messages))))))
|
(models.message/group-messages current-chat-id new-messages))))))
|
||||||
|
|
|
@ -73,7 +73,7 @@
|
||||||
(core/get-by-fields
|
(core/get-by-fields
|
||||||
:user-status
|
:user-status
|
||||||
:and {:whisper-identity (:current-public-key db)
|
:and {:whisper-identity (:current-public-key db)
|
||||||
:status :received})
|
:status "received"})
|
||||||
(core/all-clj :user-status)))))))
|
(core/all-clj :user-status)))))))
|
||||||
|
|
||||||
(defn- prepare-content [content]
|
(defn- prepare-content [content]
|
||||||
|
|
|
@ -235,14 +235,14 @@
|
||||||
[results schema-name]
|
[results schema-name]
|
||||||
(realm-list->clj-coll results [] #(realm-obj->clj (object/get results %) schema-name)))
|
(realm-list->clj-coll results [] #(realm-obj->clj (object/get results %) schema-name)))
|
||||||
|
|
||||||
(defn- field-type [realm schema-name field]
|
(defn- field-type [schema-name field]
|
||||||
(let [field-def (get-in entity->schemas [schema-name :properties field])]
|
(let [field-def (get-in entity->schemas [schema-name :properties field])]
|
||||||
(or (:type field-def) field-def)))
|
(or (:type field-def) field-def)))
|
||||||
|
|
||||||
(defmulti to-query (fn [_ _ operator _ _] operator))
|
(defmulti to-query (fn [_ operator _ _] operator))
|
||||||
|
|
||||||
(defmethod to-query :eq [schema schema-name _ field value]
|
(defmethod to-query :eq [schema-name _ field value]
|
||||||
(let [field-type (field-type schema schema-name field)
|
(let [field-type (field-type schema-name field)
|
||||||
escaped-value (when value (gstr/escapeString (str value)))
|
escaped-value (when value (gstr/escapeString (str value)))
|
||||||
query (str (name field) "=" (if (= "string" (name field-type))
|
query (str (name field) "=" (if (= "string" (name field-type))
|
||||||
(str "\"" escaped-value "\"")
|
(str "\"" escaped-value "\"")
|
||||||
|
@ -252,7 +252,7 @@
|
||||||
(defn get-by-field
|
(defn get-by-field
|
||||||
"Selects objects from realm identified by schema-name based on value of field"
|
"Selects objects from realm identified by schema-name based on value of field"
|
||||||
[realm schema-name field value]
|
[realm schema-name field value]
|
||||||
(let [q (to-query realm schema-name :eq field value)]
|
(let [q (to-query schema-name :eq field value)]
|
||||||
(.filtered (.objects realm (name schema-name)) q)))
|
(.filtered (.objects realm (name schema-name)) q)))
|
||||||
|
|
||||||
(defn- and-query [queries]
|
(defn- and-query [queries]
|
||||||
|
@ -266,7 +266,7 @@
|
||||||
combined by `:and`/`:or` operator"
|
combined by `:and`/`:or` operator"
|
||||||
[realm schema-name op fields]
|
[realm schema-name op fields]
|
||||||
(let [queries (map (fn [[k v]]
|
(let [queries (map (fn [[k v]]
|
||||||
(to-query realm schema-name :eq k v))
|
(to-query schema-name :eq k v))
|
||||||
fields)]
|
fields)]
|
||||||
(.filtered (.objects realm (name schema-name))
|
(.filtered (.objects realm (name schema-name))
|
||||||
(case op
|
(case op
|
||||||
|
|
Loading…
Reference in New Issue