2024-01-04 12:22:12 +00:00
import QtQuick 2.14
import QtQuick . Layouts 1.14
import StatusQ . Controls 0.1
import StatusQ . Core 0.1
import StatusQ . Core . Theme 0.1
import StatusQ . Components 0.1
import utils 1.0
2024-01-29 13:29:15 +00:00
import AppLayouts . Wallet 1.0
2024-01-04 12:22:12 +00:00
ActivityNotificationBase {
id: root
2024-01-29 13:29:15 +00:00
// Community properties:
required property string communityId
2024-01-04 12:22:12 +00:00
required property string communityName
required property string communityImage
2024-01-29 13:29:15 +00:00
// Notification type related properties:
property bool isFirstTokenReceived: root . notification . isFirstTokenReceived
property bool isAssetType: root . notification . tokenType === Constants . TokenType . ERC20
// Token related properties:
property string tokenAmount: root . notification . tokenAmount
property string tokenName: root . notification . tokenName
property string tokenSymbol: root . notification . tokenSymbol
property string tokenImage: root . notification . tokenImage
// Wallet related:
property string walletAccountName: root . notification . walletAccountName
property string txHash: root . notification . txHash
QtObject {
id: d
readonly property string formattedTokenName: root . isAssetType ? root.tokenSymbol : root . tokenName
readonly property string ctaText: root . isFirstTokenReceived ? qsTr ( "Learn more" ) : qsTr ( "Transaction details" )
readonly property string title: root . isFirstTokenReceived ? ( root . isAssetType ? qsTr ( "You received your first community asset" ) : qsTr ( "You received your first community collectible" ) ) :
qsTr ( "Tokens received" )
readonly property string info: root . isFirstTokenReceived ? qsTr ( "%1 %2 was airdropped to you from the %3 community" ) . arg ( root . tokenAmount ) . arg ( d . formattedTokenName ) . arg ( root . communityName ) :
qsTr ( "You were airdropped %1 %2 from %3 to %4" ) . arg ( root . tokenAmount ) . arg ( root . tokenName ) . arg ( root . communityName ) . arg ( root . walletAccountName )
}
2024-01-04 12:22:12 +00:00
bodyComponent: RowLayout {
spacing: 8
2024-01-29 13:29:15 +00:00
StatusRoundedImage {
Layout.preferredWidth: 44
Layout.preferredHeight: 44
2024-01-04 12:22:12 +00:00
Layout.alignment: Qt . AlignTop
Layout.leftMargin: Style . current . padding
Layout.topMargin: 2
2024-01-29 13:29:15 +00:00
radius: root . isAssetType ? width / 2 : 8
width: 44
height: width
image.source: root . tokenImage
showLoadingIndicator: false
image.fillMode: Image . PreserveAspectCrop
2024-01-04 12:22:12 +00:00
}
ColumnLayout {
spacing: 2
Layout.alignment: Qt . AlignTop
2024-01-29 13:29:15 +00:00
Layout.fillWidth: true
StatusMessageHeader {
Layout.fillWidth: true
displayNameLabel.text: d . title
timestamp: root . notification . timestamp
}
2024-01-04 12:22:12 +00:00
RowLayout {
2024-01-29 13:29:15 +00:00
spacing: Style . current . padding
2024-01-04 12:22:12 +00:00
StatusBaseText {
Layout.fillWidth: true
2024-01-29 13:29:15 +00:00
text: d . info
font.italic: true
2024-01-04 12:22:12 +00:00
wrapMode: Text . WordWrap
2024-01-29 13:29:15 +00:00
color: Theme . palette . baseColor1
2024-01-04 12:22:12 +00:00
}
}
}
}
2024-01-29 13:29:15 +00:00
ctaComponent: StatusFlatButton {
size: StatusBaseButton . Size . Small
text: d . ctaText
onClicked: {
root . closeActivityCenter ( )
if ( root . isFirstTokenReceived ) {
Global . openFirstTokenReceivedPopup ( root . communityId ,
root . communityName ,
root . communityImage ,
root . tokenSymbol ,
root . tokenName ,
root . tokenAmount ,
root . notification . tokenType ,
root . tokenImage ) ;
}
else {
Global . changeAppSectionBySectionType ( Constants . appSection . wallet ,
WalletLayout . LeftPanelSelection . AllAddresses ,
WalletLayout . RightPanelSelection . Activity )
// TODO: Final navigation to the specific transaction entry --> {transaction: txHash}) --> Issue #13249
}
}
}
2024-01-04 12:22:12 +00:00
}