Delete for Everyone: Don't allow unrestricted deletes in Note to Self
This commit is contained in:
parent
677ab64335
commit
0cc6228ede
4 changed files with 25 additions and 15 deletions
|
@ -727,7 +727,7 @@ export const getPropsForMessage = (
|
|||
payment,
|
||||
canCopy: canCopy(message),
|
||||
canEditMessage: canEditMessage(message),
|
||||
canDeleteForEveryone: canDeleteForEveryone(message),
|
||||
canDeleteForEveryone: canDeleteForEveryone(message, conversation.isMe),
|
||||
canDownload: canDownload(message, conversationSelector),
|
||||
canReact: canReact(message, ourConversationId, conversationSelector),
|
||||
canReply: canReply(message, ourConversationId, conversationSelector),
|
||||
|
@ -1872,26 +1872,31 @@ export function canDeleteForEveryone(
|
|||
message: Pick<
|
||||
MessageWithUIFieldsType,
|
||||
'type' | 'deletedForEveryone' | 'sent_at' | 'sendStateByConversationId'
|
||||
>
|
||||
>,
|
||||
isMe: boolean
|
||||
): boolean {
|
||||
return (
|
||||
// Is this a message I sent?
|
||||
isOutgoing(message) &&
|
||||
// Has the message already been deleted?
|
||||
!message.deletedForEveryone &&
|
||||
// Is it too old to delete?
|
||||
isMoreRecentThan(message.sent_at, DAY) &&
|
||||
// Is it too old to delete? (we relax that requirement in Note to Self)
|
||||
(isMoreRecentThan(message.sent_at, DAY) || isMe) &&
|
||||
// Is it sent to anyone?
|
||||
someSendStatus(message.sendStateByConversationId, isSent)
|
||||
);
|
||||
}
|
||||
|
||||
export const canDeleteMessagesForEveryone = createSelector(
|
||||
[getMessages, (_state, messageIds: ReadonlyArray<string>) => messageIds],
|
||||
(messagesLookup, messageIds) => {
|
||||
return messageIds.every(messageId => {
|
||||
[
|
||||
getMessages,
|
||||
(_state, options: { messageIds: ReadonlyArray<string>; isMe: boolean }) =>
|
||||
options,
|
||||
],
|
||||
(messagesLookup, options) => {
|
||||
return options.messageIds.every(messageId => {
|
||||
const message = getOwn(messagesLookup, messageId);
|
||||
return message != null && canDeleteForEveryone(message);
|
||||
return message != null && canDeleteForEveryone(message, options.isMe);
|
||||
});
|
||||
}
|
||||
);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue