diff --git a/storybook/pages/CommunityNewPermissionViewPage.qml b/storybook/pages/CommunityNewPermissionViewPage.qml index c5bcb3a135..1357cf75ed 100644 --- a/storybook/pages/CommunityNewPermissionViewPage.qml +++ b/storybook/pages/CommunityNewPermissionViewPage.qml @@ -113,20 +113,10 @@ SplitView { } } - RowLayout { - Layout.fillWidth: true + Button { + text: "Reset changes" - Button { - text: "Save changes" - - onClicked: communityNewPermissionView.saveChanges() - } - - Button { - text: "Reset changes" - - onClicked: communityNewPermissionView.resetChanges() - } + onClicked: communityNewPermissionView.resetChanges() } Label { diff --git a/ui/app/AppLayouts/Chat/panels/communities/CommunityPermissionsSettingsPanel.qml b/ui/app/AppLayouts/Chat/panels/communities/CommunityPermissionsSettingsPanel.qml index fcd0f1d04c..8587b1807c 100644 --- a/ui/app/AppLayouts/Chat/panels/communities/CommunityPermissionsSettingsPanel.qml +++ b/ui/app/AppLayouts/Chat/panels/communities/CommunityPermissionsSettingsPanel.qml @@ -146,33 +146,47 @@ SettingsPageLayout { id: newPermissionView CommunityNewPermissionView { - id: newPermissionViewItem - viewWidth: root.viewWidth + rootStore: root.rootStore store: root.store - onPermissionCreated: root.state = d.permissionsViewState + isEditState: root.state === d.editPermissionViewState - permissionIndex: d.permissionIndexToEdit holdingsModel: d.holdingsToEditModel permissionObject: d.permissionsToEditObject channelsModel: d.channelsToEditModel isPrivate: d.isPrivateToEditValue + onCreatePermissionClicked: { + root.store.createPermission(dirtyValues.holdingsModel, + dirtyValues.permissionObject, + dirtyValues.isPrivate, + dirtyValues.channelsModel) + + root.state = d.permissionsViewState + } + Connections { target: d function onSaveChanges() { - newPermissionViewItem.saveChanges() + root.store.editPermission( + d.permissionIndexToEdit, + dirtyValues.holdingsModel, + dirtyValues.permissionObject, + dirtyValues.channelsModel, + dirtyValues.isPrivate) } function onResetChanges() { - newPermissionViewItem.resetChanges() + resetChanges() } } - Component.onCompleted: { - root.dirty = Qt.binding(() => newPermissionViewItem.isEditState && newPermissionViewItem.dirty) + Binding { + target: root + property: "dirty" + value: isEditState && dirty } } } diff --git a/ui/app/AppLayouts/Chat/stores/CommunitiesStore.qml b/ui/app/AppLayouts/Chat/stores/CommunitiesStore.qml index 79ab670c5c..21512d387a 100644 --- a/ui/app/AppLayouts/Chat/stores/CommunitiesStore.qml +++ b/ui/app/AppLayouts/Chat/stores/CommunitiesStore.qml @@ -162,7 +162,7 @@ QtObject { permission.permissionsObjectModel.text = permissions.text permission.permissionsObjectModel.imageSource = permissions.imageSource - // Setting CHANNELS + // Setting CHANNELS: for (let c = 0; c < channels.count; c++) { const entry = channels.get(c) diff --git a/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml b/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml index fc639e4395..dd88e7039a 100644 --- a/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml +++ b/ui/app/AppLayouts/Chat/views/communities/CommunityNewPermissionView.qml @@ -28,7 +28,8 @@ StatusScrollView { property bool isEditState: false readonly property bool dirty: { - const trick = d.triggerDirtyTool // Trick: Used to force the reevaluation of dirty when an item of the list is updated + // Trick: Used to force the reevaluation of dirty when an item of the list is updated + const trick = d.triggerDirtyTool // Holdings: if (d.checkIfHoldingsDirty()) @@ -55,16 +56,6 @@ StatusScrollView { return dirtyPermissionObj } - function saveChanges() { - d.saveChanges() - } - - function resetChanges() { - d.loadInitValues() - } - - property int permissionIndex - // roles: type, key, name, amount, imageSource property var holdingsModel: ListModel {} @@ -76,7 +67,13 @@ StatusScrollView { property bool isPrivate: false - signal permissionCreated() + readonly property alias dirtyValues: d.dirtyValues + + signal createPermissionClicked + + function resetChanges() { + d.loadInitValues() + } QtObject { id: d @@ -113,11 +110,11 @@ StatusScrollView { // Trick: Used to force the reevaluation of dirty when an item of the list is updated property int triggerDirtyTool: 0 - property QtObject dirtyValues: QtObject { - property ListModel holdingsModel: ListModel {} - property ListModel channelsModel: ListModel {} + readonly property QtObject dirtyValues: QtObject { + readonly property ListModel holdingsModel: ListModel {} + readonly property ListModel channelsModel: ListModel {} - property QtObject permissionObject: QtObject { + readonly property QtObject permissionObject: QtObject { property var key: null property string text: "" property string imageSource: "" @@ -166,16 +163,6 @@ StatusScrollView { return names } - - // TODO: Channels - } - - function saveChanges() { - root.store.editPermission(root.permissionIndex, - d.dirtyValues.holdingsModel, - d.dirtyValues.permissionObject, - d.dirtyValues.channelsModel, - d.dirtyValues.isPrivate) } function loadInitValues() { @@ -693,13 +680,8 @@ StatusScrollView { Layout.preferredHeight: 44 Layout.alignment: Qt.AlignHCenter Layout.fillWidth: true - onClicked: { - root.store.createPermission(d.dirtyValues.holdingsModel, - d.dirtyValues.permissionObject, - d.dirtyValues.isPrivate, - d.dirtyValues.channelsModel) - root.permissionCreated() - } + + onClicked: root.createPermissionClicked() } } }