[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)))
|
(messages/delete-by-chat-id id)))
|
||||||
|
|
||||||
(defn delete-messages!
|
(defn delete-messages!
|
||||||
[{:keys [current-chat-id]} [_ chat-id]]
|
[{:keys [current-chat-id chats]} [_ chat-id]]
|
||||||
(let [id (or chat-id current-chat-id)]
|
(let [id (or chat-id current-chat-id)
|
||||||
(messages/delete-by-chat-id id)))
|
{:keys [group-chat]} (chats/get-by-id chat-id)]
|
||||||
|
(when group-chat
|
||||||
|
(messages/delete-by-chat-id id))))
|
||||||
|
|
||||||
(defn delete-chat!
|
(defn delete-chat!
|
||||||
[_ [_ chat-id]]
|
[_ [_ chat-id]]
|
||||||
(let [{:keys [debug? group-chat]} (chats/get-by-id chat-id)]
|
(let [{:keys [debug?]} (chats/get-by-id chat-id)]
|
||||||
(if (and (not debug?) group-chat)
|
(if debug?
|
||||||
(chats/set-inactive chat-id)
|
(chats/delete chat-id)
|
||||||
(chats/delete chat-id))))
|
(chats/set-inactive chat-id))))
|
||||||
|
|
||||||
(defn remove-pending-messages!
|
(defn remove-pending-messages!
|
||||||
[_ [_ chat-id]]
|
[_ [_ chat-id]]
|
||||||
|
|
|
@ -44,7 +44,8 @@
|
||||||
(let [chat (merge (or (get-stored-chat chat-id)
|
(let [chat (merge (or (get-stored-chat chat-id)
|
||||||
(create-new-chat cofx chat-id {}))
|
(create-new-chat cofx chat-id {}))
|
||||||
chat)]
|
chat)]
|
||||||
{:db (update-in db [:chats chat-id] merge chat)
|
{:db (cond-> db
|
||||||
|
(:is-active chat) (update-in [:chats chat-id] merge chat))
|
||||||
:save-chat chat}))
|
:save-chat chat}))
|
||||||
|
|
||||||
;; TODO (yenda): an upsert is suppose to add the entry if it doesn't
|
;; TODO (yenda): an upsert is suppose to add the entry if it doesn't
|
||||||
|
|
|
@ -42,13 +42,15 @@
|
||||||
:or {clock-value 0}}]
|
:or {clock-value 0}}]
|
||||||
(let [{:keys [access-scope->commands-responses] :contacts/keys [contacts]} db
|
(let [{:keys [access-scope->commands-responses] :contacts/keys [contacts]} db
|
||||||
{:keys [public-key] :as current-account} (get-current-account 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,
|
;; 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
|
;; 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))
|
(when (and (not (message-exists? message-id))
|
||||||
(not= from public-key)
|
(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])
|
(let [fx (if (get-in db [:chats chat-identifier])
|
||||||
(chat-model/upsert-chat cofx {:chat-id chat-identifier
|
(chat-model/upsert-chat cofx {:chat-id chat-identifier
|
||||||
:group-chat (boolean group-id)})
|
:group-chat (boolean group-id)})
|
||||||
|
|
Loading…
Reference in New Issue