fix: chat reordering eventually not working
This commit is contained in:
parent
4cda8d8835
commit
04e1db6b56
|
@ -293,7 +293,7 @@ QtObject:
|
|||
|
||||
proc reorder*(self: Model, chatId, categoryId: string, position: int) =
|
||||
let index = self.getItemIdxById(chatId)
|
||||
if(index == -1 or position == index):
|
||||
if(index == -1):
|
||||
return
|
||||
|
||||
let idx = self.createIndex(index, 0, nil)
|
||||
|
|
|
@ -71,7 +71,8 @@ proc `$`*(self: ChatDto): string =
|
|||
joined: {self.joined},
|
||||
syncedTo: {self.syncedTo},
|
||||
syncedFrom: {self.syncedFrom},
|
||||
categoryId: {self.categoryId}
|
||||
categoryId: {self.categoryId},
|
||||
position: {self.position}
|
||||
)"""
|
||||
|
||||
proc toChatMember(jsonObj: JsonNode): ChatMember =
|
||||
|
|
|
@ -543,6 +543,20 @@ QtObject:
|
|||
if response.result.isNil or response.result.kind == JNull:
|
||||
error "response is invalid", methodName="reorderCommunityChat"
|
||||
|
||||
if response.result != nil and response.result.kind != JNull:
|
||||
let updatedCommunity = response.result["communities"][0].toCommunityDto()
|
||||
for chat in updatedCommunity.chats:
|
||||
let prev_chat_idx = findIndexById(chat.id, self.joinedCommunities[communityId].chats)
|
||||
if prev_chat_idx > -1:
|
||||
let fullChatId = communityId & chat.id
|
||||
let prev_chat = self.joinedCommunities[communityId].chats[prev_chat_idx]
|
||||
if(chat.position != prev_chat.position and chat.categoryId == categoryId):
|
||||
var chatDetails = self.chatService.getChatById(fullChatId) # we are free to do this cause channel must be created before we add it to a category
|
||||
self.joinedCommunities[communityId].chats[prev_chat_idx].position = chat.position
|
||||
chatDetails.updateMissingFields(self.joinedCommunities[communityId].chats[prev_chat_idx])
|
||||
self.chatService.updateOrAddChat(chatDetails) # we have to update chats stored in the chat service.
|
||||
self.events.emit(SIGNAL_COMMUNITY_CHANNEL_REORDERED, CommunityChatOrderArgs(communityId: updatedCommunity.id, chatId: fullChatId, categoryId: chat.categoryId, position: chat.position))
|
||||
|
||||
except Exception as e:
|
||||
error "Error reordering community channel", msg = e.msg, communityId, chatId, position, methodName="reorderCommunityChat"
|
||||
|
||||
|
|
Loading…
Reference in New Issue