status-desktop/ui/imports/shared/popups/send/Helpers.qml

102 lines
3.3 KiB
QML

pragma Singleton
import QtQuick 2.15
import QtQml 2.15
import utils 1.0
import shared.stores 1.0
import shared.stores.send 1.0
import AppLayouts.Wallet.stores 1.0 as WalletStores
import StatusQ.Core 0.1
import "./panels"
import "./controls"
import "./views"
QtObject {
id: root
function createSendModalRequirements() {
return {
preSelectedAccount: null,
preSelectedRecipientType: TabAddressSelectorView.Type.Address,
preSelectedRecipient: null,
preSelectedHoldingType: Constants.TokenType.Unknown,
preSelectedHolding: null,
preSelectedHoldingID: "",
preDefinedAmountToSend: "",
preSelectedSendType: Constants.SendType.Transfer
}
}
// \c token is an collectible object in case of \c isCollectible == true otherwise a token code (e.g. "ETH")
function lookupAddressesForSendModal(senderAddress, recipientAddress, token, isCollectible, amount) {
let req = createSendModalRequirements()
req.preSelectedSendType = Constants.SendType.Transfer
let senderAccount = null
let resolvedAcc = WalletStores.RootStore.lookupAddressObject(senderAddress)
if (resolvedAcc && resolvedAcc.type == WalletStores.RootStore.LookupType.Account) {
req.preSelectedAccount = resolvedAcc.object
}
let res = WalletStores.RootStore.lookupAddressObject(recipientAddress)
if (res) {
if (res.type == WalletStores.RootStore.LookupType.Account) {
req.preSelectedRecipientType = TabAddressSelectorView.Type.Account
req.preSelectedRecipient = res.object
} else if (res.type == WalletStores.RootStore.LookupType.SavedAddress) {
req.preSelectedRecipientType = TabAddressSelectorView.Type.SavedAddress
req.preSelectedRecipient = res.object
}
} else {
req.preSelectedRecipientType = TabAddressSelectorView.Type.Address
req.preSelectedRecipient = recipientAddress
}
if (isCollectible) {
req.preSelectedHoldingType = Constants.TokenType.ERC721
req.preSelectedHolding = token
} else {
req.preSelectedHoldingType = Constants.TokenType.ERC20
req.preSelectedHoldingID = token
}
req.preDefinedAmountToSend = LocaleUtils.numberToLocaleString(amount)
return req
}
function assetsSectionTitle(sectionNeeded, hasCommunityTokens, isInsideCollection, isERC20List) {
let title = ""
if (!isInsideCollection) {
if (sectionNeeded) {
title = qsTr("Community minted")
} else {
if (!isERC20List) {
// Show "Other" only if there are "Community minted" tokens on the list
if (hasCommunityTokens) {
title = qsTr("Other")
}
}
}
}
return title
}
function modelHasCommunityTokens(model, isERC20List) {
if (model.count > 0) {
let item
if (isERC20List) {
item = model.get(model.count - 1)
} else {
item = model.get(0)
}
return item.isCommunityAsset
}
return false
}
}