[fix #2870] Mark 1-1 chat as inactive when user removes it
This commit is contained in:
parent
b76095e599
commit
350fc7aa03
|
@ -28,16 +28,18 @@
|
|||
(messages/delete-by-chat-id id)))
|
||||
|
||||
(defn delete-messages!
|
||||
[{:keys [current-chat-id]} [_ chat-id]]
|
||||
(let [id (or chat-id current-chat-id)]
|
||||
(messages/delete-by-chat-id id)))
|
||||
[{:keys [current-chat-id chats]} [_ chat-id]]
|
||||
(let [id (or chat-id current-chat-id)
|
||||
{:keys [group-chat]} (chats/get-by-id chat-id)]
|
||||
(when group-chat
|
||||
(messages/delete-by-chat-id id))))
|
||||
|
||||
(defn delete-chat!
|
||||
[_ [_ chat-id]]
|
||||
(let [{:keys [debug? group-chat]} (chats/get-by-id chat-id)]
|
||||
(if (and (not debug?) group-chat)
|
||||
(chats/set-inactive chat-id)
|
||||
(chats/delete chat-id))))
|
||||
(let [{:keys [debug?]} (chats/get-by-id chat-id)]
|
||||
(if debug?
|
||||
(chats/delete chat-id)
|
||||
(chats/set-inactive chat-id))))
|
||||
|
||||
(defn remove-pending-messages!
|
||||
[_ [_ chat-id]]
|
||||
|
|
|
@ -44,8 +44,9 @@
|
|||
(let [chat (merge (or (get-stored-chat chat-id)
|
||||
(create-new-chat cofx chat-id {}))
|
||||
chat)]
|
||||
{:db (update-in db [:chats chat-id] merge chat)
|
||||
:save-chat chat}))
|
||||
{:db (cond-> db
|
||||
(:is-active chat) (update-in [:chats chat-id] merge chat))
|
||||
:save-chat chat}))
|
||||
|
||||
;; TODO (yenda): an upsert is suppose to add the entry if it doesn't
|
||||
;; exist and update it if it does
|
||||
|
|
|
@ -42,13 +42,15 @@
|
|||
:or {clock-value 0}}]
|
||||
(let [{:keys [access-scope->commands-responses] :contacts/keys [contacts]} db
|
||||
{:keys [public-key] :as current-account} (get-current-account db)
|
||||
chat-identifier (or group-id chat-id from)]
|
||||
chat-identifier (or group-id chat-id from)
|
||||
direct-message? (nil? group-id)]
|
||||
;; proceed with adding message if message is not already stored in realm,
|
||||
;; it's not from current user (outgoing message) and it's for relevant chat
|
||||
;; (either current active chat or new chat not existing yet)
|
||||
;; (either current active chat or new chat not existing yet or it's a direct message)
|
||||
(when (and (not (message-exists? message-id))
|
||||
(not= from public-key)
|
||||
(pop-up-chat? chat-identifier))
|
||||
(or (pop-up-chat? chat-identifier)
|
||||
direct-message?))
|
||||
(let [fx (if (get-in db [:chats chat-identifier])
|
||||
(chat-model/upsert-chat cofx {:chat-id chat-identifier
|
||||
:group-chat (boolean group-id)})
|
||||
|
|
Loading…
Reference in New Issue