feat(ActivityCenter): Review fixed for community membership AС notifications

This commit is contained in:
MishkaRogachev 2022-10-20 15:57:41 +04:00 committed by Mikhail Rogachev
parent 5d8e3ac252
commit 851dd3bc76
13 changed files with 67 additions and 80 deletions

View File

@ -1,15 +1,16 @@
import strformat, stint
import ../../shared_models/message_item_qobject
import ../../../../app_service/service/activity_center/dto/notification
type Item* = ref object
id: string # ID is the id of the chat, for public chats it is the name e.g. status, for one-to-one is the hex encoded public key and for group chats is a random uuid appended with the hex encoded pk of the creator of the chat
chatId: string
communityId: string
membershipStatus: int
membershipStatus: ActivityCenterMembershipStatus
sectionId: string
name: string
author: string
notificationType: int
notificationType: ActivityCenterNotificationType
timestamp: int64
read: bool
dismissed: bool
@ -21,11 +22,11 @@ proc initItem*(
id: string,
chatId: string,
communityId: string,
membershipStatus: int,
membershipStatus: ActivityCenterMembershipStatus,
sectionId: string,
name: string,
author: string,
notificationType: int,
notificationType: ActivityCenterNotificationType,
timestamp: int64,
read: bool,
dismissed: bool,
@ -55,10 +56,10 @@ proc `$`*(self: Item): string =
name: {$self.name},
chatId: {$self.chatId},
communityId: {$self.communityId},
membershipStatus: {$self.membershipStatus},
membershipStatus: {$self.membershipStatus.int},
sectionId: {$self.sectionId},
author: {$self.author},
notificationType: {$self.notificationType},
notificationType: {$self.notificationType.int},
timestamp: {$self.timestamp},
read: {$self.read},
dismissed: {$self.dismissed},
@ -82,13 +83,13 @@ proc chatId*(self: Item): string =
proc communityId*(self: Item): string =
return self.communityId
proc membershipStatus*(self: Item): int =
proc membershipStatus*(self: Item): ActivityCenterMembershipStatus =
return self.membershipStatus
proc sectionId*(self: Item): string =
return self.sectionId
proc notificationType*(self: Item): int =
proc notificationType*(self: Item): ActivityCenterNotificationType =
return self.notificationType
proc timestamp*(self: Item): int64 =

View File

@ -128,11 +128,11 @@ method convertToItems*(
n.id,
n.chatId,
n.communityId,
n.membershipStatus.int,
n.membershipStatus,
sectionId,
n.name,
n.author,
n.notificationType.int,
n.notificationType,
n.timestamp,
n.read,
n.dismissed,

View File

@ -624,6 +624,7 @@ QtObject:
proc requestToJoinCommunity*(self: Service, communityId: string, ensName: string) =
try:
let response = status_go.requestToJoinCommunity(communityId, ensName)
self.activityCenterService.parseACNotificationResponse(response)
if not self.processRequestsToJoinCommunity(response.result):
error "error: ", procName="requestToJoinCommunity", errDesription = "no 'requestsToJoinCommunity' key in response"
@ -668,6 +669,7 @@ QtObject:
proc leaveCommunity*(self: Service, communityId: string) =
try:
let response = status_go.leaveCommunity(communityId)
self.activityCenterService.parseACNotificationResponse(response)
if response.error != nil:
let error = Json.decode($response.error, RpcError)

View File

@ -8,11 +8,12 @@ Rectangle {
id: statusRoundButton
property StatusAssetSettings icon: StatusAssetSettings {
id: icon
width: 23
height: 23
rotation: 0
property color hoverColor: {
hoverColor: {
switch(statusRoundButton.type) {
case StatusRoundButton.Type.Primary:
return Theme.palette.primaryColor1;
@ -32,7 +33,7 @@ Rectangle {
case StatusRoundButton.Type.Tertiary:
return Theme.palette.baseColor1;
}
}
}
disabledColor: {
switch(statusRoundButton.type) {

View File

@ -10,6 +10,7 @@ QtObject {
property real width
property real height
property color color
property color hoverColor
property color disabledColor
property int rotation
property bool isLetterIdenticon

View File

@ -65,33 +65,23 @@ StatusModal {
title: displayName
components: [
StatusRoundIcon {
asset.name: "thumbs-up"
asset.color: Theme.palette.white
asset.bgWidth: 28
asset.bgHeight: 28
asset.bgColor: Theme.palette.successColor1
MouseArea {
id: thumbsUpSensor
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: communitySectionModule.acceptRequestToJoinCommunity(id, popup.communityData.id)
}
StatusRoundButton {
icon.name: "thumbs-up"
icon.color: Style.current.white
icon.hoverColor: Style.current.white
implicitWidth: 28
implicitHeight: 28
color: Theme.palette.successColor1
onClicked: popup.store.acceptRequestToJoinCommunity(id, popup.communityData.id)
},
StatusRoundIcon {
asset.name: "thumbs-down"
asset.color: Theme.palette.white
asset.bgWidth: 28
asset.bgHeight: 28
asset.bgColor: Theme.palette.dangerColor1
MouseArea {
id: thumbsDownSensor
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: communitySectionModule.declineRequestToJoinCommunity(id, popup.communityData.id)
}
StatusRoundButton {
icon.name: "thumbs-down"
icon.color: Style.current.white
icon.hoverColor: Style.current.white
implicitWidth: 28
implicitHeight: 28
color: Theme.palette.dangerColor1
onClicked: popup.store.declineRequestToJoinCommunity(id, popup.communityData.id)
}
]
}

View File

@ -9,11 +9,10 @@ Rectangle {
id: root
z: 100 // NOTE: workaround for message overlay
implicitWidth: childrenRect.width + Style.current.smallPadding
implicitWidth: childrenRect.width + Style.current.smallPadding * 2
implicitHeight: visible ? 24 : 0
radius: height / 2
border.width: 1
border.color: Style.current.borderSecondary
color: Style.current.transparent
}

View File

@ -44,7 +44,7 @@ Item {
id: listView
// NOTE: some entries are hidden until implimentation
model: [ { text: qsTr("All"), category: ActivityCenterPopup.ActivityCategory.All, visible: true, enabled: true },
{ text: qsTr("Admin"), category: ActivityCenterPopup.ActivityCategory.Admin, visible: true, enabled: root.hasAdmin },
{ text: qsTr("Admin"), category: ActivityCenterPopup.ActivityCategory.Admin, visible: root.hasAdmin, enabled: root.hasAdmin },
{ text: qsTr("Mentions"), category: ActivityCenterPopup.ActivityCategory.Mentions, visible: true, enabled: root.hasMentions },
{ text: qsTr("Replies"), category: ActivityCenterPopup.ActivityCategory.Replies, visible: true, enabled: root.hasReplies },
{ text: qsTr("Contact requests"), category: ActivityCenterPopup.ActivityCategory.ContactRequests, visible: true, enabled: root.hasContactRequests },

View File

@ -19,8 +19,8 @@ Item {
signal blockClicked()
signal profileClicked()
width: Math.max(textItem.width, buttons.width)
height: Math.max(textItem.height, buttons.height)
implicitWidth: Math.max(textItem.width, buttons.width)
implicitHeight: Math.max(textItem.height, buttons.height)
StatusBaseText {
id: textItem

View File

@ -2,6 +2,7 @@ import QtQuick 2.14
import StatusQ.Core 0.1
import StatusQ.Core.Theme 0.1
import StatusQ.Controls 0.1
import StatusQ.Components 0.1
import utils 1.0
@ -17,8 +18,8 @@ Item {
signal acceptRequestToJoinCommunity()
signal declineRequestToJoinCommunity()
width: Math.max(textItem.width, buttons.width)
height: Math.max(textItem.height, buttons.height)
implicitWidth: Math.max(textItem.width, buttons.width)
implicitHeight: Math.max(textItem.height, buttons.height)
StatusBaseText {
id: textItem
@ -28,7 +29,8 @@ Item {
text: {
if (root.accepted) {
return qsTr("Accepted")
} else if (root.declined) {
}
if (root.declined) {
return qsTr("Declined")
}
return ""
@ -36,7 +38,8 @@ Item {
color: {
if (root.accepted) {
return Theme.palette.successColor1
} else if (root.declined) {
}
if (root.declined) {
return Theme.palette.dangerColor1
}
return Theme.palette.directColor1
@ -49,34 +52,24 @@ Item {
visible: pending
spacing: Style.current.padding
StatusRoundIcon {
asset.name: "thumbs-up"
asset.color: Theme.palette.white
asset.bgWidth: 28
asset.bgHeight: 28
asset.bgColor: Theme.palette.successColor1
MouseArea {
id: thumbsUpSensor
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: root.acceptRequestToJoinCommunity()
}
StatusRoundButton {
icon.name: "thumbs-up"
icon.color: Style.current.white
icon.hoverColor: Style.current.white
implicitWidth: 28
implicitHeight: 28
color: Theme.palette.successColor1
onClicked: root.acceptRequestToJoinCommunity()
}
StatusRoundIcon {
asset.name: "thumbs-down"
asset.color: Theme.palette.white
asset.bgWidth: 28
asset.bgHeight: 28
asset.bgColor: Theme.palette.dangerColor1
MouseArea {
id: thumbsDownSensor
hoverEnabled: true
anchors.fill: parent
cursorShape: Qt.PointingHandCursor
onClicked: root.declineRequestToJoinCommunity()
}
StatusRoundButton {
icon.name: "thumbs-down"
icon.color: Style.current.white
icon.hoverColor: Style.current.white
implicitWidth: 28
implicitHeight: 28
color: Theme.palette.dangerColor1
onClicked: root.declineRequestToJoinCommunity()
}
}
}

View File

@ -19,9 +19,9 @@ Item {
property alias ctaComponent: ctaLoader.sourceComponent
property alias previousNotificationIndex: dateGroupLabel.previousMessageIndex
height: Math.max(60, bodyLoader.height +
(dateGroupLabel.visible ? dateGroupLabel.height : 0) +
(badgeLoader.item ? badgeLoader.height : 0))
implicitHeight: Math.max(60, bodyLoader.height +
(dateGroupLabel.visible ? dateGroupLabel.height : 0) +
(badgeLoader.item ? badgeLoader.height : 0))
StatusDateGroupLabel {
id: dateGroupLabel

View File

@ -17,7 +17,7 @@ ActivityNotificationMessage {
badgeComponent: CommunityBadge {
id: communityBadge
property var community: root.store.getCommunityDetailsAsJson(notification.message.communityId)
readonly property var community: root.store.getCommunityDetailsAsJson(notification.message.communityId)
communityName: community.name
communityImage: community.image

View File

@ -21,7 +21,7 @@ ActivityNotificationBase {
signal activityCenterClose()
bodyComponent: MessageView {
readonly property var contactDetails: Utils.getContactDetailsAsJson(senderId)
readonly property var contactDetails: Utils.getContactDetailsAsJson(notification.author)
rootStore: root.store
messageStore: root.store.messageStore
@ -30,11 +30,11 @@ ActivityNotificationBase {
messageTimestamp: notification.timestamp
senderId: notification.author
senderIcon: contactDetails.displayIcon
senderDisplayName: contactDetails.name
senderDisplayName: contactDetails.displayName
senderOptionalName: contactDetails.localNickname
messageContextMenu: root.messageContextMenu
activityCenterMessage: true
activityCenterMessageRead: false
scrollToBottom: null
onImageClicked: Global.openImagePopup(image, root.messageContextMenu)
messageClickHandler: (sender,
point,