[#12520] Sync deleted chats

This commit is contained in:
Roman Volosovskyi 2021-10-06 14:46:52 +03:00
parent 0b2d0d45ed
commit fe00971399
No known key found for this signature in database
GPG Key ID: 0238A4B5ECEE70DE
3 changed files with 32 additions and 18 deletions

View File

@ -46,7 +46,8 @@
(community-chat? (get-chat cofx chat-id)))) (community-chat? (get-chat cofx chat-id))))
(defn active-chat? [cofx chat-id] (defn active-chat? [cofx chat-id]
(not (nil? (get-chat cofx chat-id)))) (let [chat (get-chat cofx chat-id)]
(not (nil? chat))))
(defn foreground-chat? (defn foreground-chat?
[{{:keys [current-chat-id view-id]} :db} chat-id] [{{:keys [current-chat-id view-id]} :db} chat-id]
@ -102,6 +103,13 @@
(fn [val] (fn [val]
(and (not (get-in db [:chats (:chat-id val)])) (:public? val)))) (and (not (get-in db [:chats (:chat-id val)])) (:public? val))))
(fx/defn leave-removed-chat
[{{:keys [view-id current-chat-id chats]} :db
:as cofx}]
(when (and (= view-id :chat)
(not (contains? chats current-chat-id)))
(navigation/navigate-back cofx)))
(fx/defn ensure-chats (fx/defn ensure-chats
"Add chats to db and update" "Add chats to db and update"
[{:keys [db] :as cofx} chats] [{:keys [db] :as cofx} chats]
@ -118,11 +126,14 @@
:chats-home-list #{} :chats-home-list #{}
:removed-chats #{}} :removed-chats #{}}
(map (map-chats cofx) chats))] (map (map-chats cofx) chats))]
(fx/merge
cofx
{:db (-> db {:db (-> db
(update :chats merge all-chats) (update :chats merge all-chats)
(update :chats-home-list set/union chats-home-list) (update :chats-home-list set/union chats-home-list)
(update :chats #(apply dissoc % removed-chats)) (update :chats #(apply dissoc % removed-chats))
(update :chats-home-list set/difference removed-chats))})) (update :chats-home-list set/difference removed-chats))}
leave-removed-chat)))
(fx/defn clear-history (fx/defn clear-history
"Clears history of the particular chat" "Clears history of the particular chat"
@ -137,11 +148,14 @@
{:db (-> db {:db (-> db
(assoc-in [:messages chat-id] {}) (assoc-in [:messages chat-id] {})
(update-in [:message-lists] dissoc chat-id) (update-in [:message-lists] dissoc chat-id)
(update-in [:chats chat-id] merge (update :chats (fn [chats]
(if (contains? chats chat-id)
(update chats chat-id merge
{:last-message nil {:last-message nil
:unviewed-messages-count 0 :unviewed-messages-count 0
:unviewed-mentions-count 0 :unviewed-mentions-count 0
:deleted-at-clock-value last-message-clock-value}))})) :deleted-at-clock-value last-message-clock-value})
chats))))}))
(fx/defn clear-history-handler (fx/defn clear-history-handler
"Clears history of the particular chat" "Clears history of the particular chat"
@ -161,7 +175,7 @@
(fx/merge (fx/merge
cofx cofx
{:db (-> db {:db (-> db
(assoc-in [:chats chat-id :is-active] false) (update :chats dissoc chat-id)
(update :chats-home-list disj chat-id) (update :chats-home-list disj chat-id)
(assoc-in [:current-chat-id] nil)) (assoc-in [:current-chat-id] nil))
::json-rpc/call [{:method "wakuext_deactivateChat" ::json-rpc/call [{:method "wakuext_deactivateChat"

View File

@ -48,7 +48,7 @@
(testing "it deletes all the messages" (testing "it deletes all the messages"
(let [actual (chat/remove-chat cofx chat-id)] (let [actual (chat/remove-chat cofx chat-id)]
(is (= nil (get-in actual [:db :messages chat-id]))))) (is (= nil (get-in actual [:db :messages chat-id])))))
(testing "it sets a deleted-at-clock-value equal to the last message clock-value" #_(testing "it sets a deleted-at-clock-value equal to the last message clock-value"
(let [actual (chat/remove-chat cofx chat-id)] (let [actual (chat/remove-chat cofx chat-id)]
(is (= 10 (get-in actual [:db :chats chat-id :deleted-at-clock-value]))))))) (is (= 10 (get-in actual [:db :chats chat-id :deleted-at-clock-value])))))))

View File

@ -3,7 +3,7 @@
"_comment": "Instead use: scripts/update-status-go.sh <rev>", "_comment": "Instead use: scripts/update-status-go.sh <rev>",
"owner": "status-im", "owner": "status-im",
"repo": "status-go", "repo": "status-go",
"version": "v0.89.6", "version": "v0.89.7",
"commit-sha1": "7701368b142ad073f76d678095114b1388cce4b3", "commit-sha1": "4de912babad60c8ac556277ffc79026fc4cabdc4",
"src-sha256": "0cgl5vhbn943sbzxzrnmpipxgyvlp4p3k96m5qp86cpw40rnhv9w" "src-sha256": "17lkgq6rciq1snnxjflxy6wqianyi0wkgjdk6rplz5yy2y91rv7v"
} }