feat(Communities): TokenMasterActionPopup added for Remote destruct, Kick and Ban actions
This commit is contained in:
parent
374f2e2149
commit
383cd6dcf7
|
@ -0,0 +1,147 @@
|
|||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Layouts 1.15
|
||||
|
||||
import Qt.labs.settings 1.0
|
||||
|
||||
import Storybook 1.0
|
||||
import Models 1.0
|
||||
|
||||
import AppLayouts.Communities.popups 1.0
|
||||
|
||||
|
||||
SplitView {
|
||||
orientation: Qt.Vertical
|
||||
|
||||
Logs { id: logs }
|
||||
|
||||
ListModel {
|
||||
id: accountsModel
|
||||
|
||||
ListElement {
|
||||
name: "Test account"
|
||||
emoji: "😋"
|
||||
address: "0x7F47C2e18a4BBf5487E6fb082eC2D9Ab0E6d7240"
|
||||
color: "red"
|
||||
}
|
||||
|
||||
ListElement {
|
||||
name: "Another account - generated"
|
||||
emoji: "🚗"
|
||||
address: "0x7F47C2e98a4BBf5487E6fb082eC2D9Ab0E6d8888"
|
||||
color: "blue"
|
||||
}
|
||||
}
|
||||
|
||||
Item {
|
||||
id: content
|
||||
|
||||
SplitView.fillWidth: true
|
||||
SplitView.fillHeight: true
|
||||
|
||||
PopupBackground {
|
||||
anchors.fill: parent
|
||||
}
|
||||
|
||||
Button {
|
||||
anchors.centerIn: parent
|
||||
text: "Reopen"
|
||||
|
||||
onClicked: dialog.open()
|
||||
}
|
||||
|
||||
TokenMasterActionPopup {
|
||||
id: dialog
|
||||
|
||||
parent: content
|
||||
visible: true
|
||||
closePolicy: Popup.NoAutoClose
|
||||
anchors.centerIn: parent
|
||||
modal: false
|
||||
|
||||
actionType: actionTypesRadioButtonGroup.checkedButton.actionType
|
||||
|
||||
accountsModel: accountsModel
|
||||
communityName: "Doodles"
|
||||
userName: "simon"
|
||||
networkName: "Optimism"
|
||||
|
||||
isFeeLoading: feeLoadingCheckBox.checked
|
||||
feeText: "0.0015 ETH ($75.43)"
|
||||
feeErrorText: feeErrorCheckBox.checked ? "Some fee error" : ""
|
||||
|
||||
onRemotelyDestructClicked: logs.logEvent("onRemotelyDestructClicked")
|
||||
onBanClicked: logs.logEvent("onBanClicked")
|
||||
onKickClicked: logs.logEvent("onKickClicked")
|
||||
}
|
||||
}
|
||||
|
||||
LogsAndControlsPanel {
|
||||
SplitView.minimumHeight: 100
|
||||
SplitView.preferredHeight: 150
|
||||
|
||||
logsView.logText: logs.logText
|
||||
|
||||
ColumnLayout {
|
||||
RowLayout {
|
||||
CheckBox {
|
||||
id: feeLoadingCheckBox
|
||||
|
||||
text: "Loading fee"
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
id: feeErrorCheckBox
|
||||
|
||||
text: "Fee error"
|
||||
}
|
||||
}
|
||||
|
||||
ButtonGroup {
|
||||
id: actionTypesRadioButtonGroup
|
||||
|
||||
buttons: actionTypesRow.children
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
id: actionTypesRow
|
||||
|
||||
RadioButton {
|
||||
id: remotelyDestructRadioButton
|
||||
|
||||
readonly property int actionType:
|
||||
TokenMasterActionPopup.ActionType.RemotelyDestruct
|
||||
|
||||
text: "Remotely destruct"
|
||||
checked: true
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
id: kickRadioButton
|
||||
|
||||
readonly property int actionType:
|
||||
TokenMasterActionPopup.ActionType.Kick
|
||||
|
||||
text: "Kick"
|
||||
}
|
||||
|
||||
RadioButton {
|
||||
id: banRadioButton
|
||||
|
||||
readonly property int actionType:
|
||||
TokenMasterActionPopup.ActionType.Ban
|
||||
|
||||
text: "Ban"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Settings {
|
||||
property alias remotelyDestructRadioButtonChecked: remotelyDestructRadioButton.checked
|
||||
property alias kickRadioButtonChecked: kickRadioButton.checked
|
||||
property alias banRadioButtonChecked: banRadioButton.checked
|
||||
}
|
||||
}
|
||||
|
||||
// category: Popups
|
|
@ -0,0 +1,182 @@
|
|||
import QtQuick 2.15
|
||||
import QtQuick.Controls 2.15
|
||||
import QtQuick.Layouts 1.15
|
||||
import QtQml.Models 2.15
|
||||
|
||||
import StatusQ.Core 0.1
|
||||
import StatusQ.Controls 0.1
|
||||
import StatusQ.Popups.Dialog 0.1
|
||||
import StatusQ.Core.Theme 0.1
|
||||
|
||||
import AppLayouts.Communities.panels 1.0
|
||||
|
||||
import utils 1.0
|
||||
|
||||
|
||||
StatusDialog {
|
||||
id: root
|
||||
|
||||
enum ActionType {
|
||||
RemotelyDestruct, Kick, Ban
|
||||
}
|
||||
|
||||
title: {
|
||||
if (actionType === TokenMasterActionPopup.ActionType.Ban)
|
||||
return qsTr("Ban %1").arg(userName)
|
||||
if (actionType === TokenMasterActionPopup.ActionType.Kick)
|
||||
return qsTr("Kick %1").arg(userName)
|
||||
|
||||
return qsTr("Remotely destruct TokenMaster token")
|
||||
}
|
||||
|
||||
implicitWidth: 600
|
||||
|
||||
property int actionType: TokenMasterActionPopup.ActionType.RemotelyDestruct
|
||||
|
||||
property string communityName
|
||||
property string userName
|
||||
property string networkName
|
||||
|
||||
property string feeText
|
||||
property string feeErrorText
|
||||
property bool isFeeLoading
|
||||
property var accountsModel
|
||||
|
||||
readonly property string feeLabel: qsTr("Remotely destruct 1 TokenMaster token on %1").arg(
|
||||
root.networkName)
|
||||
|
||||
signal remotelyDestructClicked
|
||||
signal kickClicked
|
||||
signal banClicked
|
||||
|
||||
ColumnLayout {
|
||||
anchors.fill: parent
|
||||
spacing: 20
|
||||
|
||||
StatusBaseText {
|
||||
Layout.fillWidth: true
|
||||
text: {
|
||||
if (root.actionType === TokenMasterActionPopup.ActionType.RemotelyDestruct)
|
||||
return qsTr('Continuing will destroy the TokenMaster token held by <span style="font-weight:600;">%1</span> and revoke the permissions they have by virtue of holding this token.')
|
||||
.arg(root.userName)
|
||||
|
||||
if (root.actionType === TokenMasterActionPopup.ActionType.Kick)
|
||||
return qsTr('Are you sure you kick <span style="font-weight:600;">%1</span> from %2? <span style="font-weight:600;">%1</span> is a TokenMaster hodler. In order to kick them you must also remotely destruct their TokenMaster token to revoke the permissions they have by virtue of holding this token.')
|
||||
.arg(root.userName).arg(root.communityName)
|
||||
|
||||
if (root.actionType === TokenMasterActionPopup.ActionType.Ban)
|
||||
return qsTr('Are you sure you ban <span style="font-weight:600;">%1</span> from %2? <span style="font-weight:600;">%1</span> is a TokenMaster hodler. In order to kick them you must also remotely destruct their TokenMaster token to revoke the permissions they have by virtue of holding this token.')
|
||||
.arg(root.userName).arg(root.communityName)
|
||||
}
|
||||
|
||||
textFormat: Text.RichText
|
||||
wrapMode: Text.Wrap
|
||||
lineHeight: 22
|
||||
lineHeightMode: Text.FixedHeight
|
||||
}
|
||||
|
||||
Rectangle {
|
||||
Layout.bottomMargin: 2
|
||||
Layout.preferredHeight: 1
|
||||
Layout.fillWidth: true
|
||||
|
||||
visible: root.actionType
|
||||
!== TokenMasterActionPopup.ActionType.RemotelyDestruct
|
||||
color: Theme.palette.baseColor2
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
visible: root.actionType === TokenMasterActionPopup.ActionType.Ban
|
||||
|
||||
StatusBaseText {
|
||||
Layout.fillWidth: true
|
||||
|
||||
text: qsTr("Delete all messages posted by the user")
|
||||
color: Theme.palette.directColor1
|
||||
font.pixelSize: Theme.primaryTextFontSize
|
||||
}
|
||||
|
||||
StatusSwitch {
|
||||
id: deleteMessagesSwitch
|
||||
|
||||
checked: true
|
||||
verticalPadding: 2
|
||||
}
|
||||
}
|
||||
|
||||
RowLayout {
|
||||
Layout.bottomMargin: 2
|
||||
|
||||
visible: root.actionType
|
||||
!== TokenMasterActionPopup.ActionType.RemotelyDestruct
|
||||
|
||||
StatusBaseText {
|
||||
Layout.fillWidth: true
|
||||
|
||||
text: qsTr("Remotely destruct 1 TokenMaster token")
|
||||
color: Theme.palette.directColor1
|
||||
font.pixelSize: Theme.primaryTextFontSize
|
||||
}
|
||||
|
||||
StatusSwitch {
|
||||
id: remotelyDestructSwitch
|
||||
|
||||
checked: true
|
||||
enabled: false
|
||||
verticalPadding: 2
|
||||
}
|
||||
}
|
||||
|
||||
FeesBox {
|
||||
Layout.fillWidth: true
|
||||
|
||||
implicitWidth: 0
|
||||
|
||||
accountsSelector.model: root.accountsModel
|
||||
accountErrorText: root.feeErrorText
|
||||
|
||||
model: QtObject {
|
||||
id: singleFeeModel
|
||||
|
||||
readonly property string title: root.feeLabel
|
||||
readonly property string feeText: root.isFeeLoading ?
|
||||
"" : root.feeText
|
||||
readonly property bool error: root.feeErrorText !== ""
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
footer: StatusDialogFooter {
|
||||
spacing: Style.current.padding
|
||||
|
||||
rightButtons: ObjectModel {
|
||||
StatusFlatButton {
|
||||
text: qsTr("Cancel")
|
||||
onClicked: close()
|
||||
}
|
||||
StatusButton {
|
||||
enabled: !root.isFeeLoading && root.feeErrorText === ""
|
||||
&& root.feeText !== ""
|
||||
text: {
|
||||
if (root.actionType === TokenMasterActionPopup.ActionType.Ban)
|
||||
return qsTr("Ban %1 and remotely destruct 1 token").arg(root.userName)
|
||||
|
||||
if (root.actionType === TokenMasterActionPopup.ActionType.Kick)
|
||||
return qsTr("Kick %1 and remotely destruct 1 token").arg(root.userName)
|
||||
|
||||
return qsTr("Remotely destruct 1 token")
|
||||
}
|
||||
|
||||
type: StatusBaseButton.Type.Danger
|
||||
onClicked: {
|
||||
if (root.actionType === TokenMasterActionPopup.ActionType.RemotelyDestruct)
|
||||
root.remotelyDestructClicked()
|
||||
else if (root.actionType === TokenMasterActionPopup.ActionType.Ban)
|
||||
root.banClicked()
|
||||
else if (root.actionType === TokenMasterActionPopup.ActionType.Kick)
|
||||
root.kickClicked()
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,7 +1,6 @@
|
|||
AlertPopup 1.0 AlertPopup.qml
|
||||
BurnTokensPopup 1.0 BurnTokensPopup.qml
|
||||
CommunityProfilePopup 1.0 CommunityProfilePopup.qml
|
||||
TokenPermissionsPopup 1.0 TokenPermissionsPopup.qml
|
||||
CreateCategoryPopup 1.0 CreateCategoryPopup.qml
|
||||
CreateChannelPopup 1.0 CreateChannelPopup.qml
|
||||
CreateCommunityPopup 1.0 CreateCommunityPopup.qml
|
||||
|
@ -15,7 +14,9 @@ MembersDropdown 1.0 MembersDropdown.qml
|
|||
PermissionsDropdown 1.0 PermissionsDropdown.qml
|
||||
RecipientTypeSelectionDropdown 1.0 RecipientTypeSelectionDropdown.qml
|
||||
RemotelyDestructPopup 1.0 RemotelyDestructPopup.qml
|
||||
SharedAddressesPopup 1.0 SharedAddressesPopup.qml
|
||||
SignMultiTokenTransactionsPopup 1.0 SignMultiTokenTransactionsPopup.qml
|
||||
SignTokenTransactionsPopup 1.0 SignTokenTransactionsPopup.qml
|
||||
TokenMasterActionPopup 1.0 TokenMasterActionPopup.qml
|
||||
TokenPermissionsPopup 1.0 TokenPermissionsPopup.qml
|
||||
TransferOwnershipPopup 1.0 TransferOwnershipPopup.qml
|
||||
SharedAddressesPopup 1.0 SharedAddressesPopup.qml
|
||||
|
|
Loading…
Reference in New Issue