chore(CommunityNewPermissionView): Simplify dirty values handling, extend Storybook page

This commit is contained in:
Michał Cieślak 2023-02-08 13:39:47 +01:00 committed by Michał
parent 411c2a0aab
commit 9a0c682ca4
2 changed files with 78 additions and 23 deletions

View File

@ -1,5 +1,6 @@
import QtQuick 2.14
import QtQuick.Controls 2.14
import QtQuick.Layouts 1.14
import AppLayouts.Chat.views.communities 1.0
import AppLayouts.Chat.stores 1.0
@ -16,7 +17,16 @@ SplitView {
Pane {
id: root
SplitView.fillWidth: true
SplitView.fillHeight: true
CommunityNewPermissionView {
id: communityNewPermissionView
anchors.fill: parent
isEditState: isEditStateCheckBox.checked
isPrivate: isPrivateCheckBox.checked
store: CommunitiesStore {
readonly property var assetsModel: AssetsModel {}
@ -32,6 +42,10 @@ SplitView {
readonly property bool isOwner: isOwnerCheckBox.checked
function createPermission(holdings, permissions, isPrivate, channels) {
logs.logEvent("CommunitiesStore::creatPermission")
}
function editPermission(index, holdings, permissions, channels, isPrivate) {
logs.logEvent("CommunitiesStore::editPermission - index: " + index)
}
@ -66,14 +80,58 @@ SplitView {
id: logsAndControlsPanel
SplitView.minimumHeight: 100
SplitView.preferredHeight: 150
SplitView.preferredHeight: 160
logsView.logText: logs.logText
CheckBox {
id: isOwnerCheckBox
text: "Is owner"
ColumnLayout {
anchors.top: parent.top
anchors.left: parent.left
anchors.right: parent.right
RowLayout {
Layout.fillWidth: true
CheckBox {
id: isOwnerCheckBox
text: "Is owner"
}
CheckBox {
id: isEditStateCheckBox
text: "Is edit state"
}
CheckBox {
id: isPrivateCheckBox
text: "Is private"
}
}
RowLayout {
Layout.fillWidth: true
Button {
text: "Save changes"
onClicked: communityNewPermissionView.saveChanges()
}
Button {
text: "Reset changes"
onClicked: communityNewPermissionView.resetChanges()
}
}
Label {
text: "Is dirty: " + communityNewPermissionView.dirty
}
}
}
}

View File

@ -38,6 +38,10 @@ StatusScrollView {
if (d.checkIfInDirty())
return true
// Is private
if (root.isPrivate !== d.dirtyValues.isPrivate)
return true
// Permissions:
let dirtyPermissionObj = false
if(root.permissionObject && d.dirtyValues.permissionObject.key !== null) {
@ -48,8 +52,7 @@ StatusScrollView {
dirtyPermissionObj = d.dirtyValues.permissionObject.key !== null
}
return dirtyPermissionObj || d.dirtyValues.isPrivateDirty
return dirtyPermissionObj
}
function saveChanges() {
@ -71,7 +74,7 @@ StatusScrollView {
// roles: itemId, text, emoji, color
property var channelsModel: ListModel {}
property bool isPrivate
property bool isPrivate: false
signal permissionCreated()
@ -90,15 +93,9 @@ StatusScrollView {
permissionType === PermissionTypes.Type.Member
onPermissionTypeChanged: {
if (permissionType === PermissionTypes.Type.Admin) {
d.dirtyValues.isPrivateDirty = (root.isPrivate === false)
} else {
if (permissionType === PermissionTypes.Type.Moderator) {
d.dirtyValues.isPrivateDirty = (root.isPrivate === false)
} else {
d.dirtyValues.isPrivateDirty = (root.isPrivate === true)
}
}
d.dirtyValues.isPrivate =
(permissionType === PermissionTypes.Type.Admin) ||
(permissionType === PermissionTypes.Type.Moderator)
}
onIsCommunityPermissionChanged: {
@ -125,7 +122,8 @@ StatusScrollView {
property string text: ""
property string imageSource: ""
}
property bool isPrivateDirty: false
property bool isPrivate: false
function getIndexOfKey(key) {
const count = holdingsModel.count
@ -173,12 +171,11 @@ StatusScrollView {
}
function saveChanges() {
root.store.editPermission(root.permissionIndex,
d.dirtyValues.holdingsModel,
d.dirtyValues.permissionObject,
d.dirtyValues.channelsModel,
d.dirtyValues.isPrivateDirty ? !root.isPrivate : root.isPrivate)
d.dirtyValues.isPrivate)
}
function loadInitValues() {
@ -239,7 +236,7 @@ StatusScrollView {
}
// Is private permission
d.dirtyValues.isPrivateDirty = false
d.dirtyValues.isPrivate = root.isPrivate
}
function checkIfHoldingsDirty() {
@ -693,8 +690,8 @@ StatusScrollView {
}
StatusSwitch {
enabled: d.permissionType !== PermissionTypes.Type.Admin
checked: d.dirtyValues.isPrivateDirty ? !root.isPrivate : root.isPrivate
onToggled: d.dirtyValues.isPrivateDirty = (root.isPrivate !== checked)
checked: d.dirtyValues.isPrivate
onToggled: d.dirtyValues.isPrivate = checked
}
}
@ -722,7 +719,7 @@ StatusScrollView {
onClicked: {
root.store.createPermission(d.dirtyValues.holdingsModel,
d.dirtyValues.permissionObject,
d.dirtyValues.isPrivateDirty ? !root.isPrivate : root.isPrivate,
d.dirtyValues.isPrivate,
d.dirtyValues.channelsModel)
root.permissionCreated()
}