diff --git a/ui/app/AppLayouts/Chat/ChatLayout.qml b/ui/app/AppLayouts/Chat/ChatLayout.qml index 6b2d353fbe..ecf77695a3 100644 --- a/ui/app/AppLayouts/Chat/ChatLayout.qml +++ b/ui/app/AppLayouts/Chat/ChatLayout.qml @@ -155,6 +155,44 @@ StackLayout { root.sectionItemModel.memberRole === Constants.memberRole.admin || root.sectionItemModel.memberRole === Constants.memberRole.tokenMaster hasViewOnlyPermissions: root.permissionsStore.viewOnlyPermissionsModel.count > 0 + + hasUnrestrictedViewOnlyPermission: { + viewOnlyUnrestrictedPermissionHelper.revision + + const model = root.permissionsStore.viewOnlyPermissionsModel + const count = model.rowCount() + + for (let i = 0; i < count; i++) { + const holdings = ModelUtils.get(model, i, "holdingsListModel") + + if (holdings.rowCount() === 0) + return true + } + + return false + } + + Instantiator { + id: viewOnlyUnrestrictedPermissionHelper + + model: root.permissionsStore.viewOnlyPermissionsModel + + property int revision: 0 + + delegate: QObject { + ModelChangeTracker { + model: model.holdingsListModel + + onRevisionChanged: viewOnlyUnrestrictedPermissionHelper.revision++ + } + } + } + + ModelChangeTracker { + model: root.permissionsStore.viewOnlyPermissionsModel + onRevisionChanged: viewOnlyUnrestrictedPermissionHelper.revision++ + } + hasViewAndPostPermissions: root.permissionsStore.viewAndPostPermissionsModel.count > 0 viewOnlyPermissionsModel: root.permissionsStore.viewOnlyPermissionsModel viewAndPostPermissionsModel: root.permissionsStore.viewAndPostPermissionsModel diff --git a/ui/app/AppLayouts/Chat/views/ChatView.qml b/ui/app/AppLayouts/Chat/views/ChatView.qml index 75b4eaa414..ca41bad928 100644 --- a/ui/app/AppLayouts/Chat/views/ChatView.qml +++ b/ui/app/AppLayouts/Chat/views/ChatView.qml @@ -51,7 +51,10 @@ StatusSectionLayout { readonly property var chatContentModule: rootStore.currentChatContentModule() || null readonly property bool viewOnlyPermissionsSatisfied: chatContentModule.viewOnlyPermissionsSatisfied readonly property bool viewAndPostPermissionsSatisfied: chatContentModule.viewAndPostPermissionsSatisfied + property bool hasViewOnlyPermissions: false + property bool hasUnrestrictedViewOnlyPermission: false + property bool hasViewAndPostPermissions: false property bool amIMember: false property bool amISectionAdmin: false @@ -92,6 +95,9 @@ StatusSectionLayout { return false } if (!amIMember) { + if (hasUnrestrictedViewOnlyPermission) + return false + return hasViewAndPostPermissions || hasViewOnlyPermissions } if (amISectionAdmin) {