Rework Backend, models and items organization

This commit is contained in:
miruka
2019-05-11 15:52:56 -04:00
parent 6051ba187a
commit bbc4c15ad3
22 changed files with 258 additions and 169 deletions

View File

@@ -7,7 +7,7 @@ Banner {
color: HStyle.chat.inviteBanner.background
avatar.name: inviter ? inviter.displayname : ""
//avatar.imageSource: inviter ? inviter.avatar_url : ""
//avatar.imageUrl: inviter ? inviter.avatar_url : ""
labelText:
(inviter ?

View File

@@ -14,8 +14,11 @@ HColumnLayout {
.roomCategories.get(category)
.rooms.get(roomId)
readonly property var sender: Backend.users.get(userId)
readonly property bool hasUnknownDevices:
Backend.clients.get(userId).roomHasUnknownDevices(roomId)
category == "Rooms" ?
Backend.clients.get(userId).roomHasUnknownDevices(roomId) : false
id: chatPage
onFocusChanged: sendBox.setFocus()
@@ -38,7 +41,7 @@ HColumnLayout {
Layout.fillHeight: true
}
TypingUsersBar {}
TypingMembersBar {}
InviteBanner {
visible: category === "Invites"
@@ -46,12 +49,12 @@ HColumnLayout {
}
UnknownDevicesBanner {
visible: category === "Rooms" && hasUnknownDevices
visible: category == "Rooms" && hasUnknownDevices
}
SendBox {
id: sendBox
visible: category === "Rooms" && ! hasUnknownDevices
visible: category == "Rooms" && ! hasUnknownDevices
}
LeftBanner {

View File

@@ -16,7 +16,7 @@ Row {
HAvatar {
id: avatar
name: displayName
name: sender.displayName.value
hidden: combine
dimension: 28
}
@@ -26,12 +26,12 @@ Row {
id: contentLabel
text: "<font color='" +
Qt.hsla(Backend.hueFromString(displayName.value || dict.sender),
Qt.hsla(Backend.hueFromString(sender.displayName.value),
HStyle.chat.event.saturation,
HStyle.chat.event.lightness,
1) +
"'>" +
(displayName.value || dict.sender) + " " +
sender.displayName.value + " " +
ChatJS.getEventText(type, dict) +
"&nbsp;&nbsp;" +

View File

@@ -10,7 +10,7 @@ Row {
HAvatar {
id: avatar
hidden: combine
name: displayName
name: sender.displayName.value
}
Rectangle {
@@ -37,7 +37,7 @@ Row {
visible: height > 0
id: nameLabel
text: displayName.value || dict.sender
text: sender.displayName.value
color: Qt.hsla(Backend.hueFromString(text),
HStyle.displayName.saturation,
HStyle.displayName.lightness,

View File

@@ -26,8 +26,7 @@ Column {
readonly property bool isUndecryptableEvent:
type === "OlmEvent" || type === "MegolmEvent"
readonly property var displayName:
Backend.getUserDisplayName(dict.sender)
readonly property var sender: Backend.users.get(dict.sender)
readonly property bool isOwn:
chatPage.userId === dict.sender

View File

@@ -18,7 +18,7 @@ HGlassRectangle {
HAvatar {
id: avatar
name: Backend.getUserDisplayName(chatPage.userId)
name: chatPage.sender.displayName.value
dimension: root.Layout.minimumHeight
}

View File

@@ -4,9 +4,9 @@ import "../Base"
import "utils.js" as ChatJS
HGlassRectangle {
property var typingUsers: chatPage.roomInfo.typingUsers
property var typingMembers: chatPage.roomInfo.typingMembers
color: HStyle.chat.typingUsers.background
color: HStyle.chat.typingMembers.background
Layout.fillWidth: true
Layout.minimumHeight: usersLabel.text ? usersLabel.implicitHeight : 0
@@ -16,7 +16,7 @@ HGlassRectangle {
id: usersLabel
anchors.fill: parent
text: ChatJS.getTypingUsersText(typingUsers, chatPage.userId)
text: ChatJS.getTypingMembersText(typingMembers, chatPage.userId)
elide: Text.ElideMiddle
maximumLineCount: 1
}

View File

@@ -84,9 +84,7 @@ function getHistoryVisibilityEventText(dict) {
function getStateDisplayName(dict) {
// The dict.content.displayname may be outdated, prefer
// retrieving it fresh
var name = Backend.getUserDisplayName(dict.state_key, false)
return name === dict.state_key ?
dict.content.displayname : name.result()
return Backend.users.get(dict.state_key).displayName.value
}
@@ -168,7 +166,7 @@ function getLeftBannerText(leftEvent) {
if (info.membership)
var name = Backend.getUserDisplayName(leftEvent.sender, false).result()
var name = Backend.users.get(leftEvent.sender).displayName.value
return "<b>" + name + "</b> " +
(info.membership == "ban" ?
@@ -187,19 +185,19 @@ function getLeftBannerText(leftEvent) {
function getLeftBannerAvatarName(leftEvent, accountId) {
if (! leftEvent || leftEvent.state_key == leftEvent.sender) {
return Backend.getUserDisplayName(accountId, false).result()
return Backend.users.get(accountId).displayName.value
}
return Backend.getUserDisplayName(leftEvent.sender, false).result()
return Backend.users.get(leftEvent.sender).displayName.value
}
function getTypingUsersText(users, ourAccountId) {
function getTypingMembersText(users, ourAccountId) {
var names = []
for (var i = 0; i < users.length; i++) {
if (users[i] !== ourAccountId) {
names.push(Backend.getUserDisplayName(users[i], false).result())
names.push(Backend.users.get(users[i]).displayName.value)
}
}