parent
34dba08b7a
commit
15701e91aa
|
@ -133,3 +133,6 @@ method onUpdateViewOnlyPermissionsSatisfied*(self: AccessInterface, value: bool)
|
|||
|
||||
method onUpdateViewAndPostPermissionsSatisfied*(self: AccessInterface, value: bool) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method setPermissionsCheckOngoing*(self: AccessInterface, value: bool) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
|
|
@ -407,3 +407,6 @@ method onUpdateViewOnlyPermissionsSatisfied*(self: Module, value: bool) =
|
|||
|
||||
method onUpdateViewAndPostPermissionsSatisfied*(self: Module, value: bool) =
|
||||
self.view.setViewAndPostPermissionsSatisfied(value)
|
||||
|
||||
method setPermissionsCheckOngoing*(self: Module, value: bool) =
|
||||
self.view.setPermissionsCheckOngoing(value)
|
||||
|
|
|
@ -15,6 +15,7 @@ QtObject:
|
|||
chatDetailsVariant: QVariant
|
||||
viewOnlyPermissionsSatisfied: bool
|
||||
viewAndPostPermissionsSatisfied: bool
|
||||
permissionsCheckOngoing: bool
|
||||
|
||||
proc chatDetailsChanged*(self:View) {.signal.}
|
||||
|
||||
|
@ -179,3 +180,17 @@ QtObject:
|
|||
read = getViewAndPostPermissionsSatisfied
|
||||
notify = viewAndPostPermissionsSatisfiedChanged
|
||||
|
||||
proc getPermissionsCheckOngoing*(self: View): bool {.slot.} =
|
||||
return self.permissionsCheckOngoing
|
||||
|
||||
proc permissionsCheckOngoingChanged*(self: View) {.signal.}
|
||||
|
||||
QtProperty[bool] permissionsCheckOngoing:
|
||||
read = getPermissionsCheckOngoing
|
||||
notify = permissionsCheckOngoingChanged
|
||||
|
||||
proc setPermissionsCheckOngoing*(self: View, value: bool) =
|
||||
if (value == self.permissionsCheckOngoing):
|
||||
return
|
||||
self.permissionsCheckOngoing = value
|
||||
self.permissionsCheckOngoingChanged()
|
||||
|
|
|
@ -85,9 +85,11 @@ proc getMySectionId*(self: Controller): string =
|
|||
|
||||
proc asyncCheckPermissionsToJoin*(self: Controller) =
|
||||
self.communityService.asyncCheckPermissionsToJoin(self.getMySectionId())
|
||||
self.delegate.setPermissionsToJoinCheckOngoing(true)
|
||||
|
||||
proc asyncCheckAllChannelsPermissions*(self: Controller) =
|
||||
self.chatService.asyncCheckAllChannelsPermissions(self.getMySectionId())
|
||||
self.delegate.setChannelsPermissionsCheckOngoing(true)
|
||||
|
||||
proc asyncCheckChannelPermissions*(self: Controller, communityId: string, chatId: string) =
|
||||
self.chatService.asyncCheckChannelPermissions(communityId, chatId)
|
||||
|
|
|
@ -393,3 +393,9 @@ method onCommunityCheckChannelPermissionsResponse*(self: AccessInterface, chatId
|
|||
|
||||
method onCommunityCheckAllChannelsPermissionsResponse*(self: AccessInterface, checkAllChannelsPermissionsResponse: CheckAllChannelsPermissionsResponseDto) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method setPermissionsToJoinCheckOngoing*(self: AccessInterface, value: bool) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
||||
method setChannelsPermissionsCheckOngoing*(self: AccessInterface, value: bool) {.base.} =
|
||||
raise newException(ValueError, "No implementation available")
|
||||
|
|
|
@ -298,6 +298,13 @@ QtObject:
|
|||
let modelIndex = self.createIndex(index, 0, nil)
|
||||
self.dataChanged(modelIndex, modelIndex, @[ModelRole.RequiresPermissions.int])
|
||||
|
||||
proc getItemPermissionsRequired*(self: Model, id: string): bool =
|
||||
let index = self.getItemIdxById(id)
|
||||
if index == -1:
|
||||
return false
|
||||
|
||||
return self.items[index].requiresPermissions
|
||||
|
||||
proc changeMutedOnItemById*(self: Model, id: string, muted: bool) =
|
||||
let index = self.getItemIdxById(id)
|
||||
if index == -1:
|
||||
|
|
|
@ -843,11 +843,13 @@ proc updateChannelPermissionViewData*(self: Module, chatId: string, viewOnlyPerm
|
|||
if self.chatContentModules.hasKey(chatId):
|
||||
self.chatContentModules[chatId].onUpdateViewOnlyPermissionsSatisfied(viewOnlyPermissions.satisfied)
|
||||
self.chatContentModules[chatId].onUpdateViewAndPostPermissionsSatisfied(viewAndPostPermissions.satisfied)
|
||||
self.chatContentModules[chatId].setPermissionsCheckOngoing(false)
|
||||
|
||||
method onCommunityCheckPermissionsToJoinResponse*(self: Module, checkPermissionsToJoinResponse: CheckPermissionsToJoinResponseDto) =
|
||||
let community = self.controller.getMyCommunity()
|
||||
self.view.setAllTokenRequirementsMet(checkPermissionsToJoinResponse.satisfied)
|
||||
self.updateTokenPermissionModel(checkPermissionsToJoinResponse.permissions, community)
|
||||
self.setPermissionsToJoinCheckOngoing(false)
|
||||
|
||||
method onCommunityTokenPermissionUpdated*(self: Module, communityId: string, tokenPermission: CommunityTokenPermissionDto) =
|
||||
let chats = self.controller.getChatDetailsByIds(tokenPermission.chatIDs)
|
||||
|
@ -1317,3 +1319,11 @@ method setCommunityMetrics*(self: Module, metrics: CommunityMetricsDto) =
|
|||
|
||||
method collectCommunityMetricsMessagesCount*(self: Module, intervals: string) =
|
||||
self.controller.collectCommunityMetricsMessagesCount(intervals)
|
||||
|
||||
method setPermissionsToJoinCheckOngoing*(self: Module, value: bool) =
|
||||
self.view.setPermissionsCheckOngoing(value)
|
||||
|
||||
method setChannelsPermissionsCheckOngoing*(self: Module, value: bool) =
|
||||
for chatId, cModule in self.chatContentModules:
|
||||
if self.view.chatsModel().getItemPermissionsRequired(chatId):
|
||||
cModule.setPermissionsCheckOngoing(true)
|
||||
|
|
|
@ -28,7 +28,7 @@ QtObject:
|
|||
amIMember: bool
|
||||
chatsLoaded: bool
|
||||
communityMetrics: string # NOTE: later this should be replaced with QAbstractListModel-based model
|
||||
|
||||
permissionsCheckOngoing: bool
|
||||
|
||||
proc delete*(self: View) =
|
||||
self.model.delete
|
||||
|
@ -431,3 +431,18 @@ QtObject:
|
|||
|
||||
proc collectCommunityMetricsMessagesCount*(self: View, intervals: string) {.slot.} =
|
||||
self.delegate.collectCommunityMetricsMessagesCount(intervals)
|
||||
|
||||
proc getPermissionsCheckOngoing*(self: View): bool {.slot.} =
|
||||
return self.permissionsCheckOngoing
|
||||
|
||||
proc permissionsCheckOngoingChanged*(self: View) {.signal.}
|
||||
|
||||
QtProperty[bool] permissionsCheckOngoing:
|
||||
read = getPermissionsCheckOngoing
|
||||
notify = permissionsCheckOngoingChanged
|
||||
|
||||
proc setPermissionsCheckOngoing*(self: View, value: bool) =
|
||||
if (value == self.permissionsCheckOngoing):
|
||||
return
|
||||
self.permissionsCheckOngoing = value
|
||||
self.permissionsCheckOngoingChanged()
|
||||
|
|
|
@ -13,6 +13,7 @@ ColumnLayout {
|
|||
property string channelName: "#vip"
|
||||
property bool joinCommunity: true // Otherwise, enter channel
|
||||
property bool requirementsMet: true
|
||||
property bool requirementsCheckPending: false
|
||||
property bool isInvitationPending: false
|
||||
property bool isJoinRequestRejected: false
|
||||
property bool requiresRequest: false
|
||||
|
@ -55,6 +56,19 @@ ColumnLayout {
|
|||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
visible: !isOnlyChannelPanelEditor
|
||||
Label {
|
||||
Layout.fillWidth: true
|
||||
text: "Requirements check pending:"
|
||||
}
|
||||
|
||||
CheckBox {
|
||||
checked: root.requirementsCheckPending
|
||||
onCheckedChanged: root.requirementsCheckPending = checked
|
||||
}
|
||||
}
|
||||
|
||||
ColumnLayout {
|
||||
visible: !isOnlyChannelPanelEditor
|
||||
Label {
|
||||
|
|
|
@ -21,6 +21,7 @@ SplitView {
|
|||
property string channelName: "vip"
|
||||
property bool joinCommunity: true // Otherwise, enter channel
|
||||
property bool requirementsMet: true
|
||||
property bool requirementsCheckPending: false
|
||||
property bool isInvitationPending: false
|
||||
property bool isJoinRequestRejected: false
|
||||
property bool requiresRequest: false
|
||||
|
@ -74,6 +75,7 @@ SplitView {
|
|||
anchors.centerIn: parent
|
||||
joinCommunity: d.joinCommunity
|
||||
requirementsMet: d.requirementsMet
|
||||
requirementsCheckPending: d.requirementsCheckPending
|
||||
isInvitationPending: d.isInvitationPending
|
||||
isJoinRequestRejected: d.isJoinRequestRejected
|
||||
requiresRequest: d.requiresRequest
|
||||
|
@ -151,6 +153,7 @@ SplitView {
|
|||
channelName: d.chanelName
|
||||
joinCommunity: d.joinCommunity
|
||||
requirementsMet: d.requirementsMet
|
||||
requirementsCheckPending: d.requirementsCheckPending
|
||||
isInvitationPending: d.isInvitationPending
|
||||
isJoinRequestRejected: d.isJoinRequestRejected
|
||||
requiresRequest: d.requiresRequest
|
||||
|
@ -158,6 +161,7 @@ SplitView {
|
|||
onChannelNameChanged: d.channelName = channelName
|
||||
onJoinCommunityChanged: d.joinCommunity = joinCommunity
|
||||
onRequirementsMetChanged: d.requirementsMet = requirementsMet
|
||||
onRequirementsCheckPendingChanged: d.requirementsCheckPending = requirementsCheckPending
|
||||
onIsInvitationPendingChanged: d.isInvitationPending = isInvitationPending
|
||||
onIsJoinRequestRejectedChanged: d.isJoinRequestRejected = isJoinRequestRejected
|
||||
onRequiresRequestChanged: d.requiresRequest = requiresRequest
|
||||
|
|
|
@ -58,6 +58,7 @@ StackLayout {
|
|||
communityData.memberRole === Constants.memberRole.admin
|
||||
communityItemsModel: root.rootStore.communityItemsModel
|
||||
requirementsMet: root.permissionsStore.allTokenRequirementsMet
|
||||
requirementsCheckPending: root.rootStore.permissionsCheckOngoing
|
||||
requiresRequest: !communityData.amIMember
|
||||
communityHoldingsModel: root.permissionsStore.becomeMemberPermissionsModel
|
||||
viewOnlyHoldingsModel: root.permissionsStore.viewOnlyPermissionsModel
|
||||
|
|
|
@ -77,6 +77,8 @@ QtObject {
|
|||
|
||||
property var advancedModule: profileSectionModule.advancedModule
|
||||
|
||||
readonly property bool permissionsCheckOngoing: chatCommunitySectionModule.permissionsCheckOngoing
|
||||
|
||||
signal importingCommunityStateChanged(string communityId, int state, string errorMsg)
|
||||
|
||||
signal communityAdded(string communityId)
|
||||
|
|
|
@ -204,6 +204,7 @@ StatusSectionLayout {
|
|||
requiresRequest: !root.amIMember
|
||||
requirementsMet: (viewOnlyPermissionsSatisfied && viewOnlyPermissionsModel.count > 0) ||
|
||||
(viewAndPostPermissionsSatisfied && viewAndPostPermissionsModel.count > 0)
|
||||
requirementsCheckPending: root.chatContentModule.permissionsCheckOngoing
|
||||
onRevealAddressClicked: root.revealAddressClicked()
|
||||
onInvitationPendingClicked: root.invitationPendingClicked()
|
||||
}
|
||||
|
|
|
@ -22,6 +22,7 @@ ColumnLayout {
|
|||
property alias loginType: overlayPanel.loginType
|
||||
|
||||
property bool requirementsMet: true
|
||||
property bool requirementsCheckPending: false
|
||||
|
||||
property var communityHoldingsModel
|
||||
property var viewOnlyHoldingsModel
|
||||
|
@ -140,6 +141,7 @@ ColumnLayout {
|
|||
topPadding: 2 * bottomPadding
|
||||
joinCommunity: root.joinCommunity
|
||||
requirementsMet: root.requirementsMet
|
||||
requirementsCheckPending: root.requirementsCheckPending
|
||||
isInvitationPending: root.isInvitationPending
|
||||
isJoinRequestRejected: root.isJoinRequestRejected
|
||||
requiresRequest: root.requiresRequest
|
||||
|
|
|
@ -19,6 +19,7 @@ Control {
|
|||
|
||||
property bool joinCommunity: true // Otherwise it means join channel action
|
||||
property bool requirementsMet: false
|
||||
property bool requirementsCheckPending: false
|
||||
property bool requiresRequest: false
|
||||
property bool isInvitationPending: false
|
||||
property bool isJoinRequestRejected: false
|
||||
|
@ -162,10 +163,30 @@ Control {
|
|||
|
||||
StatusBaseText {
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
visible: !root.showOnlyPanels && (root.isJoinRequestRejected || !root.requirementsMet)
|
||||
visible: !root.showOnlyPanels && !root.requirementsCheckPending && (root.isJoinRequestRejected || !root.requirementsMet)
|
||||
text: root.isJoinRequestRejected ? d.memberchipRequestRejectedText :
|
||||
(root.joinCommunity ? d.communityRequirementsNotMetText : d.channelRequirementsNotMetText)
|
||||
color: Theme.palette.dangerColor1
|
||||
}
|
||||
|
||||
StatusBaseText {
|
||||
id: requirementsCheckPendingText
|
||||
|
||||
Layout.alignment: Qt.AlignHCenter
|
||||
visible: root.requirementsCheckPending
|
||||
|
||||
text: qsTr("Requirements check pending...")
|
||||
|
||||
color: Theme.palette.dangerColor1
|
||||
|
||||
SequentialAnimation {
|
||||
id: blinkingAnimation
|
||||
|
||||
loops: Animation.Infinite
|
||||
running: requirementsCheckPendingText.visible
|
||||
NumberAnimation { target: requirementsCheckPendingText; property: "opacity"; to: 0; duration: 1500;}
|
||||
NumberAnimation { target: requirementsCheckPendingText; property: "opacity"; to: 1; duration: 1500;}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -34,6 +34,7 @@ StatusSectionLayout {
|
|||
|
||||
// Permission overlay view properties:
|
||||
property bool requirementsMet: true
|
||||
property bool requirementsCheckPending: false
|
||||
property bool isJoinRequestRejected: false
|
||||
property bool requiresRequest: false
|
||||
property alias loginType: joinCommunityCenterPanel.loginType
|
||||
|
@ -132,6 +133,7 @@ StatusSectionLayout {
|
|||
isJoinRequestRejected: root.isJoinRequestRejected
|
||||
requiresRequest: root.requiresRequest
|
||||
requirementsMet: root.requirementsMet
|
||||
requirementsCheckPending: root.requirementsCheckPending
|
||||
|
||||
communityHoldingsModel: root.communityHoldingsModel
|
||||
viewOnlyHoldingsModel: root.viewOnlyHoldingsModel
|
||||
|
|
Loading…
Reference in New Issue