refactor(@desktop/channel): refactor members list to only have one list per community
This commit is contained in:
parent
d28bcdb58a
commit
763041dab5
|
@ -42,7 +42,7 @@ proc newModule*(delegate: delegate_interface.AccessInterface, events: EventEmitt
|
|||
belongsToCommunity: bool, isUsersListAvailable: bool, settingsService: settings_service.Service,
|
||||
nodeConfigurationService: node_configuration_service.Service, contactService: contact_service.Service, chatService: chat_service.Service,
|
||||
communityService: community_service.Service, messageService: message_service.Service, gifService: gif_service.Service,
|
||||
mailserversService: mailservers_service.Service):
|
||||
mailserversService: mailservers_service.Service, communityUsersModule: users_module.AccessInterface):
|
||||
Module =
|
||||
result = Module()
|
||||
result.delegate = delegate
|
||||
|
@ -55,10 +55,11 @@ proc newModule*(delegate: delegate_interface.AccessInterface, events: EventEmitt
|
|||
result.inputAreaModule = input_area_module.newModule(result, sectionId, chatId, belongsToCommunity, chatService, communityService, gifService)
|
||||
result.messagesModule = messages_module.newModule(result, events, sectionId, chatId, belongsToCommunity,
|
||||
contactService, communityService, chatService, messageService, mailserversService)
|
||||
result.usersModule = users_module.newModule(
|
||||
result, events, sectionId, chatId, belongsToCommunity, isUsersListAvailable,
|
||||
contactService, chat_service, communityService, messageService
|
||||
)
|
||||
result.usersModule =
|
||||
if communityUsersModule == nil:
|
||||
users_module.newModule( events, sectionId, chatId, belongsToCommunity,
|
||||
isUsersListAvailable, contactService, chat_service, communityService, messageService)
|
||||
else: communityUsersModule
|
||||
|
||||
method delete*(self: Module) =
|
||||
self.inputAreaModule.delete
|
||||
|
@ -86,6 +87,8 @@ method load*(self: Module) =
|
|||
if(contactDto.image.thumbnail.len > 0):
|
||||
chatImage = contactDto.image.thumbnail
|
||||
|
||||
self.usersModule.load()
|
||||
|
||||
self.view.load(chatDto.id, chatDto.chatType.int, self.controller.belongsToCommunity(),
|
||||
self.controller.isUsersListAvailable(), chatName, chatImage,
|
||||
chatDto.color, chatDto.description, chatDto.emoji, hasNotification, notificationsCount,
|
||||
|
@ -94,7 +97,6 @@ method load*(self: Module) =
|
|||
|
||||
self.inputAreaModule.load()
|
||||
self.messagesModule.load()
|
||||
self.usersModule.load()
|
||||
|
||||
proc checkIfModuleDidLoad(self: Module) =
|
||||
if self.moduleLoaded:
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
import NimQml, strutils, sequtils, sugar
|
||||
import io_interface
|
||||
import ../io_interface as delegate_interface
|
||||
import view, controller
|
||||
import ../../../../shared_models/[member_model, member_item]
|
||||
import ../../../../../global/global_singleton
|
||||
|
@ -17,7 +16,6 @@ export io_interface
|
|||
|
||||
type
|
||||
Module* = ref object of io_interface.AccessInterface
|
||||
delegate: delegate_interface.AccessInterface
|
||||
view: View
|
||||
viewVariant: QVariant
|
||||
controller: Controller
|
||||
|
@ -27,13 +25,12 @@ type
|
|||
method addChatMember*(self: Module, member: ChatMember)
|
||||
|
||||
proc newModule*(
|
||||
delegate: delegate_interface.AccessInterface, events: EventEmitter, sectionId: string, chatId: string,
|
||||
events: EventEmitter, sectionId: string, chatId: string,
|
||||
belongsToCommunity: bool, isUsersListAvailable: bool, contactService: contact_service.Service,
|
||||
chatService: chat_service.Service, communityService: community_service.Service,
|
||||
messageService: message_service.Service,
|
||||
): Module =
|
||||
result = Module()
|
||||
result.delegate = delegate
|
||||
result.view = view.newView(result)
|
||||
result.viewVariant = newQVariant(result.view)
|
||||
result.controller = controller.newController(
|
||||
|
@ -48,8 +45,9 @@ method delete*(self: Module) =
|
|||
self.controller.delete
|
||||
|
||||
method load*(self: Module) =
|
||||
self.controller.init()
|
||||
self.view.load()
|
||||
if not self.moduleLoaded:
|
||||
self.controller.init()
|
||||
self.view.load()
|
||||
|
||||
method isLoaded*(self: Module): bool =
|
||||
return self.moduleLoaded
|
||||
|
@ -60,7 +58,6 @@ method viewDidLoad*(self: Module) =
|
|||
self.addChatMember(member)
|
||||
|
||||
self.moduleLoaded = true
|
||||
self.delegate.usersDidLoad()
|
||||
|
||||
method getModuleAsVariant*(self: Module): QVariant =
|
||||
return self.viewVariant
|
||||
|
@ -140,6 +137,9 @@ method addChatMember*(self: Module, member: ChatMember) =
|
|||
))
|
||||
|
||||
method onChatMembersAdded*(self: Module, ids: seq[string]) =
|
||||
if ids.len() == 0:
|
||||
return
|
||||
|
||||
let members = self.controller.getChatMembers()
|
||||
for id in ids:
|
||||
for member in members:
|
||||
|
|
|
@ -8,6 +8,7 @@ import ../../shared_models/user_item as user_item
|
|||
import ../../shared_models/user_model as user_model
|
||||
|
||||
import chat_content/module as chat_content_module
|
||||
import chat_content/users/module as users_module
|
||||
|
||||
import ../../../global/app_sections_config as conf
|
||||
import ../../../global/global_singleton
|
||||
|
@ -38,6 +39,7 @@ type
|
|||
controller: Controller
|
||||
chatContentModules: OrderedTable[string, chat_content_module.AccessInterface]
|
||||
moduleLoaded: bool
|
||||
usersModule: users_module.AccessInterface
|
||||
|
||||
# Forward declaration
|
||||
proc buildChatSectionUI(self: Module,
|
||||
|
@ -77,6 +79,12 @@ proc newModule*(
|
|||
|
||||
result.chatContentModules = initOrderedTable[string, chat_content_module.AccessInterface]()
|
||||
|
||||
# Simple community channels uses comminity usersModule while chats uses their own usersModule
|
||||
if isCommunity:
|
||||
result.usersModule = users_module.newModule(
|
||||
events, sectionId, chatId = "", belongsToCommunity = true, isUsersListAvailable = true,
|
||||
contactService, chat_service, communityService, messageService)
|
||||
|
||||
method delete*(self: Module) =
|
||||
for cModule in self.chatContentModules.values:
|
||||
cModule.delete
|
||||
|
@ -84,6 +92,8 @@ method delete*(self: Module) =
|
|||
self.view.delete
|
||||
self.viewVariant.delete
|
||||
self.controller.delete
|
||||
if self.usersModule != nil:
|
||||
self.usersModule.delete
|
||||
|
||||
method isCommunity*(self: Module): bool =
|
||||
return self.controller.isCommunity()
|
||||
|
@ -108,7 +118,7 @@ proc addSubmodule(self: Module, chatId: string, belongToCommunity: bool, isUsers
|
|||
mailserversService: mailservers_service.Service) =
|
||||
self.chatContentModules[chatId] = chat_content_module.newModule(self, events, self.controller.getMySectionId(), chatId,
|
||||
belongToCommunity, isUsersListAvailable, settingsService, nodeConfigurationService, contactService, chatService, communityService,
|
||||
messageService, gifService, mailserversService)
|
||||
messageService, gifService, mailserversService, self.usersModule)
|
||||
|
||||
proc removeSubmodule(self: Module, chatId: string) =
|
||||
if(not self.chatContentModules.contains(chatId)):
|
||||
|
@ -135,7 +145,6 @@ proc buildChatSectionUI(
|
|||
for chatDto in channelGroup.chats:
|
||||
if (chatDto.categoryId != ""):
|
||||
continue
|
||||
|
||||
let hasNotification = not chatDto.muted and (chatDto.unviewedMessagesCount > 0 or chatDto.unviewedMentionsCount > 0)
|
||||
let notificationsCount = chatDto.unviewedMentionsCount
|
||||
|
||||
|
@ -186,7 +195,6 @@ proc buildChatSectionUI(
|
|||
|
||||
let categoryChats = channelGroup.chats.filter(c => c.categoryId == cat.id)
|
||||
for chatDto in categoryChats:
|
||||
|
||||
let hasNotification = chatDto.unviewedMessagesCount > 0 or chatDto.unviewedMentionsCount > 0
|
||||
let notificationsCount = chatDto.unviewedMentionsCount
|
||||
|
||||
|
@ -284,6 +292,8 @@ method load*(
|
|||
if(not self.controller.isCommunity()):
|
||||
# we do this only in case of chat section (not in case of communities)
|
||||
self.initContactRequestsModel()
|
||||
else:
|
||||
self.usersModule.load()
|
||||
|
||||
let activeChatId = self.controller.getActiveChatId()
|
||||
for chatId, cModule in self.chatContentModules:
|
||||
|
|
Loading…
Reference in New Issue