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('moderated')).toBe('retracted');
|
||||||
expect(view.model.messages.at(0).get('moderation_reason')).toBe(reason);
|
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('is_ephemeral')).toBe(false);
|
||||||
|
expect(view.model.messages.at(0).get('editable')).toBe(false);
|
||||||
expect(view.el.querySelectorAll('.chat-msg--retracted').length).toBe(1);
|
expect(view.el.querySelectorAll('.chat-msg--retracted').length).toBe(1);
|
||||||
|
|
||||||
const msg_el = view.el.querySelector('.chat-msg--retracted .chat-msg__message');
|
const msg_el = view.el.querySelector('.chat-msg--retracted .chat-msg__message');
|
||||||
@ -571,7 +572,7 @@
|
|||||||
|
|
||||||
const message = view.model.messages.at(0);
|
const message = view.model.messages.at(0);
|
||||||
expect(message.get('retracted')).toBeTruthy();
|
expect(message.get('retracted')).toBeTruthy();
|
||||||
expect(message.get('is_ephemeral')).toBeTruthy();
|
expect(message.get('is_ephemeral')).toBe(false);
|
||||||
expect(message.get('editable')).toBeFalsy();
|
expect(message.get('editable')).toBeFalsy();
|
||||||
|
|
||||||
const stanza_id = message.get(`stanza_id ${muc_jid}`);
|
const stanza_id = message.get(`stanza_id ${muc_jid}`);
|
||||||
@ -591,7 +592,7 @@
|
|||||||
|
|
||||||
expect(view.model.messages.length).toBe(1);
|
expect(view.model.messages.length).toBe(1);
|
||||||
expect(view.model.messages.at(0).get('retracted')).toBeTruthy();
|
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.model.messages.at(0).get('editable')).toBe(false);
|
||||||
expect(view.el.querySelectorAll('.chat-msg--retracted').length).toBe(1);
|
expect(view.el.querySelectorAll('.chat-msg--retracted').length).toBe(1);
|
||||||
const el = view.el.querySelector('.chat-msg--retracted .chat-msg__message div');
|
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.length).toBe(1);
|
||||||
expect(view.model.messages.at(0).get('retracted')).toBeFalsy();
|
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('is_ephemeral')).toBeFalsy();
|
||||||
|
expect(view.model.messages.at(0).get('editable')).toBeTruthy();
|
||||||
|
|
||||||
expect(view.el.querySelectorAll('.chat-error').length).toBe(1);
|
expect(view.el.querySelectorAll('.chat-error').length).toBe(1);
|
||||||
const errmsg = view.el.querySelector('.chat-error');
|
const errmsg = view.el.querySelector('.chat-error');
|
||||||
@ -675,6 +677,7 @@
|
|||||||
expect(view.model.messages.length).toBe(1);
|
expect(view.model.messages.length).toBe(1);
|
||||||
expect(view.model.messages.at(0).get('retracted')).toBeFalsy();
|
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('is_ephemeral')).toBeFalsy();
|
||||||
|
expect(view.model.messages.at(0).get('editable')).toBeTruthy();
|
||||||
|
|
||||||
const error_messages = view.el.querySelectorAll('.chat-error');
|
const error_messages = view.el.querySelectorAll('.chat-error');
|
||||||
expect(error_messages.length).toBe(2);
|
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.
|
* @param { string } [reason] - The reason for retracting the message.
|
||||||
*/
|
*/
|
||||||
async retractOtherMessage (message, reason) {
|
async retractOtherMessage (message, reason) {
|
||||||
const result = await this.model.sendRetractionIQ(message, reason);
|
const result = await this.model.retractOtherMessage(message, reason);
|
||||||
if (result === null) {
|
if (result === null) {
|
||||||
const err_msg = __(`A timeout occurred while trying to retract the message`);
|
const err_msg = __(`A timeout occurred while trying to retract the message`);
|
||||||
_converse.api.alert('error', __('Error'), err_msg);
|
_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.api.alert('error', __('Error'), err_msg);
|
||||||
_converse.log(err_msg, Strophe.LogLevel.WARN);
|
_converse.log(err_msg, Strophe.LogLevel.WARN);
|
||||||
_converse.log(result, 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
|
* @private
|
||||||
* @method _converse.ChatRoom#retractOwnMessage
|
* @method _converse.ChatRoom#retractOwnMessage
|
||||||
* @param { _converse.Message } message - The message which we're retracting.
|
* @param { _converse.Message } message - The message which we're retracting.
|
||||||
*/
|
*/
|
||||||
async retractOwnMessage(message) {
|
async retractOwnMessage(message) {
|
||||||
const editable = message.get('editable');
|
const editable = message.get('editable');
|
||||||
const is_ephemeral = message.get('is_ephemeral');
|
|
||||||
// Optimistic save
|
// Optimistic save
|
||||||
message.save({
|
message.save({
|
||||||
'retracted': (new Date()).toISOString(),
|
'retracted': (new Date()).toISOString(),
|
||||||
'retracted_id': message.get('origin_id'),
|
'retracted_id': message.get('origin_id'),
|
||||||
'is_ephemeral': true,
|
|
||||||
'editable': false
|
'editable': false
|
||||||
});
|
});
|
||||||
try {
|
try {
|
||||||
await this.sendRetractionMessage(message)
|
await this.sendRetractionMessage(message)
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
message.save({
|
message.save({
|
||||||
is_ephemeral,
|
|
||||||
editable,
|
editable,
|
||||||
'retracted': undefined,
|
'retracted': undefined,
|
||||||
'retracted_id': 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.
|
* Sends a message stanza to retract a message in this groupchat.
|
||||||
* @private
|
* @private
|
||||||
|
Loading…
Reference in New Issue
Block a user