Message Context Menu: Fix canPinMessage for channels (#6247)
This commit is contained in:
parent
ab7f66ddce
commit
c2badd4a4b
@ -666,6 +666,7 @@ export function selectAllowedMessageActionsSlow<T extends GlobalState>(
|
|||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const chatFullInfo = selectChatFullInfo(global, message.chatId);
|
||||||
const isPrivate = isUserId(chat.id);
|
const isPrivate = isUserId(chat.id);
|
||||||
const isChatWithSelf = selectIsChatWithSelf(global, message.chatId);
|
const isChatWithSelf = selectIsChatWithSelf(global, message.chatId);
|
||||||
const isBasicGroup = isChatBasicGroup(chat);
|
const isBasicGroup = isChatBasicGroup(chat);
|
||||||
@ -684,18 +685,35 @@ export function selectAllowedMessageActionsSlow<T extends GlobalState>(
|
|||||||
const isBoostMessage = message.content.action?.type === 'boostApply';
|
const isBoostMessage = message.content.action?.type === 'boostApply';
|
||||||
const isMonoforum = chat.isMonoforum;
|
const isMonoforum = chat.isMonoforum;
|
||||||
|
|
||||||
const hasChatPinPermission = (chat.isCreator
|
// https://github.com/telegramdesktop/tdesktop/blob/6627de646022af1394134974477109cd1439e1bb/Telegram/SourceFiles/data/data_peer_values.cpp#L367C2-L372C3
|
||||||
|| (!isChannel && !isUserRightBanned(chat, 'pinMessages'))
|
const canPinMessage = (() => {
|
||||||
|| getHasAdminRight(chat, 'pinMessages'));
|
if (isPrivate || chat.isCreator) return true;
|
||||||
|
|
||||||
const hasPinPermission = isPrivate || hasChatPinPermission;
|
if (isChannel) {
|
||||||
|
return getHasAdminRight(chat, 'editMessages');
|
||||||
|
}
|
||||||
|
|
||||||
|
const hasPinMessageRight = getHasAdminRight(chat, 'pinMessages');
|
||||||
|
const isPinMessageRightBanned = isUserRightBanned(chat, 'pinMessages', chatFullInfo);
|
||||||
|
|
||||||
|
if (isSuperGroup) {
|
||||||
|
const hasUsernameOrGeo = chat.hasUsername || chat.hasGeo;
|
||||||
|
return (hasPinMessageRight || !hasUsernameOrGeo) && !isPinMessageRightBanned;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isBasicGroup) {
|
||||||
|
return !chat.isForbidden && !chat.isNotJoined && hasPinMessageRight && !isPinMessageRightBanned;
|
||||||
|
}
|
||||||
|
|
||||||
|
return hasPinMessageRight;
|
||||||
|
})();
|
||||||
|
|
||||||
// https://github.com/telegramdesktop/tdesktop/blob/335095a332607c41a8d20b47e61f5bbd66366d4b/Telegram/SourceFiles/data/data_peer.cpp#L653
|
// https://github.com/telegramdesktop/tdesktop/blob/335095a332607c41a8d20b47e61f5bbd66366d4b/Telegram/SourceFiles/data/data_peer.cpp#L653
|
||||||
const canEditMessagesIndefinitely = (() => {
|
const canEditMessagesIndefinitely = (() => {
|
||||||
if (content.todo) return true;
|
if (content.todo) return true;
|
||||||
if (isPrivate) return isChatWithSelf;
|
if (isPrivate) return isChatWithSelf;
|
||||||
if (isBasicGroup) return false;
|
if (isBasicGroup) return false;
|
||||||
if (isSuperGroup) return hasChatPinPermission;
|
if (isSuperGroup) return canPinMessage;
|
||||||
if (isChannel) return chat.isCreator || getHasAdminRight(chat, 'editMessages');
|
if (isChannel) return chat.isCreator || getHasAdminRight(chat, 'editMessages');
|
||||||
return false;
|
return false;
|
||||||
})();
|
})();
|
||||||
@ -720,7 +738,7 @@ export function selectAllowedMessageActionsSlow<T extends GlobalState>(
|
|||||||
const canReplyGlobally = canReply || (!isSavedDialog && !isLocal && !isServiceNotification
|
const canReplyGlobally = canReply || (!isSavedDialog && !isLocal && !isServiceNotification
|
||||||
&& (isSuperGroup || isBasicGroup || isChatChannel(chat)));
|
&& (isSuperGroup || isBasicGroup || isChatChannel(chat)));
|
||||||
|
|
||||||
let canPin = !isLocal && !isServiceNotification && !isAction && hasPinPermission && !isSavedDialog;
|
let canPin = !isLocal && !isServiceNotification && !isAction && canPinMessage && !isSavedDialog;
|
||||||
let canUnpin = false;
|
let canUnpin = false;
|
||||||
|
|
||||||
const pinnedMessageIds = selectPinnedIds(global, chat.id, threadId);
|
const pinnedMessageIds = selectPinnedIds(global, chat.id, threadId);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user