feat(ActivityCenter): customize badgies for communities and group chats

This commit is contained in:
MishkaRogachev 2022-09-21 16:00:35 +03:00 committed by Mikhail Rogachev
parent 239563e93b
commit b923c97773
7 changed files with 66 additions and 24 deletions

View File

@ -0,0 +1,19 @@
import QtQuick 2.14
import QtQuick.Layouts 1.14
import utils 1.0
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
Rectangle {
id: root
height: visible ? 24 : 0
width: childrenRect.width
radius: height / 2
border.width: 1
border.color: Style.current.borderSecondary
color: Style.current.transparent
}

View File

@ -11,9 +11,11 @@ import StatusQ.Components 0.1
import StatusQ.Core 0.1
import StatusQ.Core.Utils 0.1 as StatusQUtils
Item {
Badge {
id: channelBadge
signal channelNameClicked()
property int realChatType: -1
property string name: "channelName"
property color textColor

View File

@ -9,7 +9,7 @@ import shared 1.0
import shared.panels 1.0
import shared.status 1.0
Item {
Badge {
id: communityBadge
property string image: ""
@ -45,7 +45,7 @@ Item {
anchors.left: communityIcon.visible ? communityIcon.right : parent.left
anchors.leftMargin: 2
anchors.verticalCenter: parent.verticalCenter
sourceComponent: communityBadge.useLetterIdenticon ? letterIdenticon :imageIcon
sourceComponent: communityBadge.useLetterIdenticon ? letterIdenticon : imageIcon
}
Component {

View File

@ -11,7 +11,6 @@ import utils 1.0
ActivityNotificationMessage {
id: root
badgeVisible: false
// TODO: mark as read ignores notification type
// markReadBtnVisible: false
}

View File

@ -9,7 +9,43 @@ import shared 1.0
import utils 1.0
import shared.panels.chat 1.0
import "../controls"
ActivityNotificationMessage {
id: root
signal communityNameClicked()
signal channelNameClicked()
badge: notification.message.communityId ? communityBadgeComponent : notification.chatId ? groupChatBadgeComponent : null
Component {
id: communityBadgeComponent
CommunityBadge {
id: communityBadge
property string communityId: notification.message.communityId
textColor: Utils.colorForPubkey(communityId)
// TODO: wrong result image: Global.getProfileImage(communityId)
// TODO: wrong result iconColor: Utils.colorForPubkey(communityId)
communityName: root.store.getSectionNameById(communityId)
// TODO: no info about channelName
onCommunityNameClicked: root.communityNameClicked()
onChannelNameClicked: root.channelNameClicked()
}
}
Component {
id: groupChatBadgeComponent
ChannelBadge {
realChatType: root.realChatType
textColor: Utils.colorForPubkey(notification.message.senderId)
name: root.name
profileImage: Global.getProfileImage(notification.message.chatId)
}
}
}

View File

@ -9,8 +9,6 @@ import shared 1.0
import utils 1.0
import shared.views.chat 1.0
import "../panels"
ActivityNotificationBase {
id: root
@ -21,11 +19,11 @@ ActivityNotificationBase {
"" : root.store.activityCenterList.getNotificationData(
previousNotificationIndex, "timestamp")
property alias badgeVisible: badge.visible
property alias badge: badgeLoader.sourceComponent
signal activityCenterClose()
height: Math.max(60, notificationMessage.height + (badge.visible ? badge.height : 0))
height: Math.max(60, notificationMessage.height + (badgeLoader.item ? badgeLoader.height : 0))
MessageView {
id: notificationMessage
@ -77,24 +75,10 @@ ActivityNotificationBase {
prevMsgTimestamp: root.previousNotificationTimestamp
}
ActivityChannelBadgePanel {
id: badge
Loader {
id: badgeLoader
anchors.top: notificationMessage.bottom
anchors.left: parent.left
anchors.leftMargin: 61 // TODO find a way to align with the text of the message
isCommunity: notification.communityId !== ""
notificationType: notification.notificationType
profileImage: visible ? Global.getProfileImage(isCommunity ? notification.communityId : notification.chatId) : ""
repliedMessageContent: notification.repliedMessage.messageText
repliedMessageId: notification.message.responseToMessageWithId
onCommunityNameClicked: {
root.store.activityCenterModuleInst.switchTo(notification.sectionId, "", "")
root.activityCenterClose()
}
onChannelNameClicked: {
root.store.activityCenterModuleInst.switchTo(notification.sectionId, notification.chatId, "")
root.activityCenterClose()
}
}
}

View File

@ -12,4 +12,6 @@ import shared.panels.chat 1.0
ActivityNotificationMessage {
id: root
// repliedMessageContent: notification.repliedMessage.messageText
// repliedMessageId: notification.message.responseToMessageWithId
}