218 lines
7.6 KiB
QML
218 lines
7.6 KiB
QML
import QtQuick 2.15
|
|
import QtQuick.Layouts 1.15
|
|
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Core 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Components 0.1
|
|
|
|
import shared 1.0
|
|
import shared.panels 1.0
|
|
import utils 1.0
|
|
|
|
import "../panels"
|
|
import "../popups"
|
|
import "../stores"
|
|
|
|
ActivityNotificationBase {
|
|
id: root
|
|
|
|
required property string communityName
|
|
required property string communityColor
|
|
required property int type // Possible values [OwnershipState]
|
|
|
|
signal finaliseOwnershipClicked
|
|
signal navigateToCommunityClicked
|
|
|
|
function setType(notification) {
|
|
if(notification)
|
|
switch(notification.notificationType){
|
|
|
|
case ActivityCenterStore.ActivityCenterNotificationType.OwnerTokenReceived:
|
|
return ActivityNotificationTransferOwnership.OwnershipState.Pending
|
|
|
|
case ActivityCenterStore.ActivityCenterNotificationType.OwnershipDeclined:
|
|
return ActivityNotificationTransferOwnership.OwnershipState.Declined
|
|
|
|
case ActivityCenterStore.ActivityCenterNotificationType.OwnershipReceived:
|
|
return ActivityNotificationTransferOwnership.OwnershipState.Succeeded
|
|
|
|
case ActivityCenterStore.ActivityCenterNotificationType.OwnershipFailed:
|
|
return ActivityNotificationTransferOwnership.OwnershipState.Failed
|
|
|
|
case ActivityCenterStore.ActivityCenterNotificationType.OwnershipLost:
|
|
return ActivityNotificationTransferOwnership.OwnershipState.NoLongerControlNode
|
|
|
|
}
|
|
return ActivityNotificationTransferOwnership.OwnershipState.Failed
|
|
}
|
|
|
|
enum OwnershipState {
|
|
Pending,
|
|
Declined,
|
|
Succeeded,
|
|
Failed,
|
|
NoLongerControlNode
|
|
}
|
|
|
|
QtObject {
|
|
id: d
|
|
|
|
property string title: ""
|
|
property string info: ""
|
|
property string assetColor: ""
|
|
property string assetName: ""
|
|
property string assetBgColor: ""
|
|
property string ctaText: ""
|
|
property var actionSourceComponent: undefined
|
|
|
|
readonly property string crownAssetName: "crown"
|
|
}
|
|
|
|
bodyComponent: RowLayout {
|
|
spacing: 8
|
|
|
|
StatusSmartIdenticon {
|
|
Layout.preferredWidth: 40
|
|
Layout.preferredHeight: 40
|
|
Layout.alignment: Qt.AlignTop
|
|
Layout.leftMargin: Theme.padding
|
|
Layout.topMargin: 2
|
|
|
|
asset {
|
|
width: 24
|
|
height: width
|
|
name: d.assetName
|
|
color: d.assetColor
|
|
bgWidth: 40
|
|
bgHeight: 40
|
|
bgColor: d.assetBgColor
|
|
}
|
|
}
|
|
|
|
ColumnLayout {
|
|
spacing: 2
|
|
Layout.alignment: Qt.AlignTop
|
|
Layout.fillWidth: true
|
|
|
|
StatusMessageHeader {
|
|
Layout.fillWidth: true
|
|
displayNameLabel.text: d.title
|
|
timestamp: root.notification.timestamp
|
|
}
|
|
|
|
RowLayout {
|
|
spacing: Theme.padding
|
|
|
|
StatusBaseText {
|
|
Layout.fillWidth: true
|
|
text: d.info
|
|
font.italic: true
|
|
wrapMode: Text.WordWrap
|
|
color: Theme.palette.baseColor1
|
|
}
|
|
|
|
Loader { sourceComponent: d.actionSourceComponent }
|
|
|
|
}
|
|
}
|
|
}
|
|
|
|
ctaComponent: undefined
|
|
|
|
states: [
|
|
State {
|
|
when: root.type === ActivityNotificationTransferOwnership.OwnershipState.Pending
|
|
PropertyChanges {
|
|
target: d
|
|
title: qsTr("You received the owner token from %1").arg(root.communityName)
|
|
info: qsTr("To finalise your ownership of the %1 Community, make your device the control node").arg(root.communityName)
|
|
ctaText: qsTr("Finalise ownership")
|
|
assetColor: root.communityColor
|
|
assetBgColor: Theme.palette.getColor(d.assetColor, 0.1)
|
|
assetName: d.crownAssetName
|
|
actionSourceComponent: ctaFlatBtnComponent
|
|
}
|
|
},
|
|
State {
|
|
when: root.type === ActivityNotificationTransferOwnership.OwnershipState.Declined
|
|
PropertyChanges {
|
|
target: d
|
|
title: qsTr("You received the owner token from %1").arg(root.communityName)
|
|
info: qsTr("To finalise your ownership of the %1 Community, make your device the control node").arg(root.communityName)
|
|
ctaText: qsTr("Ownership Declined")
|
|
assetColor: root.communityColor
|
|
assetBgColor: Theme.palette.getColor(d.assetColor, 0.1)
|
|
assetName: d.crownAssetName
|
|
actionSourceComponent: ctaTextComponent
|
|
}
|
|
},
|
|
State {
|
|
when: root.type === ActivityNotificationTransferOwnership.OwnershipState.Succeeded
|
|
PropertyChanges {
|
|
target: d
|
|
title: qsTr("Your device is now the control node for %1").arg(root.communityName)
|
|
info: qsTr("Congratulations, you are now the official owner of the %1 Community with full admin rights").arg(root.communityName)
|
|
ctaText: qsTr("Community admin")
|
|
assetColor: root.communityColor
|
|
assetBgColor: Theme.palette.getColor(d.assetColor, 0.1)
|
|
assetName: d.crownAssetName
|
|
actionSourceComponent: ctaFlatBtnComponent
|
|
}
|
|
},
|
|
State {
|
|
when: root.type === ActivityNotificationTransferOwnership.OwnershipState.Failed
|
|
PropertyChanges {
|
|
target: d
|
|
title: qsTr("%1 smart contract update failed").arg(root.communityName)
|
|
info: qsTr("You will need to retry the transaction in order to finalise your ownership of the %1 community").arg(root.communityName)
|
|
ctaText: qsTr("Finalise ownership")
|
|
assetColor: Theme.palette.dangerColor1
|
|
assetBgColor: Theme.palette.dangerColor3
|
|
assetName: "warning"
|
|
actionSourceComponent: ctaFlatBtnComponent
|
|
}
|
|
},
|
|
State {
|
|
when: root.type === ActivityNotificationTransferOwnership.OwnershipState.NoLongerControlNode
|
|
PropertyChanges {
|
|
target: d
|
|
title: qsTr("Your device is no longer the control node for %1").arg(root.communityName)
|
|
info: qsTr("Your ownership and admin rights for %1 have been removed and transferred to the new owner").arg(root.communityName)
|
|
ctaText: ""
|
|
assetColor: Theme.palette.dangerColor1
|
|
assetBgColor: Theme.palette.dangerColor3
|
|
assetName: "crown-off"
|
|
actionSourceComponent: undefined
|
|
}
|
|
}
|
|
]
|
|
|
|
Component {
|
|
id: ctaFlatBtnComponent
|
|
|
|
StatusFlatButton {
|
|
size: StatusBaseButton.Size.Small
|
|
text: d.ctaText
|
|
onClicked: {
|
|
if((root.type === ActivityNotificationTransferOwnership.OwnershipState.Pending) ||
|
|
(root.type === ActivityNotificationTransferOwnership.OwnershipState.Failed))
|
|
root.finaliseOwnershipClicked()
|
|
else if(root.type === ActivityNotificationTransferOwnership.OwnershipState.Succeeded)
|
|
root.navigateToCommunityClicked()
|
|
}
|
|
}
|
|
}
|
|
|
|
Component {
|
|
id: ctaTextComponent
|
|
|
|
StatusBaseText {
|
|
text: d.ctaText
|
|
font.pixelSize: Theme.additionalTextSize
|
|
color: Theme.palette.dangerColor1
|
|
padding: 10
|
|
}
|
|
}
|
|
}
|