Make various error messages ephemeral.
Also make it possible to specify the timeout for an ephemeral message.
This commit is contained in:
parent
ca20f687bf
commit
7b63b7b30f
@ -64,8 +64,10 @@ const MessageMixin = {
|
|||||||
if (this.ephemeral_timer) {
|
if (this.ephemeral_timer) {
|
||||||
clearTimeout(this.ephemeral_timer);
|
clearTimeout(this.ephemeral_timer);
|
||||||
}
|
}
|
||||||
if (this.isEphemeral()) {
|
const is_ephemeral = this.isEphemeral();
|
||||||
this.ephemeral_timer = window.setTimeout(() => this.safeDestroy(), 10000);
|
if (is_ephemeral) {
|
||||||
|
const timeout = typeof is_ephemeral === "number" ? is_ephemeral : 10000;
|
||||||
|
this.ephemeral_timer = window.setTimeout(() => this.safeDestroy(), timeout);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -382,7 +382,8 @@ const ChatBox = ModelWithContact.extend({
|
|||||||
const msg = await this.createMessage({
|
const msg = await this.createMessage({
|
||||||
'type': 'error',
|
'type': 'error',
|
||||||
'message': error.message,
|
'message': error.message,
|
||||||
'retry_event_id': error.retry_event_id
|
'retry_event_id': error.retry_event_id,
|
||||||
|
'is_ephemeral': 30000,
|
||||||
});
|
});
|
||||||
msg.error = error;
|
msg.error = error;
|
||||||
}
|
}
|
||||||
|
@ -264,7 +264,8 @@ export default {
|
|||||||
}, NS.MAM);
|
}, NS.MAM);
|
||||||
|
|
||||||
let error;
|
let error;
|
||||||
const iq_result = await api.sendIQ(stanza, api.settings.get('message_archiving_timeout'), false)
|
const timeout = api.settings.get('message_archiving_timeout');
|
||||||
|
const iq_result = await api.sendIQ(stanza, timeout, false)
|
||||||
if (iq_result === null) {
|
if (iq_result === null) {
|
||||||
const { __ } = _converse;
|
const { __ } = _converse;
|
||||||
const err_msg = __("Timeout while trying to fetch archived messages.");
|
const err_msg = __("Timeout while trying to fetch archived messages.");
|
||||||
|
@ -1383,7 +1383,7 @@ const ChatRoomMixin = {
|
|||||||
}
|
}
|
||||||
if (show_error) {
|
if (show_error) {
|
||||||
const message = __('Forbidden: you do not have the necessary role in order to do that.');
|
const message = __('Forbidden: you do not have the necessary role in order to do that.');
|
||||||
this.createMessage({ message, 'type': 'error' });
|
this.createMessage({ message, 'type': 'error', 'is_ephemeral': 20000 });
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
},
|
},
|
||||||
@ -1435,7 +1435,7 @@ const ChatRoomMixin = {
|
|||||||
const { __ } = _converse;
|
const { __ } = _converse;
|
||||||
log.error(e);
|
log.error(e);
|
||||||
const message = __("Error: couldn't register new nickname in members only room");
|
const message = __("Error: couldn't register new nickname in members only room");
|
||||||
this.createMessage({ message, 'type': 'error' });
|
this.createMessage({ message, 'type': 'error', 'is_ephemeral': true });
|
||||||
this.set({ 'nick': old_nick });
|
this.set({ 'nick': old_nick });
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1825,7 +1825,7 @@ const ChatRoomMixin = {
|
|||||||
prev_msg?.get('type') !== 'info' ||
|
prev_msg?.get('type') !== 'info' ||
|
||||||
prev_msg?.get('message') !== message
|
prev_msg?.get('message') !== message
|
||||||
) {
|
) {
|
||||||
this.createMessage({ message, 'nick': attrs.nick, 'type': 'info' });
|
this.createMessage({ message, 'nick': attrs.nick, 'type': 'info', 'is_ephemeral': true });
|
||||||
}
|
}
|
||||||
if (await this.isSubjectHidden()) {
|
if (await this.isSubjectHidden()) {
|
||||||
this.toggleSubjectHiddenState();
|
this.toggleSubjectHiddenState();
|
||||||
|
@ -1153,7 +1153,7 @@ describe("Chatboxes", function () {
|
|||||||
|
|
||||||
const view = _converse.chatboxviews.get(contact_jid);
|
const view = _converse.chatboxviews.get(contact_jid);
|
||||||
expect(view.model.messages.length).toBe(1);
|
expect(view.model.messages.length).toBe(1);
|
||||||
expect(view.model.messages.at(0).get('is_ephemeral')).toBe(false);
|
expect(view.model.messages.at(0).get('is_ephemeral')).toBe(30000);
|
||||||
expect(view.model.messages.at(0).get('type')).toBe('error');
|
expect(view.model.messages.at(0).get('type')).toBe('error');
|
||||||
expect(view.model.messages.at(0).get('message')).toBe('Timeout while trying to fetch archived messages.');
|
expect(view.model.messages.at(0).get('message')).toBe('Timeout while trying to fetch archived messages.');
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user