feat(@desktop/general): contacts requests participates in calculating count badge for `Chat` section

This commit is contained in:
Sale Djenic 2022-02-09 17:04:31 +01:00 committed by saledjenic
parent 00156cc9c0
commit 3a25f8d1c8
6 changed files with 24 additions and 8 deletions

View File

@ -342,6 +342,13 @@ method getChatContentModule*(self: Module, chatId: string): QVariant =
return self.chatContentModules[chatId].getModuleAsVariant() return self.chatContentModules[chatId].getModuleAsVariant()
proc updateParentNotifications(self: Module) =
var (sectionHasUnreadMessages, sectionNotificationCount) = self.view.chatsModel().getAllNotifications()
if(not self.controller.isCommunity()):
sectionNotificationCount += self.view.contactRequestsModel().getCount()
sectionHasUnreadMessages = sectionHasUnreadMessages or sectionNotificationCount > 0
self.delegate.onNotificationsUpdated(self.controller.getMySectionId(), sectionHasUnreadMessages, sectionNotificationCount)
proc updateNotifications(self: Module, chatId: string, unviewedMessagesCount: int, unviewedMentionsCount: int) = proc updateNotifications(self: Module, chatId: string, unviewedMessagesCount: int, unviewedMentionsCount: int) =
let hasUnreadMessages = unviewedMessagesCount > 0 let hasUnreadMessages = unviewedMessagesCount > 0
# update model of this module (appropriate chat from the chats list (chats model)) # update model of this module (appropriate chat from the chats list (chats model))
@ -350,8 +357,7 @@ proc updateNotifications(self: Module, chatId: string, unviewedMessagesCount: in
if (self.chatContentModules.contains(chatId)): if (self.chatContentModules.contains(chatId)):
self.chatContentModules[chatId].onNotificationsUpdated(hasUnreadMessages, unviewedMentionsCount) self.chatContentModules[chatId].onNotificationsUpdated(hasUnreadMessages, unviewedMentionsCount)
# update parent module # update parent module
let (sectionHasUnreadMessages, sectionNotificationCount) = self.view.chatsModel().getAllNotifications() self.updateParentNotifications()
self.delegate.onNotificationsUpdated(self.controller.getMySectionId(), sectionHasUnreadMessages, sectionNotificationCount)
method onActiveSectionChange*(self: Module, sectionId: string) = method onActiveSectionChange*(self: Module, sectionId: string) =
if(sectionId != self.controller.getMySectionId()): if(sectionId != self.controller.getMySectionId()):
@ -558,6 +564,7 @@ method acceptContactRequest*(self: Module, publicKey: string) =
method onContactAccepted*(self: Module, publicKey: string) = method onContactAccepted*(self: Module, publicKey: string) =
self.view.contactRequestsModel().removeItemWithPubKey(publicKey) self.view.contactRequestsModel().removeItemWithPubKey(publicKey)
self.updateParentNotifications()
method acceptAllContactRequests*(self: Module) = method acceptAllContactRequests*(self: Module) =
let pubKeys = self.view.contactRequestsModel().getPublicKeys() let pubKeys = self.view.contactRequestsModel().getPublicKeys()
@ -569,6 +576,7 @@ method rejectContactRequest*(self: Module, publicKey: string) =
method onContactRejected*(self: Module, publicKey: string) = method onContactRejected*(self: Module, publicKey: string) =
self.view.contactRequestsModel().removeItemWithPubKey(publicKey) self.view.contactRequestsModel().removeItemWithPubKey(publicKey)
self.updateParentNotifications()
method rejectAllContactRequests*(self: Module) = method rejectAllContactRequests*(self: Module) =
let pubKeys = self.view.contactRequestsModel().getPublicKeys() let pubKeys = self.view.contactRequestsModel().getPublicKeys()
@ -593,6 +601,7 @@ method onContactDetailsUpdated*(self: Module, publicKey: string) =
not self.view.contactRequestsModel().containsItemWithPubKey(publicKey)): not self.view.contactRequestsModel().containsItemWithPubKey(publicKey)):
let item = self.createItemFromPublicKey(publicKey) let item = self.createItemFromPublicKey(publicKey)
self.view.contactRequestsModel().addItem(item) self.view.contactRequestsModel().addItem(item)
self.updateParentNotifications()
let (chatName, chatImage, isIdenticon) = self.controller.getOneToOneChatNameAndImage(publicKey) let (chatName, chatImage, isIdenticon) = self.controller.getOneToOneChatNameAndImage(publicKey)
self.view.chatsModel().updateItemDetails(publicKey, chatName, chatImage, isIdenticon) self.view.chatsModel().updateItemDetails(publicKey, chatName, chatImage, isIdenticon)

View File

@ -243,6 +243,9 @@ method setUserStatus*(self: Controller, status: bool) =
method getContact*(self: Controller, id: string): ContactsDto = method getContact*(self: Controller, id: string): ContactsDto =
return self.contactsService.getContactById(id) return self.contactsService.getContactById(id)
method getContacts*(self: Controller): seq[ContactsDto] =
return self.contactsService.getContacts()
method getContactNameAndImage*(self: Controller, contactId: string): method getContactNameAndImage*(self: Controller, contactId: string):
tuple[name: string, image: string, isIdenticon: bool] = tuple[name: string, image: string, isIdenticon: bool] =
return self.contactsService.getContactNameAndImage(contactId) return self.contactsService.getContactNameAndImage(contactId)

View File

@ -41,6 +41,9 @@ method setUserStatus*(self: AccessInterface, status: bool) {.base.} =
method getContact*(self: AccessInterface, id: string): ContactsDto {.base.} = method getContact*(self: AccessInterface, id: string): ContactsDto {.base.} =
raise newException(ValueError, "No implementation available") raise newException(ValueError, "No implementation available")
method getContacts*(self: AccessInterface): seq[ContactsDto] {.base.} =
raise newException(ValueError, "No implementation available")
method getContactNameAndImage*(self: AccessInterface, contactId: string): method getContactNameAndImage*(self: AccessInterface, contactId: string):
tuple[name: string, image: string, isIdenticon: bool] {.base.} = tuple[name: string, image: string, isIdenticon: bool] {.base.} =
raise newException(ValueError, "No implementation available") raise newException(ValueError, "No implementation available")

View File

@ -256,9 +256,10 @@ method load*[T](
var activeSectionId = singletonInstance.localAccountSensitiveSettings.getActiveSection() var activeSectionId = singletonInstance.localAccountSensitiveSettings.getActiveSection()
# Chat Section # Chat Section
let receivedContactRequests = self.controller.getContacts().filter(x => x.requestReceived() and not x.isContact() and not x.isBlocked())
let (unviewedCount, mentionsCount) = self.controller.getNumOfNotificaitonsForChat() let (unviewedCount, mentionsCount) = self.controller.getNumOfNotificaitonsForChat()
let hasNotification = unviewedCount > 0 or mentionsCount > 0 let notificationsCount = mentionsCount + receivedContactRequests.len
let notificationsCount = mentionsCount let hasNotification = unviewedCount > 0 or notificationsCount > 0
let chatSectionItem = initItem(conf.CHAT_SECTION_ID, SectionType.Chat, conf.CHAT_SECTION_NAME, let chatSectionItem = initItem(conf.CHAT_SECTION_ID, SectionType.Chat, conf.CHAT_SECTION_NAME,
amISectionAdmin = false, amISectionAdmin = false,
description = "", description = "",

View File

@ -27,7 +27,7 @@ QtObject:
result.setup result.setup
proc countChanged(self: Model) {.signal.} proc countChanged(self: Model) {.signal.}
proc getCount(self: Model): int {.slot.} = proc getCount*(self: Model): int {.slot.} =
self.items.len self.items.len
QtProperty[int] count: QtProperty[int] count:
read = getCount read = getCount

View File

@ -141,13 +141,13 @@ QtObject:
return toSeq(self.contacts.values) return toSeq(self.contacts.values)
proc getAddedContacts*(self: Service): seq[ContactsDto] = proc getAddedContacts*(self: Service): seq[ContactsDto] =
return self.getContacts().filter(x => x.added) return self.getContacts().filter(x => x.isContact())
proc getBlockedContacts*(self: Service): seq[ContactsDto] = proc getBlockedContacts*(self: Service): seq[ContactsDto] =
return self.getContacts().filter(x => x.blocked) return self.getContacts().filter(x => x.isBlocked())
proc getContactsWhoAddedMe*(self: Service): seq[ContactsDto] = proc getContactsWhoAddedMe*(self: Service): seq[ContactsDto] =
return self.getContacts().filter(x => x.hasAddedUs) return self.getContacts().filter(x => x.requestReceived())
proc fetchContact(self: Service, id: string): ContactsDto = proc fetchContact(self: Service, id: string): ContactsDto =
try: try: