feat(FinaliseOwnershipPopup): Moved to Popups
- Moved finalise ownership and decline ownership popups from `ChatLayout` to `Popups`. - Removed instance from `ChatLayout`. Part of #12175
This commit is contained in:
parent
fa3be8623b
commit
f1d4462f69
|
@ -44,8 +44,7 @@ StackLayout {
|
||||||
|
|
||||||
// Community transfer ownership related props/signals:
|
// Community transfer ownership related props/signals:
|
||||||
// TODO: Backend integrations:
|
// TODO: Backend integrations:
|
||||||
property bool isPendingOwnershipRequest: false
|
property bool isPendingOwnershipRequest: sectionItemModel.isPendingOwnershipRequest
|
||||||
signal ownershipDeclined()
|
|
||||||
|
|
||||||
onCurrentIndexChanged: {
|
onCurrentIndexChanged: {
|
||||||
Global.closeCreateChatView()
|
Global.closeCreateChatView()
|
||||||
|
@ -153,9 +152,9 @@ StackLayout {
|
||||||
collectiblesModel: root.rootStore.collectiblesModel
|
collectiblesModel: root.rootStore.collectiblesModel
|
||||||
isInvitationPending: root.rootStore.isCommunityRequestPending(chatView.communityId)
|
isInvitationPending: root.rootStore.isCommunityRequestPending(chatView.communityId)
|
||||||
|
|
||||||
finaliseOwnershipTransferPopup: finaliseOwnershipPopup
|
|
||||||
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
||||||
|
|
||||||
|
onFinaliseOwnershipClicked: Global.openFinaliseOwnershipPopup(communityId)
|
||||||
onCommunityInfoButtonClicked: root.currentIndex = 1
|
onCommunityInfoButtonClicked: root.currentIndex = 1
|
||||||
onCommunityManageButtonClicked: root.currentIndex = 1
|
onCommunityManageButtonClicked: root.currentIndex = 1
|
||||||
|
|
||||||
|
@ -192,7 +191,6 @@ StackLayout {
|
||||||
walletAccountsModel: WalletStore.RootStore.nonWatchAccounts
|
walletAccountsModel: WalletStore.RootStore.nonWatchAccounts
|
||||||
sendModalPopup: root.sendModalPopup
|
sendModalPopup: root.sendModalPopup
|
||||||
|
|
||||||
finaliseOwnershipTransferPopup: finaliseOwnershipPopup
|
|
||||||
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
||||||
|
|
||||||
chatCommunitySectionModule: root.rootStore.chatCommunitySectionModule
|
chatCommunitySectionModule: root.rootStore.chatCommunitySectionModule
|
||||||
|
@ -201,6 +199,7 @@ StackLayout {
|
||||||
onCommunitySettingsDisabledChanged: if (communitySettingsDisabled) goTo(Constants.CommunitySettingsSections.Overview)
|
onCommunitySettingsDisabledChanged: if (communitySettingsDisabled) goTo(Constants.CommunitySettingsSections.Overview)
|
||||||
|
|
||||||
onBackToCommunityClicked: root.currentIndex = 0
|
onBackToCommunityClicked: root.currentIndex = 0
|
||||||
|
onFinaliseOwnershipClicked: Global.openFinaliseOwnershipPopup(community.id)
|
||||||
|
|
||||||
Connections {
|
Connections {
|
||||||
target: root.rootStore
|
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 {
|
Connections {
|
||||||
target: root.rootStore
|
target: root.rootStore
|
||||||
enabled: mainViewLoader.item
|
enabled: mainViewLoader.item
|
||||||
|
|
|
@ -75,8 +75,8 @@ StatusSectionLayout {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Community transfer ownership related props:
|
// Community transfer ownership related props:
|
||||||
required property var finaliseOwnershipTransferPopup
|
|
||||||
required property bool isPendingOwnershipRequest
|
required property bool isPendingOwnershipRequest
|
||||||
|
signal finaliseOwnershipClicked
|
||||||
|
|
||||||
signal communityInfoButtonClicked()
|
signal communityInfoButtonClicked()
|
||||||
signal communityManageButtonClicked()
|
signal communityManageButtonClicked()
|
||||||
|
@ -246,10 +246,10 @@ StatusSectionLayout {
|
||||||
communitiesStore: root.communitiesStore
|
communitiesStore: root.communitiesStore
|
||||||
emojiPopup: root.emojiPopup
|
emojiPopup: root.emojiPopup
|
||||||
hasAddedContacts: root.hasAddedContacts
|
hasAddedContacts: root.hasAddedContacts
|
||||||
finaliseOwnershipTransferPopup: root.finaliseOwnershipTransferPopup
|
|
||||||
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
||||||
onInfoButtonClicked: root.communityInfoButtonClicked()
|
onInfoButtonClicked: root.communityInfoButtonClicked()
|
||||||
onManageButtonClicked: root.communityManageButtonClicked()
|
onManageButtonClicked: root.communityManageButtonClicked()
|
||||||
|
onFinaliseOwnershipClicked: root.finaliseOwnershipClicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
}
|
|
@ -12,7 +12,8 @@ QtObject {
|
||||||
Airdrop,
|
Airdrop,
|
||||||
Deploy,
|
Deploy,
|
||||||
SelfDestruct,
|
SelfDestruct,
|
||||||
Burn
|
Burn,
|
||||||
|
SetSigner
|
||||||
}
|
}
|
||||||
|
|
||||||
property CommunityTokensStore communityTokensStore
|
property CommunityTokensStore communityTokensStore
|
||||||
|
@ -97,10 +98,26 @@ QtObject {
|
||||||
onResponseChanged: subscriber.feesResponse = response
|
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 airdropFeeSubscriptionComponent: AirdropFeeSubscription {}
|
||||||
readonly property Component deployFeeSubscriptionComponent: DeployFeeSubscription {}
|
readonly property Component deployFeeSubscriptionComponent: DeployFeeSubscription {}
|
||||||
readonly property Component selfDestructFeeSubscriptionComponent: SelfDestructFeeSubscription {}
|
readonly property Component selfDestructFeeSubscriptionComponent: SelfDestructFeeSubscription {}
|
||||||
readonly property Component burnFeeSubscriptionComponent: BurnTokenFeeSubscription {}
|
readonly property Component burnFeeSubscriptionComponent: BurnTokenFeeSubscription {}
|
||||||
|
readonly property Component setSignerFeeSubscriptionComponent: SetSignerFeeSubscription {}
|
||||||
|
|
||||||
readonly property SubscriptionBroker feesBroker: SubscriptionBroker {
|
readonly property SubscriptionBroker feesBroker: SubscriptionBroker {
|
||||||
active: Global.applicationWindow.active
|
active: Global.applicationWindow.active
|
||||||
|
@ -142,6 +159,9 @@ QtObject {
|
||||||
case TransactionFeesBroker.FeeType.Burn:
|
case TransactionFeesBroker.FeeType.Burn:
|
||||||
computeBurnFee(args, topic)
|
computeBurnFee(args, topic)
|
||||||
break
|
break
|
||||||
|
case TransactionFeesBroker.FeeType.SetSigner:
|
||||||
|
computeSetSignerFee(args, topic)
|
||||||
|
break
|
||||||
default:
|
default:
|
||||||
console.error("Unknown fee type: " + args.type)
|
console.error("Unknown fee type: " + args.type)
|
||||||
}
|
}
|
||||||
|
@ -168,6 +188,10 @@ QtObject {
|
||||||
console.assert(typeof args.amount === "string")
|
console.assert(typeof args.amount === "string")
|
||||||
communityTokensStore.computeBurnFee(args.tokenKey, args.amount, args.accountAddress, topic)
|
communityTokensStore.computeBurnFee(args.tokenKey, args.amount, args.accountAddress, topic)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function computeSetSignerFee(args, topic) {
|
||||||
|
communityTokensStore.computeSetSignerFee(args.tokenKey, args.accountAddress, topic)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function registerAirdropFeesSubscriber(subscriberObj) {
|
function registerAirdropFeesSubscriber(subscriberObj) {
|
||||||
|
@ -189,4 +213,9 @@ QtObject {
|
||||||
const subscription = d.burnFeeSubscriptionComponent.createObject(subscriberObj, { subscriber: subscriberObj })
|
const subscription = d.burnFeeSubscriptionComponent.createObject(subscriberObj, { subscriber: subscriberObj })
|
||||||
d.feesBroker.subscribe(subscription)
|
d.feesBroker.subscribe(subscription)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function registerSetSignerFeesSubscriber(subscriberObj) {
|
||||||
|
const subscription = d.setSignerFeeSubscriptionComponent.createObject(subscriberObj, { subscriber: subscriberObj })
|
||||||
|
d.feesBroker.subscribe(subscription)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@ AirdropFeesSubscriber 1.0 AirdropFeesSubscriber.qml
|
||||||
BurnTokenFeesSubscriber 1.0 BurnTokenFeesSubscriber.qml
|
BurnTokenFeesSubscriber 1.0 BurnTokenFeesSubscriber.qml
|
||||||
DeployFeesSubscriber 1.0 DeployFeesSubscriber.qml
|
DeployFeesSubscriber 1.0 DeployFeesSubscriber.qml
|
||||||
SelfDestructFeesSubscriber 1.0 SelfDestructFeesSubscriber.qml
|
SelfDestructFeesSubscriber 1.0 SelfDestructFeesSubscriber.qml
|
||||||
|
SetSignerFeesSubscriber 1.0 SetSignerFeesSubscriber.qml
|
||||||
SingleFeeSubscriber 1.0 SingleFeeSubscriber.qml
|
SingleFeeSubscriber 1.0 SingleFeeSubscriber.qml
|
||||||
TokenObject 1.0 TokenObject.qml
|
TokenObject 1.0 TokenObject.qml
|
||||||
TransactionFeesBroker 1.0 TransactionFeesBroker.qml
|
TransactionFeesBroker 1.0 TransactionFeesBroker.qml
|
||||||
|
|
|
@ -57,8 +57,8 @@ StackLayout {
|
||||||
property string pubsubTopicKey
|
property string pubsubTopicKey
|
||||||
|
|
||||||
// Community transfer ownership related props:
|
// Community transfer ownership related props:
|
||||||
required property var finaliseOwnershipTransferPopup
|
|
||||||
required property bool isPendingOwnershipRequest
|
required property bool isPendingOwnershipRequest
|
||||||
|
signal finaliseOwnershipClicked
|
||||||
|
|
||||||
function navigateBack() {
|
function navigateBack() {
|
||||||
if (editSettingsPanelLoader.item.dirty)
|
if (editSettingsPanelLoader.item.dirty)
|
||||||
|
@ -204,7 +204,7 @@ StackLayout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
onImportControlNodeClicked: root.importControlNodeClicked()
|
onImportControlNodeClicked: root.importControlNodeClicked()
|
||||||
onFinaliseOwnershipTransferClicked: Global.openPopup(root.finaliseOwnershipTransferPopup)
|
onFinaliseOwnershipTransferClicked: root.finaliseOwnershipClicked()
|
||||||
//TODO update once the domain changes
|
//TODO update once the domain changes
|
||||||
onLearnMoreClicked: Global.openLink(Constants.statusHelpLinkPrefix + "status-communities/about-the-control-node-in-status-communities")
|
onLearnMoreClicked: Global.openLink(Constants.statusHelpLinkPrefix + "status-communities/about-the-control-node-in-status-communities")
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,8 +41,8 @@ Item {
|
||||||
property var communityData
|
property var communityData
|
||||||
|
|
||||||
// Community transfer ownership related props:
|
// Community transfer ownership related props:
|
||||||
required property var finaliseOwnershipTransferPopup
|
|
||||||
required property bool isPendingOwnershipRequest
|
required property bool isPendingOwnershipRequest
|
||||||
|
signal finaliseOwnershipClicked
|
||||||
|
|
||||||
readonly property bool isSectionAdmin:
|
readonly property bool isSectionAdmin:
|
||||||
communityData.memberRole === Constants.memberRole.owner ||
|
communityData.memberRole === Constants.memberRole.owner ||
|
||||||
|
@ -586,7 +586,7 @@ Item {
|
||||||
|
|
||||||
text: communityData.joined ? qsTr("Finalise community ownership") : qsTr("To join, finalise community ownership")
|
text: communityData.joined ? qsTr("Finalise community ownership") : qsTr("To join, finalise community ownership")
|
||||||
|
|
||||||
onClicked: Global.openPopup(root.finaliseOwnershipTransferPopup)
|
onClicked: root.finaliseOwnershipClicked()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -45,8 +45,8 @@ StatusSectionLayout {
|
||||||
readonly property bool isControlNode: community.isControlNode
|
readonly property bool isControlNode: community.isControlNode
|
||||||
|
|
||||||
// Community transfer ownership related props:
|
// Community transfer ownership related props:
|
||||||
required property var finaliseOwnershipTransferPopup
|
|
||||||
required property bool isPendingOwnershipRequest
|
required property bool isPendingOwnershipRequest
|
||||||
|
signal finaliseOwnershipClicked
|
||||||
|
|
||||||
readonly property string filteredSelectedTags: {
|
readonly property string filteredSelectedTags: {
|
||||||
let tagsArray = []
|
let tagsArray = []
|
||||||
|
@ -194,9 +194,10 @@ StatusSectionLayout {
|
||||||
tokensModel: root.community.communityTokens
|
tokensModel: root.community.communityTokens
|
||||||
accounts: root.walletAccountsModel
|
accounts: root.walletAccountsModel
|
||||||
|
|
||||||
finaliseOwnershipTransferPopup: root.finaliseOwnershipTransferPopup
|
|
||||||
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
isPendingOwnershipRequest: root.isPendingOwnershipRequest
|
||||||
|
|
||||||
|
onFinaliseOwnershipClicked: root.finaliseOwnershipClicked()
|
||||||
|
|
||||||
onCollectCommunityMetricsMessagesCount: {
|
onCollectCommunityMetricsMessagesCount: {
|
||||||
rootStore.collectCommunityMetricsMessagesCount(intervals)
|
rootStore.collectCommunityMetricsMessagesCount(intervals)
|
||||||
}
|
}
|
||||||
|
@ -800,6 +801,28 @@ StatusSectionLayout {
|
||||||
Global.displayToastMessage(title1, url, "", true, type, url)
|
Global.displayToastMessage(title1, url, "", true, type, url)
|
||||||
Global.displayToastMessage(title2, 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 {
|
Connections {
|
||||||
|
|
|
@ -218,6 +218,7 @@ Item {
|
||||||
id: popups
|
id: popups
|
||||||
popupParent: appMain
|
popupParent: appMain
|
||||||
rootStore: appMain.rootStore
|
rootStore: appMain.rootStore
|
||||||
|
communityTokensStore: appMain.communityTokensStore
|
||||||
communitiesStore: appMain.communitiesStore
|
communitiesStore: appMain.communitiesStore
|
||||||
devicesStore: appMain.rootStore.profileSectionStore.devicesStore
|
devicesStore: appMain.rootStore.profileSectionStore.devicesStore
|
||||||
isDevBuild: !production
|
isDevBuild: !production
|
||||||
|
|
|
@ -9,10 +9,12 @@ import StatusQ.Controls 0.1
|
||||||
import StatusQ.Components 0.1
|
import StatusQ.Components 0.1
|
||||||
import StatusQ.Popups 0.1
|
import StatusQ.Popups 0.1
|
||||||
import StatusQ.Core.Theme 0.1
|
import StatusQ.Core.Theme 0.1
|
||||||
|
import StatusQ.Core.Utils 0.1 as SQUtils
|
||||||
|
|
||||||
import AppLayouts.Chat.popups 1.0
|
import AppLayouts.Chat.popups 1.0
|
||||||
import AppLayouts.Profile.popups 1.0
|
import AppLayouts.Profile.popups 1.0
|
||||||
import AppLayouts.Communities.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.Wallet.stores 1.0 as WalletStore
|
||||||
import AppLayouts.Chat.stores 1.0 as ChatStore
|
import AppLayouts.Chat.stores 1.0 as ChatStore
|
||||||
|
@ -27,12 +29,14 @@ QtObject {
|
||||||
|
|
||||||
required property var popupParent
|
required property var popupParent
|
||||||
required property var rootStore
|
required property var rootStore
|
||||||
|
required property var communityTokensStore
|
||||||
property var communitiesStore
|
property var communitiesStore
|
||||||
property var devicesStore
|
property var devicesStore
|
||||||
property bool isDevBuild
|
property bool isDevBuild
|
||||||
|
|
||||||
signal openExternalLink(string link)
|
signal openExternalLink(string link)
|
||||||
signal saveDomainToUnfurledWhitelist(string domain)
|
signal saveDomainToUnfurledWhitelist(string domain)
|
||||||
|
signal ownershipDeclined
|
||||||
|
|
||||||
property var activePopupComponents: []
|
property var activePopupComponents: []
|
||||||
|
|
||||||
|
@ -68,6 +72,8 @@ QtObject {
|
||||||
Global.openImportControlNodePopup.connect(openImportControlNodePopup)
|
Global.openImportControlNodePopup.connect(openImportControlNodePopup)
|
||||||
Global.openEditSharedAddressesFlow.connect(openEditSharedAddressesPopup)
|
Global.openEditSharedAddressesFlow.connect(openEditSharedAddressesPopup)
|
||||||
Global.openTransferOwnershipPopup.connect(openTransferOwnershipPopup)
|
Global.openTransferOwnershipPopup.connect(openTransferOwnershipPopup)
|
||||||
|
Global.openFinaliseOwnershipPopup.connect(openFinaliseOwnershipPopup)
|
||||||
|
Global.openDeclineOwnershipPopup.connect(openDeclineOwnershipPopup)
|
||||||
}
|
}
|
||||||
|
|
||||||
property var currentPopup
|
property var currentPopup
|
||||||
|
@ -288,6 +294,14 @@ QtObject {
|
||||||
openPopup(confirmExternalLinkPopup, {link, domain})
|
openPopup(confirmExternalLinkPopup, {link, domain})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function openFinaliseOwnershipPopup(communityId) {
|
||||||
|
openPopup(finaliseOwnershipPopup, { communityId: communityId })
|
||||||
|
}
|
||||||
|
|
||||||
|
function openDeclineOwnershipPopup(communityName) {
|
||||||
|
openPopup(declineOwnershipPopup, { communityName: communityName })
|
||||||
|
}
|
||||||
|
|
||||||
readonly property list<Component> _components: [
|
readonly property list<Component> _components: [
|
||||||
Component {
|
Component {
|
||||||
id: removeContactConfirmationDialog
|
id: removeContactConfirmationDialog
|
||||||
|
@ -806,6 +820,92 @@ QtObject {
|
||||||
onOpenExternalLink: root.openExternalLink(link)
|
onOpenExternalLink: root.openExternalLink(link)
|
||||||
onSaveDomainToUnfurledWhitelist: root.saveDomainToUnfurledWhitelist(domain)
|
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.
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,7 @@ QtObject {
|
||||||
signal selfDestructFeeUpdated(var ethCurrency, var fiatCurrency, int error, string responseId)
|
signal selfDestructFeeUpdated(var ethCurrency, var fiatCurrency, int error, string responseId)
|
||||||
signal airdropFeeUpdated(var airdropFees)
|
signal airdropFeeUpdated(var airdropFees)
|
||||||
signal burnFeeUpdated(var ethCurrency, var fiatCurrency, int error, string responseId)
|
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 deploymentStateChanged(string communityId, int status, string url)
|
||||||
signal ownerTokenDeploymentStateChanged(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 burnStateChanged(string communityId, string tokenName, int status, string url)
|
||||||
signal airdropStateChanged(string communityId, string tokenName, string chainName, int status, string url)
|
signal airdropStateChanged(string communityId, string tokenName, string chainName, int status, string url)
|
||||||
signal ownerTokenDeploymentStarted(string communityId, string url)
|
signal ownerTokenDeploymentStarted(string communityId, string url)
|
||||||
|
signal setSignerStateChanged(string communityId, string communityName, int status, string url)
|
||||||
|
|
||||||
// Minting tokens:
|
// Minting tokens:
|
||||||
function deployCollectible(communityId, collectibleItem)
|
function deployCollectible(communityId, collectibleItem)
|
||||||
|
@ -60,8 +62,13 @@ QtObject {
|
||||||
communityTokensModuleInst.removeCommunityToken(communityId, parts[0], parts[1])
|
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)
|
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 {
|
readonly property Connections connections: Connections {
|
||||||
|
@ -83,6 +90,11 @@ QtObject {
|
||||||
root.burnFeeUpdated(ethCurrency, fiatCurrency, errorCode, responseId)
|
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) {
|
function onDeploymentStateChanged(communityId, status, url) {
|
||||||
root.deploymentStateChanged(communityId, status, url)
|
root.deploymentStateChanged(communityId, status, url)
|
||||||
}
|
}
|
||||||
|
@ -106,6 +118,21 @@ QtObject {
|
||||||
function onBurnStateChanged(communityId, tokenName, status, url) {
|
function onBurnStateChanged(communityId, tokenName, status, url) {
|
||||||
root.burnStateChanged(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:
|
// Burn:
|
||||||
|
@ -124,6 +151,11 @@ QtObject {
|
||||||
communityTokensModuleInst.computeDeployFee(communityId, chainId, accountAddress, tokenType, isOwnerDeployment, requestId)
|
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:
|
* walletsAndAmounts - array of following structure is expected:
|
||||||
* [
|
* [
|
||||||
|
|
|
@ -52,6 +52,8 @@ QtObject {
|
||||||
var token,
|
var token,
|
||||||
var accounts,
|
var accounts,
|
||||||
var sendModalPopup)
|
var sendModalPopup)
|
||||||
|
signal openFinaliseOwnershipPopup(string communityId)
|
||||||
|
signal openDeclineOwnershipPopup(string communityName)
|
||||||
|
|
||||||
signal openLink(string link)
|
signal openLink(string link)
|
||||||
signal openLinkWithConfirmation(string link, string domain)
|
signal openLinkWithConfirmation(string link, string domain)
|
||||||
|
|
Loading…
Reference in New Issue