Alex Jbanca 33b8ca84e8 feat: Disable community membership request actions when the request is in action pending state
The actions are disabled by default. The proper visibility can be set when the backend implementation is done.

+ Fix one issue where the button tooltip was triggered when the pending state button is not visible
2023-08-17 21:14:43 +03:00

86 lines
2.9 KiB
QML

import QtQuick 2.14
import QtQuick.Layouts 1.15
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
import shared.panels 1.0
import "../stores"
Item {
id: root
property int membershipStatus: ActivityCenterStore.ActivityCenterMembershipStatus.None
property bool ctaAllowed: !acceptedPending && !declinedPending
readonly property bool pending: membershipStatus === ActivityCenterStore.ActivityCenterMembershipStatus.Pending
readonly property bool accepted: membershipStatus === ActivityCenterStore.ActivityCenterMembershipStatus.Accepted
readonly property bool declined: membershipStatus === ActivityCenterStore.ActivityCenterMembershipStatus.Declined
readonly property bool acceptedPending: membershipStatus === ActivityCenterStore.ActivityCenterMembershipStatus.AcceptedPending
readonly property bool declinedPending: membershipStatus === ActivityCenterStore.ActivityCenterMembershipStatus.DeclinedPending
signal acceptRequestToJoinCommunity()
signal declineRequestToJoinCommunity()
implicitWidth: Math.max(textItem.width, buttons.width)
implicitHeight: Math.max(textItem.height, buttons.height)
StatusBaseText {
id: textItem
anchors.verticalCenter: parent.verticalCenter
anchors.right: parent.right
anchors.rightMargin: Style.current.smallPadding
visible: !pending
text: {
if (root.accepted) {
return qsTr("Accepted")
}
if (root.declined) {
return qsTr("Declined")
}
return ""
}
color: {
if (root.accepted) {
return Theme.palette.successColor1
}
if (root.declined) {
return Theme.palette.dangerColor1
}
return Theme.palette.directColor1
}
}
RowLayout {
id: buttons
anchors.centerIn: parent
visible: pending || acceptedPending || declinedPending
spacing: Style.current.halfPadding
StatusFlatButton {
icon.name: "checkmark-circle"
icon.color: enabled ? Theme.palette.successColor1 : disabledTextColor
onClicked: root.acceptRequestToJoinCommunity()
enabled: !root.acceptedPending
text: root.acceptedPending ? qsTr("Accept pending") : ""
verticalPadding: 4
horizontalPadding: 4
visible: root.ctaAllowed || !enabled
}
StatusFlatButton {
icon.name: "close-circle"
icon.color: enabled ? Theme.palette.dangerColor1 : disabledTextColor
onClicked: root.declineRequestToJoinCommunity()
enabled: !root.declinedPending
text: root.declinedPending ? qsTr("Reject pending") : ""
verticalPadding: 4
horizontalPadding: 4
visible: root.ctaAllowed || !enabled
}
}
}