From 5cc31ae28d5bded10701123ed0a0c75d04477b8e Mon Sep 17 00:00:00 2001 From: Iuri Matias Date: Tue, 19 May 2020 19:39:04 -0400 Subject: [PATCH] display identicons; display correct details for the user own messages --- src/app/chat/core.nim | 17 +++++++++++------ src/app/chat/messageList.nim | 5 ++++- src/app/chat/messages.nim | 19 +++++++++++++++++++ ui/app/AppLayouts/ChatLayout.qml | 2 +- 4 files changed, 35 insertions(+), 8 deletions(-) diff --git a/src/app/chat/core.nim b/src/app/chat/core.nim index 733cee7861..e9b47aa532 100644 --- a/src/app/chat/core.nim +++ b/src/app/chat/core.nim @@ -1,4 +1,5 @@ import NimQml +import json import ../../status/chat as status_chat import view import messages @@ -7,14 +8,17 @@ import ../../status/utils var sendMessage = proc (view: ChatsView, chatId: string, msg: string): string = echo "sending public message!" - let chatMessage = newChatMessage() - chatMessage.userName = "me" #TODO get users username - chatMessage.message = msg - chatMessage.timestamp = "0" #TODO convert to date/time? - chatMessage.isCurrentUser = true + var sentMessage = status_chat.sendChatMessage(chatId, msg) + var parsedMessage = parseJson(sentMessage)["result"]["chats"][0]["lastMessage"] + let chatMessage = newChatMessage() + chatMessage.userName = parsedMessage["alias"].str + chatMessage.message = msg + chatMessage.timestamp = $parsedMessage["timestamp"] + chatMessage.identicon = parsedMessage["identicon"].str + chatMessage.isCurrentUser = true view.pushMessage(chatMessage) - status_chat.sendChatMessage(chatId, msg) + sentMessage type ChatController* = ref object of SignalSubscriber view*: ChatsView @@ -57,5 +61,6 @@ method onSignal(self: ChatController, data: Signal) = chatMessage.userName = message.alias chatMessage.message = message.text chatMessage.timestamp = message.timestamp #TODO convert to date/time? + chatMessage.identicon = message.identicon chatMessage.isCurrentUser = message.isCurrentUser #TODO: Determine who originated the message self.view.pushMessage(chatMessage) diff --git a/src/app/chat/messageList.nim b/src/app/chat/messageList.nim index 3a7ae6ca85..7f15692cd4 100644 --- a/src/app/chat/messageList.nim +++ b/src/app/chat/messageList.nim @@ -5,7 +5,8 @@ type UserName = UserRole + 1, Message = UserRole + 2, Timestamp = UserRole + 3 - IsCurrentUser = UserRole + 4 + Identicon = UserRole + 4 + IsCurrentUser = UserRole + 5 QtObject: type @@ -40,6 +41,7 @@ QtObject: of ChatMessageRoles.UserName: result = newQVariant(message.userName) of ChatMessageRoles.Message: result = newQVariant(message.message) of ChatMessageRoles.Timestamp: result = newQVariant(message.timestamp) + of ChatMessageRoles.Identicon: result = newQVariant(message.identicon) of ChatMessageRoles.IsCurrentUser: result = newQVariant(message.isCurrentUser) method roleNames(self: ChatMessageList): Table[int, string] = @@ -47,6 +49,7 @@ QtObject: ChatMessageRoles.UserName.int:"userName", ChatMessageRoles.Message.int:"message", ChatMessageRoles.Timestamp.int:"timestamp", + ChatMessageRoles.Identicon.int:"identicon", ChatMessageRoles.IsCurrentUser.int:"isCurrentUser" }.toTable diff --git a/src/app/chat/messages.nim b/src/app/chat/messages.nim index 9828a10802..6dd5da7ebe 100644 --- a/src/app/chat/messages.nim +++ b/src/app/chat/messages.nim @@ -5,6 +5,7 @@ QtObject: userName: string message: string timestamp: string + identicon: string isCurrentUser: bool proc delete*(self: ChatMessage) = @@ -18,6 +19,7 @@ QtObject: result.userName = "" result.message = "" result.timestamp = "0" + result.identicon = "" result.isCurrentUser = false result.setup @@ -72,6 +74,23 @@ QtObject: write = setTimestamp notify = timestampChanged + proc identicon*(self: ChatMessage): string {.slot.} = + result = self.identicon + + proc identiconChanged*(self: ChatMessage, identicon: string) {.signal.} + + proc setIdenticon(self: ChatMessage, identicon: string) {.slot.} = + if self.identicon == identicon: return + self.identicon = identicon + self.identiconChanged(identicon) + + proc `identicon=`*(self: ChatMessage, identicon: string) = self.setIdenticon(identicon) + + QtProperty[string] identicon: + read = identicon + write = setIdenticons + notify = identiconsChanged + proc isCurrentUser*(self: ChatMessage): bool {.slot.} = result = self.isCurrentUser diff --git a/ui/app/AppLayouts/ChatLayout.qml b/ui/app/AppLayouts/ChatLayout.qml index 7d6b4bcb28..cc08126704 100644 --- a/ui/app/AppLayouts/ChatLayout.qml +++ b/ui/app/AppLayouts/ChatLayout.qml @@ -270,7 +270,7 @@ SplitView { anchors.top: parent.top anchors.topMargin: Theme.padding fillMode: Image.PreserveAspectFit - source: "../img/placeholder-profile.png" + source: identicon } TextEdit {