Retracted moderated message should not be editable.
Also, don't set retracted MUC messages as ephemeral, we want to keep on showing them to provide context in a MUC.
This commit is contained in:
parent
227b70339c
commit
ead8cdbcd6
@ -424,6 +424,7 @@
|
||||
expect(view.model.messages.at(0).get('moderated')).toBe('retracted');
|
||||
expect(view.model.messages.at(0).get('moderation_reason')).toBe(reason);
|
||||
expect(view.model.messages.at(0).get('is_ephemeral')).toBe(false);
|
||||
expect(view.model.messages.at(0).get('editable')).toBe(false);
|
||||
expect(view.el.querySelectorAll('.chat-msg--retracted').length).toBe(1);
|
||||
|
||||
const msg_el = view.el.querySelector('.chat-msg--retracted .chat-msg__message');
|
||||
@ -571,7 +572,7 @@
|
||||
|
||||
const message = view.model.messages.at(0);
|
||||
expect(message.get('retracted')).toBeTruthy();
|
||||
expect(message.get('is_ephemeral')).toBeTruthy();
|
||||
expect(message.get('is_ephemeral')).toBe(false);
|
||||
expect(message.get('editable')).toBeFalsy();
|
||||
|
||||
const stanza_id = message.get(`stanza_id ${muc_jid}`);
|
||||
@ -591,7 +592,7 @@
|
||||
|
||||
expect(view.model.messages.length).toBe(1);
|
||||
expect(view.model.messages.at(0).get('retracted')).toBeTruthy();
|
||||
expect(view.model.messages.at(0).get('is_ephemeral')).toBe(true);
|
||||
expect(view.model.messages.at(0).get('is_ephemeral')).toBe(false);
|
||||
expect(view.model.messages.at(0).get('editable')).toBe(false);
|
||||
expect(view.el.querySelectorAll('.chat-msg--retracted').length).toBe(1);
|
||||
const el = view.el.querySelector('.chat-msg--retracted .chat-msg__message div');
|
||||
@ -640,6 +641,7 @@
|
||||
expect(view.model.messages.length).toBe(1);
|
||||
expect(view.model.messages.at(0).get('retracted')).toBeFalsy();
|
||||
expect(view.model.messages.at(0).get('is_ephemeral')).toBeFalsy();
|
||||
expect(view.model.messages.at(0).get('editable')).toBeTruthy();
|
||||
|
||||
expect(view.el.querySelectorAll('.chat-error').length).toBe(1);
|
||||
const errmsg = view.el.querySelector('.chat-error');
|
||||
@ -675,6 +677,7 @@
|
||||
expect(view.model.messages.length).toBe(1);
|
||||
expect(view.model.messages.at(0).get('retracted')).toBeFalsy();
|
||||
expect(view.model.messages.at(0).get('is_ephemeral')).toBeFalsy();
|
||||
expect(view.model.messages.at(0).get('editable')).toBeTruthy();
|
||||
|
||||
const error_messages = view.el.querySelectorAll('.chat-error');
|
||||
expect(error_messages.length).toBe(2);
|
||||
|
@ -990,7 +990,7 @@ converse.plugins.add('converse-muc-views', {
|
||||
* @param { string } [reason] - The reason for retracting the message.
|
||||
*/
|
||||
async retractOtherMessage (message, reason) {
|
||||
const result = await this.model.sendRetractionIQ(message, reason);
|
||||
const result = await this.model.retractOtherMessage(message, reason);
|
||||
if (result === null) {
|
||||
const err_msg = __(`A timeout occurred while trying to retract the message`);
|
||||
_converse.api.alert('error', __('Error'), err_msg);
|
||||
@ -1000,13 +1000,6 @@ converse.plugins.add('converse-muc-views', {
|
||||
_converse.api.alert('error', __('Error'), err_msg);
|
||||
_converse.log(err_msg, Strophe.LogLevel.WARN);
|
||||
_converse.log(result, Strophe.LogLevel.WARN);
|
||||
} else {
|
||||
message.save({
|
||||
'moderated': 'retracted',
|
||||
'moderated_by': _converse.bare_jid,
|
||||
'moderated_id': message.get('msgid'),
|
||||
'moderation_reason': reason
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -648,26 +648,23 @@ converse.plugins.add('converse-muc', {
|
||||
},
|
||||
|
||||
/**
|
||||
* Retract one of your messages in this chat
|
||||
* Retract one of your messages in this groupchat
|
||||
* @private
|
||||
* @method _converse.ChatRoom#retractOwnMessage
|
||||
* @param { _converse.Message } message - The message which we're retracting.
|
||||
*/
|
||||
async retractOwnMessage(message) {
|
||||
const editable = message.get('editable');
|
||||
const is_ephemeral = message.get('is_ephemeral');
|
||||
// Optimistic save
|
||||
message.save({
|
||||
'retracted': (new Date()).toISOString(),
|
||||
'retracted_id': message.get('origin_id'),
|
||||
'is_ephemeral': true,
|
||||
'editable': false
|
||||
});
|
||||
try {
|
||||
await this.sendRetractionMessage(message)
|
||||
} catch (e) {
|
||||
message.save({
|
||||
is_ephemeral,
|
||||
editable,
|
||||
'retracted': undefined,
|
||||
'retracted_id': undefined,
|
||||
@ -676,6 +673,37 @@ converse.plugins.add('converse-muc', {
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Retract someone else's message in this groupchat.
|
||||
* @private
|
||||
* @method _converse.ChatRoom#retractOtherMessage
|
||||
* @param { _converse.Message } message - The message which we're retracting.
|
||||
* @param { string } [reason] - The reason for retracting the message.
|
||||
*/
|
||||
async retractOtherMessage (message, reason) {
|
||||
const editable = message.get('editable');
|
||||
// Optimistic save
|
||||
message.save({
|
||||
'moderated': 'retracted',
|
||||
'moderated_by': _converse.bare_jid,
|
||||
'moderated_id': message.get('msgid'),
|
||||
'moderation_reason': reason,
|
||||
'editable': false
|
||||
});
|
||||
const result = await this.sendRetractionIQ(message, reason);
|
||||
if (result === null || u.isErrorStanza(result)) {
|
||||
// Undo the save if something went wrong
|
||||
message.save({
|
||||
editable,
|
||||
'moderated': undefined,
|
||||
'moderated_by': undefined,
|
||||
'moderated_id': undefined,
|
||||
'moderation_reason': undefined,
|
||||
});
|
||||
}
|
||||
return result;
|
||||
},
|
||||
|
||||
/**
|
||||
* Sends a message stanza to retract a message in this groupchat.
|
||||
* @private
|
||||
|
Loading…
Reference in New Issue
Block a user