mirror of
https://github.com/status-im/status-desktop.git
synced 2025-02-22 03:28:52 +00:00
feat(CommunityPermissions): Check if form filled completely when
updating Closes: #9388
This commit is contained in:
parent
a97c8a720e
commit
d025f17e2a
@ -64,4 +64,9 @@ QtObject {
|
||||
|
||||
return ""
|
||||
}
|
||||
|
||||
function isCommunityPermission(permissionType) {
|
||||
return permissionType === PermissionTypes.Type.Admin
|
||||
|| permissionType === PermissionTypes.Type.Member
|
||||
}
|
||||
}
|
||||
|
@ -162,6 +162,37 @@ SettingsPageLayout {
|
||||
permissionType: d.permissionTypeToEdit
|
||||
isPrivate: d.isPrivateToEditValue
|
||||
|
||||
duplicationWarningVisible: {
|
||||
// dependencies
|
||||
holdingsTracker.revision
|
||||
channelsTracker.revision
|
||||
communityNewPermissionView.dirtyValues.permissionType
|
||||
communityNewPermissionView.dirtyValues.isPrivate
|
||||
|
||||
const model = root.store.permissionsModel
|
||||
|
||||
for (let i = 0; i < model.count; i++) {
|
||||
if (root.state === d.editPermissionViewState
|
||||
&& d.permissionIndexToEdit === i)
|
||||
continue
|
||||
|
||||
const item = model.get(i)
|
||||
|
||||
const holdings = item.holdingsListModel
|
||||
const channels = item.channelsListModel
|
||||
const permissionType = item.permissionType
|
||||
|
||||
const same = (a, b) => ModelUtils.checkEqualitySet(a, b, ["key"])
|
||||
|
||||
if (same(dirtyValues.holdingsModel, holdings)
|
||||
&& same(dirtyValues.channelsModel, channels)
|
||||
&& dirtyValues.permissionType === permissionType)
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
}
|
||||
|
||||
onCreatePermissionClicked: {
|
||||
root.store.createPermission(dirtyValues.holdingsModel,
|
||||
dirtyValues.permissionType,
|
||||
@ -210,37 +241,7 @@ SettingsPageLayout {
|
||||
target: root
|
||||
property: "saveChangesButtonEnabled"
|
||||
value: !communityNewPermissionView.duplicationWarningVisible
|
||||
}
|
||||
|
||||
duplicationWarningVisible: {
|
||||
// dependencies
|
||||
holdingsTracker.revision
|
||||
channelsTracker.revision
|
||||
communityNewPermissionView.dirtyValues.permissionType
|
||||
communityNewPermissionView.dirtyValues.isPrivate
|
||||
|
||||
const model = root.store.permissionsModel
|
||||
|
||||
for (let i = 0; i < model.count; i++) {
|
||||
if (root.state === d.editPermissionViewState
|
||||
&& d.permissionIndexToEdit === i)
|
||||
continue
|
||||
|
||||
const item = model.get(i)
|
||||
|
||||
const holdings = item.holdingsListModel
|
||||
const channels = item.channelsListModel
|
||||
const permissionType = item.permissionType
|
||||
|
||||
const same = (a, b) => ModelUtils.checkEqualitySet(a, b, ["key"])
|
||||
|
||||
if (same(dirtyValues.holdingsModel, holdings)
|
||||
&& same(dirtyValues.channelsModel, channels)
|
||||
&& dirtyValues.permissionType === permissionType)
|
||||
return true
|
||||
}
|
||||
|
||||
return false
|
||||
&& communityNewPermissionView.isFullyFilled
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -11,8 +11,6 @@ import StatusQ.Core.Utils 0.1
|
||||
import utils 1.0
|
||||
import shared.panels 1.0
|
||||
|
||||
import SortFilterProxyModel 0.2
|
||||
|
||||
import AppLayouts.Chat.helpers 1.0
|
||||
import AppLayouts.Chat.panels.communities 1.0
|
||||
|
||||
@ -33,6 +31,13 @@ StatusScrollView {
|
||||
root.isPrivate !== d.dirtyValues.isPrivate ||
|
||||
root.permissionType !== d.dirtyValues.permissionType
|
||||
|
||||
readonly property alias dirtyValues: d.dirtyValues
|
||||
|
||||
readonly property bool isFullyFilled:
|
||||
dirtyValues.holdingsModel.count > 0 &&
|
||||
dirtyValues.permissionType !== PermissionTypes.Type.None &&
|
||||
(d.isCommunityPermission || dirtyValues.channelsModel.count > 0)
|
||||
|
||||
property int permissionType: PermissionTypes.Type.None
|
||||
property bool isPrivate: false
|
||||
|
||||
@ -42,8 +47,6 @@ StatusScrollView {
|
||||
// roles: itemId, text, emoji, color
|
||||
property var channelsModel: ListModel {}
|
||||
|
||||
readonly property alias dirtyValues: d.dirtyValues
|
||||
|
||||
property alias duplicationWarningVisible: duplicationPanel.visible
|
||||
|
||||
signal createPermissionClicked
|
||||
@ -81,8 +84,7 @@ StatusScrollView {
|
||||
readonly property int dropdownVerticalOffset: 1
|
||||
|
||||
readonly property bool isCommunityPermission:
|
||||
dirtyValues.permissionType === PermissionTypes.Type.Admin ||
|
||||
dirtyValues.permissionType === PermissionTypes.Type.Member
|
||||
PermissionTypes.isCommunityPermission(dirtyValues.permissionType)
|
||||
|
||||
onIsCommunityPermissionChanged: {
|
||||
if (isCommunityPermission) {
|
||||
@ -511,9 +513,10 @@ StatusScrollView {
|
||||
PermissionConflictWarningPanel {
|
||||
id: conflictPanel
|
||||
|
||||
visible: store.permissionConflict.exists
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: 50 // by desing
|
||||
|
||||
visible: store.permissionConflict.exists
|
||||
holdings: store.permissionConflict.holdings
|
||||
permissions: store.permissionConflict.permissions
|
||||
channels: store.permissionConflict.channels
|
||||
@ -522,22 +525,23 @@ StatusScrollView {
|
||||
PermissionDuplicationWarningPanel {
|
||||
id: duplicationPanel
|
||||
|
||||
visible: false
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: 50 // by desing
|
||||
|
||||
visible: false
|
||||
}
|
||||
|
||||
StatusButton {
|
||||
visible: !root.isEditState
|
||||
Layout.topMargin: conflictPanel.visible ? conflictPanel.Layout.topMargin : 24 // by design
|
||||
text: qsTr("Create permission")
|
||||
enabled: d.dirtyValues.holdingsModel.count > 0
|
||||
&& d.dirtyValues.permissionType !== PermissionTypes.Type.None
|
||||
&& (d.dirtyValues.channelsModel.count > 0 || d.isCommunityPermission)
|
||||
&& !root.duplicationWarningVisible
|
||||
Layout.preferredHeight: 44
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
Layout.fillWidth: true
|
||||
Layout.topMargin: conflictPanel.visible
|
||||
? conflictPanel.Layout.topMargin
|
||||
: Style.current.bigPadding
|
||||
|
||||
visible: !root.isEditState
|
||||
text: qsTr("Create permission")
|
||||
enabled: root.isFullyFilled && !root.duplicationWarningVisible
|
||||
|
||||
onClicked: root.createPermissionClicked()
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user