From b923c97773efee1df166932fde0dd1ae53806c6f Mon Sep 17 00:00:00 2001 From: MishkaRogachev Date: Wed, 21 Sep 2022 16:00:35 +0300 Subject: [PATCH] feat(ActivityCenter): customize badgies for communities and group chats --- .../mainui/activitycenter/controls/Badge.qml | 19 ++++++++++ .../activitycenter/controls/ChannelBadge.qml | 4 ++- .../controls/CommunityBadge.qml | 4 +-- .../ActivityNotificationContactRequest.qml | 1 - .../views/ActivityNotificationMention.qml | 36 +++++++++++++++++++ .../views/ActivityNotificationMessage.qml | 24 +++---------- .../views/ActivityNotificationReply.qml | 2 ++ 7 files changed, 66 insertions(+), 24 deletions(-) create mode 100644 ui/app/mainui/activitycenter/controls/Badge.qml diff --git a/ui/app/mainui/activitycenter/controls/Badge.qml b/ui/app/mainui/activitycenter/controls/Badge.qml new file mode 100644 index 0000000000..c4bf7cf7e0 --- /dev/null +++ b/ui/app/mainui/activitycenter/controls/Badge.qml @@ -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 +} + diff --git a/ui/app/mainui/activitycenter/controls/ChannelBadge.qml b/ui/app/mainui/activitycenter/controls/ChannelBadge.qml index c1377aa2b5..c2ad79b85d 100644 --- a/ui/app/mainui/activitycenter/controls/ChannelBadge.qml +++ b/ui/app/mainui/activitycenter/controls/ChannelBadge.qml @@ -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 diff --git a/ui/app/mainui/activitycenter/controls/CommunityBadge.qml b/ui/app/mainui/activitycenter/controls/CommunityBadge.qml index 3510f15946..c6c98d7349 100644 --- a/ui/app/mainui/activitycenter/controls/CommunityBadge.qml +++ b/ui/app/mainui/activitycenter/controls/CommunityBadge.qml @@ -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 { diff --git a/ui/app/mainui/activitycenter/views/ActivityNotificationContactRequest.qml b/ui/app/mainui/activitycenter/views/ActivityNotificationContactRequest.qml index 192fbf592a..6e4ddc779f 100644 --- a/ui/app/mainui/activitycenter/views/ActivityNotificationContactRequest.qml +++ b/ui/app/mainui/activitycenter/views/ActivityNotificationContactRequest.qml @@ -11,7 +11,6 @@ import utils 1.0 ActivityNotificationMessage { id: root - badgeVisible: false // TODO: mark as read ignores notification type // markReadBtnVisible: false } \ No newline at end of file diff --git a/ui/app/mainui/activitycenter/views/ActivityNotificationMention.qml b/ui/app/mainui/activitycenter/views/ActivityNotificationMention.qml index e1d3d792b9..b02e7ac756 100644 --- a/ui/app/mainui/activitycenter/views/ActivityNotificationMention.qml +++ b/ui/app/mainui/activitycenter/views/ActivityNotificationMention.qml @@ -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) + } + } } \ No newline at end of file diff --git a/ui/app/mainui/activitycenter/views/ActivityNotificationMessage.qml b/ui/app/mainui/activitycenter/views/ActivityNotificationMessage.qml index da84c1c4bd..2ac3859993 100644 --- a/ui/app/mainui/activitycenter/views/ActivityNotificationMessage.qml +++ b/ui/app/mainui/activitycenter/views/ActivityNotificationMessage.qml @@ -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() - } } } \ No newline at end of file diff --git a/ui/app/mainui/activitycenter/views/ActivityNotificationReply.qml b/ui/app/mainui/activitycenter/views/ActivityNotificationReply.qml index e1d3d792b9..060162796c 100644 --- a/ui/app/mainui/activitycenter/views/ActivityNotificationReply.qml +++ b/ui/app/mainui/activitycenter/views/ActivityNotificationReply.qml @@ -12,4 +12,6 @@ import shared.panels.chat 1.0 ActivityNotificationMessage { id: root +// repliedMessageContent: notification.repliedMessage.messageText +// repliedMessageId: notification.message.responseToMessageWithId } \ No newline at end of file