From f1d4462f69b1ce29c0ba4067a22a0fa694f777a4 Mon Sep 17 00:00:00 2001 From: Noelia Date: Mon, 23 Oct 2023 13:32:50 +0200 Subject: [PATCH] feat(FinaliseOwnershipPopup): Moved to Popups - Moved finalise ownership and decline ownership popups from `ChatLayout` to `Popups`. - Removed instance from `ChatLayout`. Part of #12175 --- ui/app/AppLayouts/Chat/ChatLayout.qml | 114 +----------------- ui/app/AppLayouts/Chat/views/ChatView.qml | 4 +- .../helpers/SetSignerFeesSubscriber.qml | 14 +++ .../helpers/TransactionFeesBroker.qml | 31 ++++- ui/app/AppLayouts/Communities/helpers/qmldir | 1 + .../panels/OverviewSettingsPanel.qml | 4 +- .../Communities/views/CommunityColumnView.qml | 4 +- .../views/CommunitySettingsView.qml | 27 ++++- ui/app/mainui/AppMain.qml | 1 + ui/app/mainui/Popups.qml | 100 +++++++++++++++ .../shared/stores/CommunityTokensStore.qml | 34 +++++- ui/imports/utils/Global.qml | 2 + 12 files changed, 215 insertions(+), 121 deletions(-) create mode 100644 ui/app/AppLayouts/Communities/helpers/SetSignerFeesSubscriber.qml diff --git a/ui/app/AppLayouts/Chat/ChatLayout.qml b/ui/app/AppLayouts/Chat/ChatLayout.qml index 73244b7c84..99a7191be4 100644 --- a/ui/app/AppLayouts/Chat/ChatLayout.qml +++ b/ui/app/AppLayouts/Chat/ChatLayout.qml @@ -44,8 +44,7 @@ StackLayout { // Community transfer ownership related props/signals: // TODO: Backend integrations: - property bool isPendingOwnershipRequest: false - signal ownershipDeclined() + property bool isPendingOwnershipRequest: sectionItemModel.isPendingOwnershipRequest onCurrentIndexChanged: { Global.closeCreateChatView() @@ -153,9 +152,9 @@ StackLayout { collectiblesModel: root.rootStore.collectiblesModel isInvitationPending: root.rootStore.isCommunityRequestPending(chatView.communityId) - finaliseOwnershipTransferPopup: finaliseOwnershipPopup isPendingOwnershipRequest: root.isPendingOwnershipRequest + onFinaliseOwnershipClicked: Global.openFinaliseOwnershipPopup(communityId) onCommunityInfoButtonClicked: root.currentIndex = 1 onCommunityManageButtonClicked: root.currentIndex = 1 @@ -192,7 +191,6 @@ StackLayout { walletAccountsModel: WalletStore.RootStore.nonWatchAccounts sendModalPopup: root.sendModalPopup - finaliseOwnershipTransferPopup: finaliseOwnershipPopup isPendingOwnershipRequest: root.isPendingOwnershipRequest chatCommunitySectionModule: root.rootStore.chatCommunitySectionModule @@ -201,6 +199,7 @@ StackLayout { onCommunitySettingsDisabledChanged: if (communitySettingsDisabled) goTo(Constants.CommunitySettingsSections.Overview) onBackToCommunityClicked: root.currentIndex = 0 + onFinaliseOwnershipClicked: Global.openFinaliseOwnershipPopup(community.id) Connections { target: root.rootStore @@ -272,113 +271,6 @@ StackLayout { } } - // Components related to transfer community ownership flow: - Component { - id: finaliseOwnershipPopup - - FinaliseOwnershipPopup { - id: finalisePopup - - readonly property var communityData: root.sectionItemModel - readonly property var ownerToken: ModelUtils.getByKey(communityData.communityTokens, - "privilegesLevel", - Constants.TokenPrivilegesLevel.Owner) - - communityName: communityData.name - communityLogo: communityData.image - communityColor: communityData.color - - tokenSymbol: ownerToken.symbol - tokenChainName: ownerToken.chainName - - accounts: WalletStore.RootStore.nonWatchAccounts - - feeText: feeSubscriber.feeText - feeErrorText: feeSubscriber.feeErrorText - isFeeLoading: !feeSubscriber.feesResponse - - onRejectClicked: Global.openPopup(declineOwnershipPopup) - onFinaliseOwnershipClicked: signPopup.open() - onVisitCommunityClicked: rootStore.setActiveCommunity(communityData.id) - onOpenControlNodeDocClicked: Global.openLink(link) - - DeployFeesSubscriber { - id: feeSubscriber - - readonly property TransactionFeesBroker feesBroker: TransactionFeesBroker { - communityTokensStore: root.rootStore.communityTokensStore - } - - chainId: finalisePopup.ownerToken.chainId - tokenType: finalisePopup.ownerToken.type - isOwnerDeployment: true - accountAddress: finalisePopup.ownerToken.accountAddress - enabled: finalisePopup.visible || signPopup.visible - Component.onCompleted: feesBroker.registerDeployFeesSubscriber(feeSubscriber) - } - - SignTransactionsPopup { - id: signPopup - - title: qsTr("Sign transaction - update %1 smart contract").arg(finalisePopup.communityData.name) - totalFeeText: finalisePopup.isFeeLoading ? "" : finalisePopup.feeText - errorText: finalisePopup.feeErrorText - accountName: finalisePopup.ownerToken.accountName - - model: QtObject { - readonly property string title: finalisePopup.feeLabel - readonly property string feeText: signPopup.totalFeeText - readonly property bool error: finalisePopup.feeErrorText !== "" - } - - onSignTransactionClicked: { - root.rootStore.communityTokensStore.updateSmartContract(finalisePopup.communityData.id, finalisePopup.ownerToken) - close() - } - } - - Connections { - target: root - onOwnershipDeclined: finalisePopup.close() - } - } - } - - Component { - id: declineOwnershipPopup - - FinaliseOwnershipDeclinePopup { - readonly property var communityData: root.sectionItemModel - - communityName: communityData.name - - onDeclineClicked: { - console.warn("TODO: Backend update notification center and display a toast: Ownership Declined!") - root.ownershipDeclined() - } - } - } - - Component { - id: controlNodeOfflineComponent - ControlNodeOfflineCommunityView { - id: controlNodeOfflineView - readonly property var communityData: sectionItemModel - readonly property string communityId: communityData.id - name: communityData.name - communityDesc: communityData.description - color: communityData.color - image: communityData.image - membersCount: communityData.members.count - communityItemsModel: root.rootStore.communityItemsModel - notificationCount: activityCenterStore.unreadNotificationsCount - hasUnseenNotifications: activityCenterStore.hasUnseenNotifications - onNotificationButtonClicked: Global.openActivityCenterPopup() - onAdHocChatButtonClicked: rootStore.openCloseCreateChatView() - } - } - // End of components related to transfer community ownership flow. - Connections { target: root.rootStore enabled: mainViewLoader.item diff --git a/ui/app/AppLayouts/Chat/views/ChatView.qml b/ui/app/AppLayouts/Chat/views/ChatView.qml index 9ff37190c2..b11a7cba0d 100644 --- a/ui/app/AppLayouts/Chat/views/ChatView.qml +++ b/ui/app/AppLayouts/Chat/views/ChatView.qml @@ -75,8 +75,8 @@ StatusSectionLayout { } // Community transfer ownership related props: - required property var finaliseOwnershipTransferPopup required property bool isPendingOwnershipRequest + signal finaliseOwnershipClicked signal communityInfoButtonClicked() signal communityManageButtonClicked() @@ -246,10 +246,10 @@ StatusSectionLayout { communitiesStore: root.communitiesStore emojiPopup: root.emojiPopup hasAddedContacts: root.hasAddedContacts - finaliseOwnershipTransferPopup: root.finaliseOwnershipTransferPopup isPendingOwnershipRequest: root.isPendingOwnershipRequest onInfoButtonClicked: root.communityInfoButtonClicked() onManageButtonClicked: root.communityManageButtonClicked() + onFinaliseOwnershipClicked: root.finaliseOwnershipClicked() } } diff --git a/ui/app/AppLayouts/Communities/helpers/SetSignerFeesSubscriber.qml b/ui/app/AppLayouts/Communities/helpers/SetSignerFeesSubscriber.qml new file mode 100644 index 0000000000..379f54af6c --- /dev/null +++ b/ui/app/AppLayouts/Communities/helpers/SetSignerFeesSubscriber.qml @@ -0,0 +1,14 @@ +import QtQuick 2.15 +/*! + \qmltype SetSignerFeesSubscriber + \inherits QtObject + \brief Helper object that holds the subscriber properties and the published properties for the fee computation. +*/ + +SingleFeeSubscriber { + id: root + + required property string tokenKey + required property string accountAddress + required property bool enabled +} diff --git a/ui/app/AppLayouts/Communities/helpers/TransactionFeesBroker.qml b/ui/app/AppLayouts/Communities/helpers/TransactionFeesBroker.qml index f692497253..3feb453756 100644 --- a/ui/app/AppLayouts/Communities/helpers/TransactionFeesBroker.qml +++ b/ui/app/AppLayouts/Communities/helpers/TransactionFeesBroker.qml @@ -12,7 +12,8 @@ QtObject { Airdrop, Deploy, SelfDestruct, - Burn + Burn, + SetSigner } property CommunityTokensStore communityTokensStore @@ -97,10 +98,26 @@ QtObject { onResponseChanged: subscriber.feesResponse = response } + component SetSignerFeeSubscription: Subscription { + required property SetSignerFeesSubscriber subscriber + readonly property var requestArgs: ({ + type: TransactionFeesBroker.FeeType.SetSigner, + tokenKey: subscriber.tokenKey, + accountAddress: subscriber.accountAddress + }) + isReady: !!subscriber.tokenKey && + !!subscriber.accountAddress && + subscriber.enabled + + topic: isReady ? JSON.stringify(requestArgs) : "" + onResponseChanged: subscriber.feesResponse = response + } + readonly property Component airdropFeeSubscriptionComponent: AirdropFeeSubscription {} readonly property Component deployFeeSubscriptionComponent: DeployFeeSubscription {} readonly property Component selfDestructFeeSubscriptionComponent: SelfDestructFeeSubscription {} readonly property Component burnFeeSubscriptionComponent: BurnTokenFeeSubscription {} + readonly property Component setSignerFeeSubscriptionComponent: SetSignerFeeSubscription {} readonly property SubscriptionBroker feesBroker: SubscriptionBroker { active: Global.applicationWindow.active @@ -142,6 +159,9 @@ QtObject { case TransactionFeesBroker.FeeType.Burn: computeBurnFee(args, topic) break + case TransactionFeesBroker.FeeType.SetSigner: + computeSetSignerFee(args, topic) + break default: console.error("Unknown fee type: " + args.type) } @@ -168,6 +188,10 @@ QtObject { console.assert(typeof args.amount === "string") communityTokensStore.computeBurnFee(args.tokenKey, args.amount, args.accountAddress, topic) } + + function computeSetSignerFee(args, topic) { + communityTokensStore.computeSetSignerFee(args.tokenKey, args.accountAddress, topic) + } } function registerAirdropFeesSubscriber(subscriberObj) { @@ -189,4 +213,9 @@ QtObject { const subscription = d.burnFeeSubscriptionComponent.createObject(subscriberObj, { subscriber: subscriberObj }) d.feesBroker.subscribe(subscription) } + + function registerSetSignerFeesSubscriber(subscriberObj) { + const subscription = d.setSignerFeeSubscriptionComponent.createObject(subscriberObj, { subscriber: subscriberObj }) + d.feesBroker.subscribe(subscription) + } } diff --git a/ui/app/AppLayouts/Communities/helpers/qmldir b/ui/app/AppLayouts/Communities/helpers/qmldir index 0ecc5bdebd..e26d698ce6 100644 --- a/ui/app/AppLayouts/Communities/helpers/qmldir +++ b/ui/app/AppLayouts/Communities/helpers/qmldir @@ -3,6 +3,7 @@ AirdropFeesSubscriber 1.0 AirdropFeesSubscriber.qml BurnTokenFeesSubscriber 1.0 BurnTokenFeesSubscriber.qml DeployFeesSubscriber 1.0 DeployFeesSubscriber.qml SelfDestructFeesSubscriber 1.0 SelfDestructFeesSubscriber.qml +SetSignerFeesSubscriber 1.0 SetSignerFeesSubscriber.qml SingleFeeSubscriber 1.0 SingleFeeSubscriber.qml TokenObject 1.0 TokenObject.qml TransactionFeesBroker 1.0 TransactionFeesBroker.qml diff --git a/ui/app/AppLayouts/Communities/panels/OverviewSettingsPanel.qml b/ui/app/AppLayouts/Communities/panels/OverviewSettingsPanel.qml index 4e18d68e58..771a46fe04 100644 --- a/ui/app/AppLayouts/Communities/panels/OverviewSettingsPanel.qml +++ b/ui/app/AppLayouts/Communities/panels/OverviewSettingsPanel.qml @@ -57,8 +57,8 @@ StackLayout { property string pubsubTopicKey // Community transfer ownership related props: - required property var finaliseOwnershipTransferPopup required property bool isPendingOwnershipRequest + signal finaliseOwnershipClicked function navigateBack() { if (editSettingsPanelLoader.item.dirty) @@ -204,7 +204,7 @@ StackLayout { } } onImportControlNodeClicked: root.importControlNodeClicked() - onFinaliseOwnershipTransferClicked: Global.openPopup(root.finaliseOwnershipTransferPopup) + onFinaliseOwnershipTransferClicked: root.finaliseOwnershipClicked() //TODO update once the domain changes onLearnMoreClicked: Global.openLink(Constants.statusHelpLinkPrefix + "status-communities/about-the-control-node-in-status-communities") } diff --git a/ui/app/AppLayouts/Communities/views/CommunityColumnView.qml b/ui/app/AppLayouts/Communities/views/CommunityColumnView.qml index 91c89f564e..4d42787128 100644 --- a/ui/app/AppLayouts/Communities/views/CommunityColumnView.qml +++ b/ui/app/AppLayouts/Communities/views/CommunityColumnView.qml @@ -41,8 +41,8 @@ Item { property var communityData // Community transfer ownership related props: - required property var finaliseOwnershipTransferPopup required property bool isPendingOwnershipRequest + signal finaliseOwnershipClicked readonly property bool isSectionAdmin: communityData.memberRole === Constants.memberRole.owner || @@ -586,7 +586,7 @@ Item { text: communityData.joined ? qsTr("Finalise community ownership") : qsTr("To join, finalise community ownership") - onClicked: Global.openPopup(root.finaliseOwnershipTransferPopup) + onClicked: root.finaliseOwnershipClicked() } } diff --git a/ui/app/AppLayouts/Communities/views/CommunitySettingsView.qml b/ui/app/AppLayouts/Communities/views/CommunitySettingsView.qml index 95d510a605..b77c2fe61a 100644 --- a/ui/app/AppLayouts/Communities/views/CommunitySettingsView.qml +++ b/ui/app/AppLayouts/Communities/views/CommunitySettingsView.qml @@ -45,8 +45,8 @@ StatusSectionLayout { readonly property bool isControlNode: community.isControlNode // Community transfer ownership related props: - required property var finaliseOwnershipTransferPopup required property bool isPendingOwnershipRequest + signal finaliseOwnershipClicked readonly property string filteredSelectedTags: { let tagsArray = [] @@ -194,9 +194,10 @@ StatusSectionLayout { tokensModel: root.community.communityTokens accounts: root.walletAccountsModel - finaliseOwnershipTransferPopup: root.finaliseOwnershipTransferPopup isPendingOwnershipRequest: root.isPendingOwnershipRequest + onFinaliseOwnershipClicked: root.finaliseOwnershipClicked() + onCollectCommunityMetricsMessagesCount: { rootStore.collectCommunityMetricsMessagesCount(intervals) } @@ -800,6 +801,28 @@ StatusSectionLayout { Global.displayToastMessage(title1, url, "", true, type, url) Global.displayToastMessage(title2, url, "", true, type, url) } + + function onSetSignerStateChanged(communityId, communityName, status, url) { + if (root.community.id !== communityId) + return + + if (status === Constants.ContractTransactionStatus.Completed) { + Global.displayToastMessage(qsTr("%1 smart contract amended").arg(communityName), + qsTr("View on etherscan"), "", false, + Constants.ephemeralNotificationType.success, url) + Global.displayToastMessage(qsTr("Your device is now the control node for %1. You now have full Community admin rights.").arg(communityName), + qsTr("%1 Community admin"), "", false, + Constants.ephemeralNotificationType.success, "" /*TODO internal link*/) + } else if (status === Constants.ContractTransactionStatus.Failed) { + Global.displayToastMessage(qsTr("%1 smart contract update failed").arg(communityName), + qsTr("View on etherscan"), "", false, + Constants.ephemeralNotificationType.normal, url) + } else if (status === Constants.ContractTransactionStatus.InProgress) { + Global.displayToastMessage(qsTr("Updating %1 smart contract").arg(communityName), + qsTr("View on etherscan"), "", true, + Constants.ephemeralNotificationType.normal, url) + } + } } Connections { diff --git a/ui/app/mainui/AppMain.qml b/ui/app/mainui/AppMain.qml index 56e1e446f3..4bf5af258f 100644 --- a/ui/app/mainui/AppMain.qml +++ b/ui/app/mainui/AppMain.qml @@ -218,6 +218,7 @@ Item { id: popups popupParent: appMain rootStore: appMain.rootStore + communityTokensStore: appMain.communityTokensStore communitiesStore: appMain.communitiesStore devicesStore: appMain.rootStore.profileSectionStore.devicesStore isDevBuild: !production diff --git a/ui/app/mainui/Popups.qml b/ui/app/mainui/Popups.qml index 69acc77eee..fd6e46683f 100644 --- a/ui/app/mainui/Popups.qml +++ b/ui/app/mainui/Popups.qml @@ -9,10 +9,12 @@ import StatusQ.Controls 0.1 import StatusQ.Components 0.1 import StatusQ.Popups 0.1 import StatusQ.Core.Theme 0.1 +import StatusQ.Core.Utils 0.1 as SQUtils import AppLayouts.Chat.popups 1.0 import AppLayouts.Profile.popups 1.0 import AppLayouts.Communities.popups 1.0 +import AppLayouts.Communities.helpers 1.0 import AppLayouts.Wallet.stores 1.0 as WalletStore import AppLayouts.Chat.stores 1.0 as ChatStore @@ -27,12 +29,14 @@ QtObject { required property var popupParent required property var rootStore + required property var communityTokensStore property var communitiesStore property var devicesStore property bool isDevBuild signal openExternalLink(string link) signal saveDomainToUnfurledWhitelist(string domain) + signal ownershipDeclined property var activePopupComponents: [] @@ -68,6 +72,8 @@ QtObject { Global.openImportControlNodePopup.connect(openImportControlNodePopup) Global.openEditSharedAddressesFlow.connect(openEditSharedAddressesPopup) Global.openTransferOwnershipPopup.connect(openTransferOwnershipPopup) + Global.openFinaliseOwnershipPopup.connect(openFinaliseOwnershipPopup) + Global.openDeclineOwnershipPopup.connect(openDeclineOwnershipPopup) } property var currentPopup @@ -288,6 +294,14 @@ QtObject { openPopup(confirmExternalLinkPopup, {link, domain}) } + function openFinaliseOwnershipPopup(communityId) { + openPopup(finaliseOwnershipPopup, { communityId: communityId }) + } + + function openDeclineOwnershipPopup(communityName) { + openPopup(declineOwnershipPopup, { communityName: communityName }) + } + readonly property list _components: [ Component { id: removeContactConfirmationDialog @@ -806,6 +820,92 @@ QtObject { onOpenExternalLink: root.openExternalLink(link) onSaveDomainToUnfurledWhitelist: root.saveDomainToUnfurledWhitelist(domain) } + }, + + // Components related to transfer community ownership flow: + Component { + id: finaliseOwnershipPopup + FinaliseOwnershipPopup { + id: finalisePopup + + property string communityId + readonly property var ownerToken: { + let jsonObj = root.rootStore.mainModuleInst.getOwnerTokenAsJson(finalisePopup.communityId) + return JSON.parse(jsonObj) + } + readonly property var communityData : root.communitiesStore.getCommunityDetailsAsJson(communityId) + + communityName: communityData.name + communityLogo: communityData.image + communityColor: communityData.color + + tokenSymbol: ownerToken.symbol + tokenChainName: ownerToken.chainName + + feeText: feeSubscriber.feeText + feeErrorText: feeSubscriber.feeErrorText + isFeeLoading: !feeSubscriber.feesResponse + + accounts: WalletStore.RootStore.nonWatchAccounts + + destroyOnClose: true + + onRejectClicked: Global.openDeclineOwnershipPopup(communityData.name) + onFinaliseOwnershipClicked: signPopup.open() + onVisitCommunityClicked: rootStore.setActiveCommunity(communityData.id) + onOpenControlNodeDocClicked: Global.openLink(link) + + SetSignerFeesSubscriber { + id: feeSubscriber + + readonly property TransactionFeesBroker feesBroker: TransactionFeesBroker { + communityTokensStore: root.communityTokensStore + } + + tokenKey: finalisePopup.ownerToken.contractUniqueKey + accountAddress: finalisePopup.ownerToken.accountAddress + enabled: finalisePopup.visible || signPopup.visible + Component.onCompleted: feesBroker.registerSetSignerFeesSubscriber(feeSubscriber) + } + + SignTransactionsPopup { + id: signPopup + + title: qsTr("Sign transaction - update %1 smart contract").arg(finalisePopup.communityName) + totalFeeText: finalisePopup.isFeeLoading ? "" : finalisePopup.feeText + errorText: finalisePopup.feeErrorText + accountName: finalisePopup.ownerToken.accountName + + model: QtObject { + readonly property string title: finalisePopup.feeLabel + readonly property string feeText: signPopup.totalFeeText + readonly property bool error: finalisePopup.feeErrorText !== "" + } + + onSignTransactionClicked: { + root.communityTokensStore.updateSmartContract(finalisePopup.communityId, finalisePopup.ownerToken.contractUniqueKey) + close() + } + } + + Connections { + target: root + onOwnershipDeclined: { + finalisePopup.close() + root.communityTokensStore.ownershipDeclined() + } + } + } + }, + + Component { + id: declineOwnershipPopup + FinaliseOwnershipDeclinePopup { + destroyOnClose: true + + onDeclineClicked: root.ownershipDeclined() + } } + // End of components related to transfer community ownership flow. ] } diff --git a/ui/imports/shared/stores/CommunityTokensStore.qml b/ui/imports/shared/stores/CommunityTokensStore.qml index 4cdc66ab2b..92c9b89dd8 100644 --- a/ui/imports/shared/stores/CommunityTokensStore.qml +++ b/ui/imports/shared/stores/CommunityTokensStore.qml @@ -16,6 +16,7 @@ QtObject { signal selfDestructFeeUpdated(var ethCurrency, var fiatCurrency, int error, string responseId) signal airdropFeeUpdated(var airdropFees) signal burnFeeUpdated(var ethCurrency, var fiatCurrency, int error, string responseId) + signal setSignerFeeUpdated(var ethCurrency, var fiatCurrency, int error, string responseId) signal deploymentStateChanged(string communityId, int status, string url) signal ownerTokenDeploymentStateChanged(string communityId, int status, string url) @@ -23,6 +24,7 @@ QtObject { signal burnStateChanged(string communityId, string tokenName, int status, string url) signal airdropStateChanged(string communityId, string tokenName, string chainName, int status, string url) signal ownerTokenDeploymentStarted(string communityId, string url) + signal setSignerStateChanged(string communityId, string communityName, int status, string url) // Minting tokens: function deployCollectible(communityId, collectibleItem) @@ -60,8 +62,13 @@ QtObject { communityTokensModuleInst.removeCommunityToken(communityId, parts[0], parts[1]) } - function updateSmartContract(communityId, collectibleItem) { + function updateSmartContract(tokenKey, accountAddress) { console.warn("TODO: Backend to update smart contract and finalise community transfer ownership! The token owner is: " + collectibleItem.symbol) + //communityTokensModuleInst.setSigner(tokenKey, accountAddress) + } + + function ownershipDeclined() { + console.warn("TODO: Backend update notification center and display a toast: Ownership Declined!") } readonly property Connections connections: Connections { @@ -83,6 +90,11 @@ QtObject { root.burnFeeUpdated(ethCurrency, fiatCurrency, errorCode, responseId) } + function onSetSignerFeeUpdated(ethCurrency, fiatCurrency, errorCode, responseId) { + console.warn("TODO: Backend") + //root.setSignerFeeUpdated(ethCurrency, fiatCurrency, errorCode, responseId) + } + function onDeploymentStateChanged(communityId, status, url) { root.deploymentStateChanged(communityId, status, url) } @@ -106,6 +118,21 @@ QtObject { function onBurnStateChanged(communityId, tokenName, status, url) { root.burnStateChanged(communityId, tokenName, status, url) } + + function onOwnerTokenReceived(communityId, communityName, chainId, communityAddress) { + console.warn("TODO: Backend") +// Global.displayToastMessage(qsTr("You received the Owner token for %1. To finalize ownership, make your device the control node.").arg(communityName), +// qsTr("Finalise ownership"), +// "", +// false, +// Constants.ephemeralNotificationType.normal, +// "") + } + + function onSetSignerStateChanged(communityId, communityName, status, url) { + console.warn("TODO: Backend") + //root.setSignerStateChanged(communityId, communityName, status, url) + } } // Burn: @@ -124,6 +151,11 @@ QtObject { communityTokensModuleInst.computeDeployFee(communityId, chainId, accountAddress, tokenType, isOwnerDeployment, requestId) } + function computeSetSignerFee(tokenKey, accountAddress, requestId) { + console.warn("TODO: Backend!") + //communityTokensModuleInst.computeSetSignerFee(tokenKey, accountAddress, requestId) + } + /** * walletsAndAmounts - array of following structure is expected: * [ diff --git a/ui/imports/utils/Global.qml b/ui/imports/utils/Global.qml index 134c466ea9..2a3afb8418 100644 --- a/ui/imports/utils/Global.qml +++ b/ui/imports/utils/Global.qml @@ -52,6 +52,8 @@ QtObject { var token, var accounts, var sendModalPopup) + signal openFinaliseOwnershipPopup(string communityId) + signal openDeclineOwnershipPopup(string communityName) signal openLink(string link) signal openLinkWithConfirmation(string link, string domain)