Commit 1eb23643 authored by JC Brand's avatar JC Brand

Let `sendMessage` return the message model, not just the text

parent afa25434
...@@ -2016,7 +2016,7 @@ ...@@ -2016,7 +2016,7 @@
}); });
await new Promise((resolve, reject) => view.once('messageInserted', resolve)); await new Promise((resolve, reject) => view.once('messageInserted', resolve));
expect(_converse.api.trigger).toHaveBeenCalledWith('messageSend', text); expect(_converse.api.trigger).toHaveBeenCalledWith('messageSend', jasmine.any(_converse.Message));
const chat_content = view.el.querySelector('.chat-content'); const chat_content = view.el.querySelector('.chat-content');
expect(chat_content.querySelectorAll('.chat-msg').length).toBe(1); expect(chat_content.querySelectorAll('.chat-msg').length).toBe(1);
......
...@@ -885,11 +885,9 @@ converse.plugins.add('converse-chatview', { ...@@ -885,11 +885,9 @@ converse.plugins.add('converse-chatview', {
async onFormSubmitted (ev) { async onFormSubmitted (ev) {
ev.preventDefault(); ev.preventDefault();
const textarea = this.el.querySelector('.chat-textarea'); const textarea = this.el.querySelector('.chat-textarea');
const message = textarea.value.trim(); const message_text = textarea.value.trim();
if (_converse.message_limit && message.length > _converse.message_limit) { if (_converse.message_limit && message_text.length > _converse.message_limit ||
return; !message_text.replace(/\s/g, '').length) {
}
if (!message.replace(/\s/g, '').length) {
return; return;
} }
if (!_converse.connection.authenticated) { if (!_converse.connection.authenticated) {
...@@ -907,18 +905,21 @@ converse.plugins.add('converse-chatview', { ...@@ -907,18 +905,21 @@ converse.plugins.add('converse-chatview', {
} }
u.addClass('disabled', textarea); u.addClass('disabled', textarea);
textarea.setAttribute('disabled', 'disabled'); textarea.setAttribute('disabled', 'disabled');
if (this.parseMessageForCommands(message) ||
await this.model.sendMessage(message, spoiler_hint)) {
const is_command = this.parseMessageForCommands(message_text);
const message = is_command ? null : await this.model.sendMessage(message_text, spoiler_hint);
if (is_command || message) {
hint_el.value = ''; hint_el.value = '';
textarea.value = ''; textarea.value = '';
u.removeClass('correcting', textarea); u.removeClass('correcting', textarea);
textarea.style.height = 'auto'; // Fixes weirdness textarea.style.height = 'auto'; // Fixes weirdness
}
if (message) {
/** /**
* Triggered just before an HTML5 message notification will be sent out. * Triggered whenever a message is sent by the user
* @event _converse#messageSend * @event _converse#messageSend
* @type { _converse.Message } * @type { _converse.Message }
* @example _converse.api.listen.on('messageSend', data => { ... }); * @example _converse.api.listen.on('messageSend', message => { ... });
*/ */
_converse.api.trigger('messageSend', message); _converse.api.trigger('messageSend', message);
} }
......
...@@ -192,15 +192,17 @@ converse.plugins.add('converse-omemo', { ...@@ -192,15 +192,17 @@ converse.plugins.add('converse-omemo', {
const attrs = this.getOutgoingMessageAttributes(text, spoiler_hint); const attrs = this.getOutgoingMessageAttributes(text, spoiler_hint);
attrs['is_encrypted'] = true; attrs['is_encrypted'] = true;
attrs['plaintext'] = attrs.message; attrs['plaintext'] = attrs.message;
let message, stanza;
try { try {
const devices = await _converse.getBundlesAndBuildSessions(this); const devices = await _converse.getBundlesAndBuildSessions(this);
const stanza = await _converse.createOMEMOMessageStanza(this, this.messages.create(attrs), devices); message = this.messages.create(attrs);
_converse.api.send(stanza); stanza = await _converse.createOMEMOMessageStanza(this, message, devices);
} catch (e) { } catch (e) {
this.handleMessageSendError(e); this.handleMessageSendError(e);
return false; return null;
} }
return true; _converse.api.send(stanza);
return message;
} else { } else {
return this.__super__.sendMessage.apply(this, arguments); return this.__super__.sendMessage.apply(this, arguments);
} }
......
...@@ -705,13 +705,12 @@ converse.plugins.add('converse-chatboxes', { ...@@ -705,13 +705,12 @@ converse.plugins.add('converse-chatboxes', {
}, },
/** /**
* Responsible for sending off a text message inside an ongoing * Responsible for sending off a text message inside an ongoing chat conversation.
* chat conversation.
*
* @method _converse.ChatBox#sendMessage * @method _converse.ChatBox#sendMessage
* @memberOf _converse.ChatBox * @memberOf _converse.ChatBox
* @param {String} text - The chat message text * @param { String } text - The chat message text
* @param {String} spoiler_hint - An optional hint, if the message being sent is a spoiler * @param { String } spoiler_hint - An optional hint, if the message being sent is a spoiler
* @returns { _converse.Message }
* @example * @example
* const chat = _converse.api.chats.get('buddy1@example.com'); * const chat = _converse.api.chats.get('buddy1@example.com');
* chat.sendMessage('hello world'); * chat.sendMessage('hello world');
...@@ -735,7 +734,7 @@ converse.plugins.add('converse-chatboxes', { ...@@ -735,7 +734,7 @@ converse.plugins.add('converse-chatboxes', {
message = this.messages.create(attrs); message = this.messages.create(attrs);
} }
_converse.api.send(this.createMessageStanza(message)); _converse.api.send(this.createMessageStanza(message));
return true; return message;
}, },
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment