fix(user-list): use the same userlist for community and chats

This commit is contained in:
Jonathan Rainville 2022-02-23 12:08:01 -05:00 committed by Iuri Matias
parent c2378e24aa
commit 18374a16d4
3 changed files with 42 additions and 109 deletions

View File

@ -87,13 +87,16 @@ StatusAppThreePanelLayout {
return chatContentModule.chatDetails.isUsersListAvailable
}
rightPanel: localAccountSensitiveSettings.communitiesEnabled && root.rootStore.chatCommunitySectionModule.isCommunity()?
communityUserListComponent :
userListComponent
rightPanel: userListComponent
Component {
id: communityUserListComponent
CommunityUserListPanel {
id: userListComponent
UserListPanel {
label: localAccountSensitiveSettings.communitiesEnabled &&
root.rootStore.chatCommunitySectionModule.isCommunity() ?
//% "Members"
qsTrId("members-label") :
qsTr("Last seen")
messageContextMenu: quickActionMessageOptionsMenu
usersModule: {
let chatContentModule = root.rootStore.currentChatContentModule()
@ -106,17 +109,6 @@ StatusAppThreePanelLayout {
}
}
Component {
id: userListComponent
UserListPanel {
messageContextMenu: quickActionMessageOptionsMenu
usersModule: {
let chatContentModule = root.rootStore.currentChatContentModule()
return chatContentModule.usersModule
}
}
}
Component {
id: contactsColumnComponent
ContactsColumnView {

View File

@ -4,9 +4,12 @@ import shared 1.0
import shared.panels 1.0
import shared.status 1.0
import utils 1.0
import "../controls"
import utils 1.0
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
Item {
id: root
@ -17,8 +20,9 @@ Item {
// usersModule on the backend contains everything needed for this component
property var usersModule
property var messageContextMenu
property string label
StyledText {
StatusBaseText {
id: titleText
anchors.top: parent.top
anchors.topMargin: Style.current.padding
@ -27,8 +31,9 @@ Item {
opacity: (root.width > 58) ? 1.0 : 0.0
visible: (opacity > 0.1)
font.pixelSize: Style.current.primaryTextFontSize
//% "Members"
text: qsTr("Last seen")
font.weight: Font.Medium
color: Theme.palette.directColor1
text: root.label
}
ListView {
@ -55,5 +60,30 @@ Item {
userStatus: model.onlineStatus
messageContextMenu: root.messageContextMenu
}
section.property: "onlineStatus"
section.delegate: (root.width > 58) ? sectionDelegateComponent : null
}
Component {
id: sectionDelegateComponent
Item {
width: parent.width
height: 24
StyledText {
anchors.fill: parent
anchors.leftMargin: Style.current.padding
verticalAlignment: Text.AlignVCenter
font.pixelSize: Style.current.additionalTextSize
color: Theme.palette.baseColor1
text: {
switch(parseInt(section)) {
case Constants.userStatus.offline: return qsTr("Offline")
case Constants.userStatus.online: return qsTr("Online")
case Constants.userStatus.doNotDisturb: return qsTr("Do not disturb")
case Constants.userStatus.idle: return qsTr("Idle")
}
}
}
}
}
}

View File

@ -1,89 +0,0 @@
import QtQuick 2.13
import QtQuick.Controls 2.13
import shared 1.0
import shared.panels 1.0
import shared.status 1.0
import utils 1.0
import "../../controls"
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
Item {
id: root
anchors.fill: parent
// Important:
// Each chat/channel has its own ChatContentModule and each ChatContentModule has a single usersModule
// usersModule on the backend contains everything needed for this component
property var usersModule
property var messageContextMenu
StatusBaseText {
id: titleText
anchors.top: parent.top
anchors.topMargin: Style.current.padding
anchors.left: parent.left
anchors.leftMargin: Style.current.padding
opacity: (root.width > 58) ? 1.0 : 0.0
visible: (opacity > 0.1)
font.pixelSize: Style.current.primaryTextFontSize
font.weight: Font.Medium
color: Theme.palette.directColor1
//% "Members"
text: qsTrId("members-label")
}
ListView {
id: userListView
clip: true
ScrollBar.vertical: ScrollBar {
policy: ScrollBar.AsNeeded
}
anchors {
top: titleText.bottom
topMargin: Style.current.padding
left: parent.left
right: parent.right
bottom: parent.bottom
bottomMargin: Style.current.bigPadding
}
boundsBehavior: Flickable.StopAtBounds
model: usersModule.model
delegate: UserDelegate {
publicKey: model.id
name: model.name
icon: model.icon
isIdenticon: model.isIdenticon
userStatus: model.onlineStatus
messageContextMenu: root.messageContextMenu
}
section.property: "onlineStatus"
section.delegate: (root.width > 58) ? sectionDelegateComponent : null
}
Component {
id: sectionDelegateComponent
Item {
width: parent.width
height: 24
StyledText {
anchors.fill: parent
anchors.leftMargin: Style.current.padding
verticalAlignment: Text.AlignVCenter
font.pixelSize: Style.current.additionalTextSize
color: Theme.palette.baseColor1
text: {
switch(parseInt(section)) {
case Constants.userStatus.offline: return qsTr("Offline")
case Constants.userStatus.online: return qsTr("Online")
case Constants.userStatus.doNotDisturb: return qsTr("Do not disturb")
case Constants.userStatus.idle: return qsTr("Idle")
}
}
}
}
}
}