mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-04 02:34:52 +00:00
32aff401d6
1. Bridge panel not showing 2. Max button value when showing the fiat balance 3. Wallet footer visibility when Swap feature is disabled
158 lines
6.5 KiB
QML
158 lines
6.5 KiB
QML
import QtQuick 2.14
|
|
import QtQuick.Controls 2.14
|
|
import QtQuick.Layouts 1.13
|
|
import QtQml 2.15
|
|
|
|
import StatusQ 0.1
|
|
import StatusQ.Popups 0.1
|
|
import StatusQ.Controls 0.1
|
|
import StatusQ.Core.Theme 0.1
|
|
import StatusQ.Core.Utils 0.1 as SQUtils
|
|
|
|
import utils 1.0
|
|
import shared.controls 1.0
|
|
import shared.stores.send 1.0
|
|
|
|
import "../controls"
|
|
import "../popups"
|
|
|
|
Rectangle {
|
|
id: root
|
|
|
|
readonly property alias anyActionAvailable: d.anyActionAvailable
|
|
|
|
property var walletStore
|
|
property var networkConnectionStore
|
|
required property TransactionStore transactionStore
|
|
|
|
// Community-token related properties:
|
|
required property bool isCommunityOwnershipTransfer
|
|
property string communityName: ""
|
|
|
|
signal launchShareAddressModal()
|
|
signal launchSendModal(string fromAddress)
|
|
signal launchBridgeModal()
|
|
signal launchSwapModal()
|
|
|
|
color: Theme.palette.statusAppLayout.rightPanelBackgroundColor
|
|
|
|
QtObject {
|
|
id: d
|
|
readonly property bool isCollectibleViewed: !!walletStore.currentViewedHoldingID &&
|
|
(walletStore.currentViewedHoldingType === Constants.TokenType.ERC721 ||
|
|
walletStore.currentViewedHoldingType === Constants.TokenType.ERC1155)
|
|
readonly property bool isCollectibleSoulbound: isCollectibleViewed && !!walletStore.currentViewedCollectible && walletStore.currentViewedCollectible.soulbound
|
|
|
|
readonly property var collectibleOwnership: isCollectibleViewed && walletStore.currentViewedCollectible ?
|
|
walletStore.currentViewedCollectible.ownership : null
|
|
|
|
readonly property string userOwnedAddressForCollectible: !!walletStore.currentViewedHoldingID ? getFirstUserOwnedAddress(collectibleOwnership, root.walletStore.nonWatchAccounts) : ""
|
|
|
|
readonly property bool hideCollectibleTransferActions: isCollectibleViewed && !userOwnedAddressForCollectible
|
|
|
|
/// Actions available
|
|
readonly property bool anyActionAvailable: sendActionAvailable
|
|
|| receiveActionAvailable
|
|
|| bridgeActionAvailable
|
|
|| buyActionAvailable
|
|
|| swapActionAvailable
|
|
|
|
readonly property bool sendActionAvailable: !walletStore.overview.isWatchOnlyAccount
|
|
&& walletStore.overview.canSend
|
|
&& !d.hideCollectibleTransferActions
|
|
|
|
readonly property bool receiveActionAvailable: !walletStore.showAllAccounts
|
|
|
|
readonly property bool bridgeActionAvailable: !walletStore.overview.isWatchOnlyAccount
|
|
&& !root.isCommunityOwnershipTransfer
|
|
&& walletStore.overview.canSend
|
|
&& !root.walletStore.showAllAccounts
|
|
&& !d.hideCollectibleTransferActions
|
|
|
|
readonly property bool buyActionAvailable: !root.isCommunityOwnershipTransfer && !root.walletStore.showAllAccounts
|
|
|
|
readonly property bool swapActionAvailable: Global.featureFlags.swapEnabled && !walletStore.overview.isWatchOnlyAccount && !d.hideCollectibleTransferActions
|
|
|
|
function getFirstUserOwnedAddress(ownershipModel, accountsModel) {
|
|
if (!ownershipModel) return ""
|
|
|
|
for (let i = 0; i < ownershipModel.rowCount(); i++) {
|
|
const accountAddress = SQUtils.ModelUtils.get(ownershipModel, i, "accountAddress")
|
|
if (SQUtils.ModelUtils.contains(accountsModel, "address", accountAddress, Qt.CaseInsensitive))
|
|
return accountAddress
|
|
}
|
|
return ""
|
|
}
|
|
}
|
|
|
|
StatusModalDivider {
|
|
anchors.top: parent.top
|
|
width: parent.width
|
|
}
|
|
|
|
RowLayout {
|
|
id: layout
|
|
anchors.centerIn: parent
|
|
height: parent.height
|
|
width: Math.min(root.width, implicitWidth)
|
|
spacing: Style.current.padding
|
|
|
|
StatusFlatButton {
|
|
id: sendButton
|
|
Layout.fillWidth: true
|
|
Layout.maximumWidth: implicitWidth
|
|
objectName: "walletFooterSendButton"
|
|
icon.name: "send"
|
|
text: root.isCommunityOwnershipTransfer ? qsTr("Send Owner token to transfer %1 Community ownership").arg(root.communityName) : qsTr("Send")
|
|
interactive: !d.isCollectibleSoulbound && networkConnectionStore.sendBuyBridgeEnabled
|
|
onClicked: {
|
|
root.transactionStore.setSenderAccount(root.walletStore.selectedAddress)
|
|
root.launchSendModal(d.userOwnedAddressForCollectible)
|
|
}
|
|
tooltip.text: d.isCollectibleSoulbound ? qsTr("Soulbound collectibles cannot be sent to another wallet") : networkConnectionStore.sendBuyBridgeToolTipText
|
|
visible: d.sendActionAvailable
|
|
}
|
|
|
|
StatusFlatButton {
|
|
icon.name: "receive"
|
|
text: qsTr("Receive")
|
|
visible: d.receiveActionAvailable
|
|
onClicked: function () {
|
|
root.transactionStore.setReceiverAccount(root.walletStore.selectedAddress)
|
|
launchShareAddressModal()
|
|
}
|
|
}
|
|
|
|
StatusFlatButton {
|
|
icon.name: "bridge"
|
|
text: qsTr("Bridge")
|
|
interactive: !d.isCollectibleSoulbound && networkConnectionStore.sendBuyBridgeEnabled
|
|
onClicked: root.launchBridgeModal()
|
|
tooltip.text: d.isCollectibleSoulbound ? qsTr("Soulbound collectibles cannot be bridged to another wallet") : networkConnectionStore.sendBuyBridgeToolTipText
|
|
visible: d.bridgeActionAvailable
|
|
}
|
|
|
|
StatusFlatButton {
|
|
id: buySellBtn
|
|
|
|
visible: d.buyActionAvailable
|
|
icon.name: "token"
|
|
text: qsTr("Buy")
|
|
onClicked: Global.openBuyCryptoModalRequested()
|
|
}
|
|
|
|
StatusFlatButton {
|
|
id: swap
|
|
|
|
interactive: !d.isCollectibleSoulbound && networkConnectionStore.sendBuyBridgeEnabled
|
|
visible: d.swapActionAvailable
|
|
tooltip.text: d.isCollectibleSoulbound ? qsTr("Soulbound collectibles cannot be swapped") : networkConnectionStore.sendBuyBridgeToolTipText
|
|
icon.name: "swap"
|
|
text: qsTr("Swap")
|
|
onClicked: root.launchSwapModal()
|
|
}
|
|
}
|
|
}
|
|
|
|
|