From 55ecb50f1bd06036c943d221dc79ae3acddcb566 Mon Sep 17 00:00:00 2001 From: Richard Ramos Date: Mon, 5 Apr 2021 13:47:17 -0400 Subject: [PATCH] chore: autoremove chat groups --- src/status/chat.nim | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/src/status/chat.nim b/src/status/chat.nim index 6d31a53501..16a3b800e3 100644 --- a/src/status/chat.nim +++ b/src/status/chat.nim @@ -153,12 +153,32 @@ proc updateContacts*(self: ChatModel, contacts: seq[Profile]) = self.contacts[c.id] = c self.events.emit("chatUpdate", ChatUpdateArgs(contacts: contacts)) + +proc deleteSpamGroupChats(self: ChatModel, chats: seq[Chat], contacts: seq[Profile]) = + for chat in chats: + if chat.chatType == ChatType.PrivateGroupChat: + var isContact = false + var joined = false + for member in chat.members: + if member.id == self.publicKey and member.joined: + joined = true + if member.admin and member.joined: + for contact in contacts: + if contact.address == member.id: + isContact = true + if not isContact and not joined: + discard status_chat.leaveGroupChat(chat.id) + status_chat.deactivateChat(chat) + + proc init*(self: ChatModel, pubKey: string) = self.publicKey = pubKey var chatList = status_chat.loadChats() var contacts = getAddedContacts() + self.deleteSpamGroupChats(chatList, contacts) + let profileUpdatesChatIds = chatList.filter(c => c.chatType == ChatType.Profile).map(c => c.id) if chatList.filter(c => c.chatType == ChatType.Timeline).len == 0: