feat(@desktop/wallet): Making changes so that simple send can be launched outside of storybook

This commit is contained in:
Khushboo Mehta 2024-12-04 19:13:24 +01:00
parent 38cc839dae
commit 017cf6ca7e
3 changed files with 103 additions and 4 deletions

View File

@ -61,6 +61,7 @@ StatusDialog {
- chainId: network chain id - chainId: network chain id
- chainName: name of network - chainName: name of network
- iconUrl: network icon url - iconUrl: network icon url
Only networks valid as per mainnet/testnet selection
**/ **/
required property var networksModel required property var networksModel

View File

@ -660,6 +660,14 @@ Item {
simpleSendEnabled: appMain.featureFlagsStore.simpleSendEnabled simpleSendEnabled: appMain.featureFlagsStore.simpleSendEnabled
walletAccountsModel: WalletStores.RootStore.accounts
flatNetworksModel: WalletStores.RootStore.flatNetworks
areTestNetworksEnabled: WalletStores.RootStore.areTestNetworksEnabled
groupedAccountAssetsModel: appMain.walletAssetsStore.groupedAccountAssetsModel
currentCurrency: appMain.currencyStore.currentCurrency
showCommunityAssetsInSend: appMain.tokensStore.showCommunityAssetsInSend
collectiblesBySymbolModel: WalletStores.RootStore.collectiblesStore.jointCollectiblesBySymbolModel
Component.onCompleted: { Component.onCompleted: {
// It's requested from many nested places, so as a workaround we use // It's requested from many nested places, so as a workaround we use
// Global to shorten the path via global signal. // Global to shorten the path via global signal.

View File

@ -1,10 +1,13 @@
import QtQuick 2.15 import QtQuick 2.15
import SortFilterProxyModel 0.2
import StatusQ.Core 0.1 import StatusQ.Core 0.1
import StatusQ.Core.Utils 0.1 as SQUtils import StatusQ.Core.Utils 0.1 as SQUtils
import AppLayouts.Wallet.stores 1.0 as WalletStores import AppLayouts.Wallet.stores 1.0 as WalletStores
import AppLayouts.Wallet.popups.simpleSend 1.0 import AppLayouts.Wallet.popups.simpleSend 1.0
import AppLayouts.Wallet.adaptors 1.0
import shared.popups.send 1.0 import shared.popups.send 1.0
import shared.stores.send 1.0 import shared.stores.send 1.0
@ -19,19 +22,71 @@ QtObject {
required property TransactionStore transactionStore required property TransactionStore transactionStore
required property WalletStores.CollectiblesStore walletCollectiblesStore required property WalletStores.CollectiblesStore walletCollectiblesStore
// for ens flows /** for ens flows **/
required property string myPublicKey required property string myPublicKey
required property string ensRegisteredAddress required property string ensRegisteredAddress
// TODO: This should probably be a property and not a function. Needs changes on backend side /** TODO: This should probably be a property and not
a function. Needs changes on backend side **/
property var getStatusTokenKey: function() {} property var getStatusTokenKey: function() {}
// for sticker flows /** for sticker flows **/
required property string stickersMarketAddress required property string stickersMarketAddress
required property string stickersNetworkId required property string stickersNetworkId
// Feature flag for single network send until its feature complete /** Feature flag for single network send until its feature complete **/
required property bool simpleSendEnabled required property bool simpleSendEnabled
/** For simple send modal flows, decoupling from transaction store **/
/** curently selected fiat currency symbol **/
required property string currentCurrency
/** Expected model structure:
- name: name of account
- address: wallet address
- color: color of the account
- emoji: emoji selected for the account
- currencyBalance: total currency balance in CurrencyAmount
- accountBalance: balance of selected token + selected chain
**/
required property var walletAccountsModel
/** Expected model structure:
- tokensKey: unique string ID of the token (asset); e.g. "ETH" or contract address
- name: user visible token name (e.g. "Ethereum")
- symbol: user visible token symbol (e.g. "ETH")
- decimals: number of decimal places
- communityId: optional; ID of the community this token belongs to, if any
- marketDetails: object containing props like `currencyPrice` for the computed values below
- balances: submodel[ chainId:int, account:string, balance:BigIntString, iconUrl:string ]
**/
required property var groupedAccountAssetsModel
/** Expected model structure:
- symbol [string] - unique identifier of a collectible
- collectionUid [string] - unique identifier of a collection
- contractAddress [string] - collectible's contract address
- name [string] - collectible's name e.g. "Magicat"
- collectionName [string] - collection name e.g. "Crypto Kitties"
- mediaUrl [url] - collectible's media url
- imageUrl [url] - collectible's image url
- communityId [string] - unique identifier of a community for community collectible or empty
- ownership [model] - submodel of balances per chain/account
- balance [int] - balance (always 1 for ERC-721)
- accountAddress [string] - unique identifier of an account
**/
required property var collectiblesBySymbolModel
/**
Expected model structure:
- chainId: network chain id
- chainName: name of network
- iconUrl: network icon url
networks on both mainnet & testnet
**/
required property var flatNetworksModel
/** true if testnet mode is on **/
required property var areTestNetworksEnabled
/** whether community tokens are shown in send modal
based on a global setting **/
required property var showCommunityAssetsInSend
function openSend(params = {}) { function openSend(params = {}) {
// TODO remove once simple send is feature complete // TODO remove once simple send is feature complete
let sendModalCmp = root.simpleSendEnabled ? simpleSendModalComponent: sendModalComponent let sendModalCmp = root.simpleSendEnabled ? simpleSendModalComponent: sendModalComponent
@ -155,7 +210,42 @@ QtObject {
readonly property Component simpleSendModalComponent: Component { readonly property Component simpleSendModalComponent: Component {
SimpleSendModal { SimpleSendModal {
id: simpleSendModal
/** TODO: use the newly defined WalletAccountsSelectorAdaptor
in https://github.com/status-im/status-desktop/pull/16834 **/
accountsModel: root.walletAccountsModel
assetsModel: assetsSelectorViewAdaptor.outputAssetsModel
collectiblesModel: collectiblesSelectionAdaptor.model
networksModel: root.filteredFlatNetworksModel
onClosed: destroy() onClosed: destroy()
TokenSelectorViewAdaptor {
id: assetsSelectorViewAdaptor
// TODO: remove all store dependecies and add specific properties to the handler instead
assetsModel: root.groupedAccountAssetsModel
flatNetworksModel: root.flatNetworksModel
currentCurrency: root.currentCurrency
showCommunityAssets: root.showCommunityAssetsInSend
accountAddress: simpleSendModal.selectedAccountAddress
enabledChainIds: [simpleSendModal.selectedChainId]
}
CollectiblesSelectionAdaptor {
id: collectiblesSelectionAdaptor
accountKey: simpleSendModal.selectedAccountAddress
networksModel: root.filteredFlatNetworksModel
collectiblesModel: root.collectiblesBySymbolModel
} }
} }
} }
readonly property var filteredFlatNetworksModel: SortFilterProxyModel {
sourceModel: root.flatNetworksModel
filters: ValueFilter { roleName: "isTest"; value: root.areTestNetworksEnabled }
}
}