Message deletion moderator check and toast.

pull/689/head
Vincent 6 years ago
parent fc235d6057
commit 2bdc0579c3

@ -1017,6 +1017,11 @@
"message": "message":
"Are you sure? Clicking 'delete' will permanently remove these messages from this device only." "Are you sure? Clicking 'delete' will permanently remove these messages from this device only."
}, },
"messageDeletionForbidden": {
"message": "You don't have permission to delete others' messages.",
"description":
"Toast message explaining that the user doens't have the rights to delete other people's messages."
},
"deleteThisMessage": { "deleteThisMessage": {
"message": "Delete this message" "message": "Delete this message"
}, },

@ -69,6 +69,12 @@
}, },
}); });
Whisper.MessageDeletionForbiddenToast = Whisper.ToastView.extend({
render_attributes() {
return { toastMessage: i18n('messageDeletionForbidden') };
},
});
const MAX_MESSAGE_BODY_LENGTH = 64 * 1024; const MAX_MESSAGE_BODY_LENGTH = 64 * 1024;
Whisper.MessageBodyTooLongToast = Whisper.ToastView.extend({ Whisper.MessageBodyTooLongToast = Whisper.ToastView.extend({
render_attributes() { render_attributes() {
@ -1397,9 +1403,23 @@
}, },
deleteSelectedMessages() { deleteSelectedMessages() {
const msgArray = Array.from(this.model.selectedMessages); const selected = Array.from(this.model.selectedMessages);
const isModerator = this.model.isModerator(this.model.OUR_NUMBER);
let isAllOurs = true;
// eslint-disable-next-line no-restricted-syntax
for (const message of selected) {
isAllOurs = message.attributes.source === message.OUR_NUMBER;
if (!isAllOurs && !isModerator) {
const toast = new Whisper.MessageDeletionForbiddenToast();
toast.$el.appendTo(this.$el);
toast.render();
return;
}
}
this.deleteMessages(msgArray, () => { this.deleteMessages(selected, () => {
this.resetMessageSelection(); this.resetMessageSelection();
}); });
}, },

@ -11,7 +11,7 @@ export class SessionIconButton extends React.PureComponent<SProps> {
public static readonly extendedDefaults = { public static readonly extendedDefaults = {
onClick: () => null, onClick: () => null,
}; };
public static readonlydefaultProps = { public static readonly defaultProps = {
...SessionIcon.defaultProps, ...SessionIcon.defaultProps,
...SessionIconButton.extendedDefaults, ...SessionIconButton.extendedDefaults,
}; };

Loading…
Cancel
Save