refactor chat usage of libstatus

This commit is contained in:
Iuri Matias 2021-06-08 16:56:58 -04:00
parent 2e8af89adf
commit a90aa4cc3a
2 changed files with 25 additions and 9 deletions

View File

@ -1,6 +1,5 @@
import NimQml, Tables, json, sequtils, chronicles, times, re, sugar, strutils, os, strformat, algorithm import NimQml, Tables, json, sequtils, chronicles, times, re, sugar, strutils, os, strformat, algorithm
import ../../status/[status, mailservers] import ../../status/[status, mailservers]
import ../../status/libstatus/chat as libstatus_chat
import ../../status/constants import ../../status/constants
import ../../status/utils as status_utils import ../../status/utils as status_utils
import ../../status/chat as status_chat import ../../status/chat as status_chat
@ -37,7 +36,7 @@ const getLinkPreviewDataTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.
var success: bool var success: bool
# We need to call directly on libstatus because going through the status model is not thread safe # We need to call directly on libstatus because going through the status model is not thread safe
let let
response = libstatus_chat.getLinkPreviewData(arg.link, success) response = status_chat.getLinkPreviewData(arg.link, success)
responseJson = %* { "result": %response, "success": %success, "uuid": %arg.uuid } responseJson = %* { "result": %response, "success": %success, "uuid": %arg.uuid }
arg.finish(responseJson) arg.finish(responseJson)
@ -55,19 +54,19 @@ const asyncMessageLoadTask: Task = proc(argEncoded: string) {.gcsafe, nimcall.}
let arg = decode[AsyncMessageLoadTaskArg](argEncoded) let arg = decode[AsyncMessageLoadTaskArg](argEncoded)
var messages: JsonNode var messages: JsonNode
var msgCallSuccess: bool var msgCallSuccess: bool
let msgCallResult = rpcChatMessages(arg.chatId, newJString(""), 20, msgCallSuccess) let msgCallResult = status_chat.rpcChatMessages(arg.chatId, newJString(""), 20, msgCallSuccess)
if(msgCallSuccess): if(msgCallSuccess):
messages = msgCallResult.parseJson()["result"] messages = msgCallResult.parseJson()["result"]
var reactions: JsonNode var reactions: JsonNode
var reactionsCallSuccess: bool var reactionsCallSuccess: bool
let reactionsCallResult = rpcReactions(arg.chatId, newJString(""), 20, reactionsCallSuccess) let reactionsCallResult = status_chat.rpcReactions(arg.chatId, newJString(""), 20, reactionsCallSuccess)
if(reactionsCallSuccess): if(reactionsCallSuccess):
reactions = reactionsCallResult.parseJson()["result"] reactions = reactionsCallResult.parseJson()["result"]
var pinnedMessages: JsonNode var pinnedMessages: JsonNode
var pinnedMessagesCallSuccess: bool var pinnedMessagesCallSuccess: bool
let pinnedMessagesCallResult = rpcPinnedChatMessages(arg.chatId, newJString(""), 20, pinnedMessagesCallSuccess) let pinnedMessagesCallResult = status_chat.rpcPinnedChatMessages(arg.chatId, newJString(""), 20, pinnedMessagesCallSuccess)
if(pinnedMessagesCallSuccess): if(pinnedMessagesCallSuccess):
pinnedMessages = pinnedMessagesCallResult.parseJson()["result"] pinnedMessages = pinnedMessagesCallResult.parseJson()["result"]
@ -689,17 +688,17 @@ QtObject:
let messages = rpcResponseObj{"messages"} let messages = rpcResponseObj{"messages"}
if(messages != nil and messages.kind != JNull): if(messages != nil and messages.kind != JNull):
let chatMessages = parseChatMessagesResponse(messages) let chatMessages = status_chat.parseChatMessagesResponse(chatId, messages)
self.status.chat.chatMessages(chatId, true, chatMessages[0], chatMessages[1]) self.status.chat.chatMessages(chatId, true, chatMessages[0], chatMessages[1])
let rxns = rpcResponseObj{"reactions"} let rxns = rpcResponseObj{"reactions"}
if(rxns != nil and rxns.kind != JNull): if(rxns != nil and rxns.kind != JNull):
let reactions = parseReactionsResponse(chatId, rxns) let reactions = status_chat.parseReactionsResponse(chatId, rxns)
self.status.chat.chatReactions(chatId, true, reactions[0], reactions[1]) self.status.chat.chatReactions(chatId, true, reactions[0], reactions[1])
let pinnedMsgs = rpcResponseObj{"pinnedMessages"} let pinnedMsgs = rpcResponseObj{"pinnedMessages"}
if(pinnedMsgs != nil and pinnedMsgs.kind != JNull): if(pinnedMsgs != nil and pinnedMsgs.kind != JNull):
let pinnedMessages = parseChatPinnedMessagesResponse(pinnedMsgs) let pinnedMessages = status_chat.parseChatMessagesResponse(chatId, pinnedMsgs, true)
self.status.chat.pinnedMessagesByChatID(chatId, pinnedMessages[0], pinnedMessages[1]) self.status.chat.pinnedMessagesByChatID(chatId, pinnedMessages[0], pinnedMessages[1])
proc asyncActivityNotificationLoaded*(self: ChatsView, rpcResponse: string) {.slot.} = proc asyncActivityNotificationLoaded*(self: ChatsView, rpcResponse: string) {.slot.} =

View File

@ -574,3 +574,20 @@ proc markActivityCenterNotificationsRead*(self: ChatModel, ids: seq[string]): st
proc unreadActivityCenterNotificationsCount*(self: ChatModel): int = proc unreadActivityCenterNotificationsCount*(self: ChatModel): int =
status_chat.unreadActivityCenterNotificationsCount() status_chat.unreadActivityCenterNotificationsCount()
proc getLinkPreviewData*(link: string, success: var bool): JsonNode =
result = status_chat.getLinkPreviewData(link, success)
proc rpcChatMessages*(chatId: string, cursorVal: JsonNode, limit: int, success: var bool): string =
result = status_chat.rpcChatMessages(chatId, cursorVal, limit, success)
proc rpcReactions*(chatId: string, cursorVal: JsonNode, limit: int, success: var bool): string =
result = status_chat.rpcReactions(chatId, cursorVal, limit, success)
proc rpcPinnedChatMessages*(chatId: string, cursorVal: JsonNode, limit: int, success: var bool): string =
result = status_chat.rpcPinnedChatMessages(chatId, cursorVal, limit, success)
proc parseReactionsResponse*(chatId: string, rpcResult: JsonNode): (string, seq[Reaction]) =
result = status_chat.parseReactionsResponse(chatId, rpcResult)
proc parseChatMessagesResponse*(chatId: string, rpcResult: JsonNode, isPin: bool = false): (string, seq[Message]) =
result = status_chat.parseChatMessagesResponse(chatId, rpcResult, isPin)