mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-03 06:35:08 -04:00
Refactor chat cache to add remoteGXS property to make chat last message more identificable
This commit is contained in:
parent
d3e3f14afd
commit
78fc0bc995
3 changed files with 68 additions and 38 deletions
|
@ -14,12 +14,16 @@ QtObject {
|
|||
id: lastMessageCache
|
||||
property var lastMessageList: ({})
|
||||
|
||||
signal lastMessageChanged()
|
||||
signal lastMessageChanged(var chatI, var newLastMessage)
|
||||
|
||||
|
||||
function updateLastMessageCache (chatId, chatModel){
|
||||
console.log("updateLastMessageCache (chatId, chatModel)", chatId)
|
||||
|
||||
// First creates the chat id object for don't wait to work with the object if is needed to call RS api
|
||||
if (!lastMessageList[chatId]) {
|
||||
lastMessageList[chatId] = {}
|
||||
console.log("Last message cache created!")
|
||||
}
|
||||
if (!chatModel) {
|
||||
rsApi.request( "/chat/messages/"+chatId, "", function (par){
|
||||
updateLastMessage(chatId, par.response)
|
||||
|
@ -32,8 +36,12 @@ QtObject {
|
|||
function updateLastMessage (chatId, chatModel){
|
||||
console.log("updateLastMessage (chatId, chatModel)")
|
||||
var lastMessage = findChatLastMessage (chatModel)
|
||||
lastMessageList[chatId] = lastMessage
|
||||
|
||||
lastMessageList[chatId].lastMessage = lastMessage
|
||||
if (!lastMessageList[chatId].remoteGXS) {
|
||||
var firstMessage = findChatFirstMessage (chatModel)
|
||||
setRemoteGXS(chatId, firstMessage.author_id)
|
||||
}
|
||||
lastMessageChanged(chatId, lastMessage)
|
||||
}
|
||||
|
||||
function findChatLastMessage (chatModel){
|
||||
|
@ -41,22 +49,35 @@ QtObject {
|
|||
return messagesData.slice(-1)[0]
|
||||
}
|
||||
|
||||
function findChatFirstMessage (chatModel){
|
||||
var messagesData = JSON.parse(chatModel).data
|
||||
return messagesData.slice[0]
|
||||
}
|
||||
|
||||
function setRemoteGXS (chatId, remoteGXS){
|
||||
if (lastMessageList[chatId] && !lastMessageList[chatId].remoteGXS){
|
||||
lastMessageList[chatId].remoteGXS = remoteGXS
|
||||
return true
|
||||
}
|
||||
else {
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
function getChatIdFromGxs (gxs){
|
||||
for (var key in lastMessageList) {
|
||||
if ( lastMessageList[key].author_id === gxs ) {
|
||||
if ( lastMessageList[key].remoteGXS === gxs ) {
|
||||
return key
|
||||
}
|
||||
}
|
||||
return undefined
|
||||
return ""
|
||||
}
|
||||
|
||||
function getChatLastMessage (chatId){
|
||||
if (lastMessageList[chatId]) {
|
||||
return lastMessageList[chatId]
|
||||
return lastMessageList[chatId].lastMessage
|
||||
}
|
||||
|
||||
return undefined
|
||||
return ""
|
||||
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue