Fix admin pin permissions in groups with admin-only edit settings

This commit is contained in:
yash-signal
2026-02-03 12:24:18 -06:00
committed by GitHub
parent 1f8e2b0d24
commit e40855cc4f
2 changed files with 8 additions and 21 deletions

View File

@@ -168,7 +168,6 @@ import { getCallIdFromEra } from '../../util/callDisposition.preload.js';
import { LONG_MESSAGE } from '../../types/MIME.std.js';
import type { MessageRequestResponseNotificationData } from '../../components/conversation/MessageRequestResponseNotification.dom.js';
import type { PinnedMessageNotificationData } from '../../components/conversation/pinned-messages/PinnedMessageNotification.dom.js';
import { canEditGroupInfo } from '../../util/canEditGroupInfo.preload.js';
import { isPinnedMessagesSendEnabled } from '../../util/isPinnedMessagesEnabled.dom.js';
const { groupBy, isEmpty, isNumber, isObject, map } = lodash;
@@ -2407,7 +2406,9 @@ export function canPinMessages(conversation: ConversationType): boolean {
if (!isPinnedMessagesSendEnabled()) {
return false;
}
return conversation.type === 'direct' || canEditGroupInfo(conversation);
return (
conversation.type === 'direct' || conversation.canEditGroupInfo === true
);
}
export function canPinMessage(

View File

@@ -5,24 +5,9 @@ import type { ConversationAttributesType } from '../model-types.d.ts';
import { SignalService as Proto } from '../protobuf/index.std.js';
import { isGroupV2 } from './whatTypeOfConversation.dom.js';
import { areWeAdmin } from './areWeAdmin.preload.js';
import type { ConversationType } from '../state/ducks/conversations.preload.js';
function getConversationAccessControlAttributes(
conversation: ConversationAttributesType | ConversationType
): number | null {
if ('accessControl' in conversation) {
return conversation.accessControl?.attributes ?? null;
}
if ('accessControlAttributes' in conversation) {
return conversation.accessControlAttributes ?? null;
}
return null;
}
export function canEditGroupInfo(
conversationAttrs: ConversationAttributesType | ConversationType
conversationAttrs: ConversationAttributesType
): boolean {
if (!isGroupV2(conversationAttrs)) {
return false;
@@ -36,7 +21,8 @@ export function canEditGroupInfo(
return true;
}
const accessControlAttributes =
getConversationAccessControlAttributes(conversationAttrs);
return accessControlAttributes === Proto.AccessControl.AccessRequired.MEMBER;
return (
conversationAttrs.accessControl?.attributes ===
Proto.AccessControl.AccessRequired.MEMBER
);
}