optimize permission lookups
This commit is contained in:
parent
c76d079e03
commit
3cce631aa7
2 changed files with 23 additions and 14 deletions
|
@ -267,14 +267,15 @@ Page {
|
|||
forwardMessagesTimer.start();
|
||||
}
|
||||
function hasSendPrivilege(privilege) {
|
||||
return chatPage.isPrivateChat ||
|
||||
chatGroupInformation &&
|
||||
(
|
||||
(chatGroupInformation.status["@type"] === "chatMemberStatusMember" && chatGroupInformation.status.permissions[privilege])
|
||||
|| chatGroupInformation.status["@type"] === "chatMemberStatusAdministrator"
|
||||
|| chatGroupInformation.status["@type"] === "chatMemberStatusCreator"
|
||||
|| (chatGroupInformation.status["@type"] === "chatMemberStatusRestricted" && chatGroupInformation.status.permissions[privilege])
|
||||
)
|
||||
var groupStatus = chatGroupInformation ? chatGroupInformation.status : null;
|
||||
var groupStatusType = grouptStatus ? groupStatus["@type"] : null;
|
||||
return chatPage.isPrivateChat
|
||||
|| (groupStatusType === "chatMemberStatusMember" && chatInformation.permissions[privilege])
|
||||
|| groupStatusType === "chatMemberStatusAdministrator"
|
||||
|| groupStatusType === "chatMemberStatusCreator"
|
||||
|| (groupStatusType === "chatMemberStatusRestricted" && groupStatus.permissions[privilege])
|
||||
|
||||
|
||||
}
|
||||
|
||||
Timer {
|
||||
|
|
|
@ -73,11 +73,11 @@ Dialog {
|
|||
asynchronous: true
|
||||
sourceComponent: Component {
|
||||
QtObject {
|
||||
property var chatGroupInformation: ({})
|
||||
property bool visible: false
|
||||
Component.onCompleted: {
|
||||
if(chatSelectionPage.state === "forwardMessages") {
|
||||
var chatType = display.type['@type'];
|
||||
var chatGroupInformation;
|
||||
if(chatType === "chatTypePrivate" || chatType === "chatTypeSecret") {
|
||||
visible = true
|
||||
return;
|
||||
|
@ -88,14 +88,22 @@ Dialog {
|
|||
else if (chatType === "chatTypeSupergroup" ) {
|
||||
chatGroupInformation = tdLibWrapper.getSuperGroup(display.type.supergroup_id);
|
||||
}
|
||||
|
||||
visible = (chatGroupInformation.status["@type"] === "chatMemberStatusCreator"
|
||||
|| chatGroupInformation.status["@type"] === "chatMemberStatusAdministrator"
|
||||
|| (chatGroupInformation.status["@type"] === "chatMemberStatusMember"
|
||||
var groupStatus = chatGroupInformation.status;
|
||||
var groupStatusType = groupStatus["@type"];
|
||||
var groupStatusPermissions = groupStatus.permissions;
|
||||
var groupPermissions = display.permissions;
|
||||
visible = (groupStatusType === "chatMemberStatusCreator"
|
||||
|| groupStatusType === "chatMemberStatusAdministrator"
|
||||
|| (groupStatusType === "chatMemberStatusMember"
|
||||
&& chatSelectionPage.payload.neededPermissions.every(function(neededPermission){
|
||||
return display.permissions[neededPermission];
|
||||
return groupPermissions[neededPermission];
|
||||
})
|
||||
)
|
||||
|| (groupStatusType === "chatMemberStatusRestricted"
|
||||
&& chatSelectionPage.payload.neededPermissions.every(function(neededPermission){
|
||||
return groupStatusPermissions[neededPermission];
|
||||
})
|
||||
)
|
||||
);
|
||||
} else { // future uses of chat selection can be processed here
|
||||
visible = true;
|
||||
|
|
Loading…
Reference in a new issue