From 896ef4e84cc1d0c897bfd0cfea21a9041b55e1a9 Mon Sep 17 00:00:00 2001 From: Laurynas Karvelis Date: Mon, 24 Dec 2018 11:43:57 +0200 Subject: [PATCH 1/3] feature: add event listeners to get answers from Base.send method only when explicitly asked --- src/types/Base.js | 10 +++++++++- src/types/Question.js | 3 ++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/src/types/Base.js b/src/types/Base.js index d8ba44d..6e62dd6 100644 --- a/src/types/Base.js +++ b/src/types/Base.js @@ -25,9 +25,10 @@ export default class Base extends EventEmitter { * gets the Update object containing message * * @param {object} bot + * @param {boolean} expectAnswer whether a sent message expects an answer from a contact(s) * @return {Promise} returns a promise, resolved with message:answer */ - send(bot) { + send(bot, expectAnswer = false) { if (this._keyboard) { const replyMarkup = JSON.stringify(this._keyboard.getProperties()); this.properties.reply_markup = replyMarkup; @@ -40,6 +41,11 @@ export default class Base extends EventEmitter { return response.result.message_id; }) .then(messageId => { + if (!expectAnswer) { + // no need to add more event callbacks for the messages that don't need expect an answer + return resolve(); + } + const chat = this.properties.chat_id; let answers = 0; @@ -67,6 +73,8 @@ export default class Base extends EventEmitter { bot.removeListener('update', listener); } }); + + return void 0; }) .catch(reject) .finally(() => { diff --git a/src/types/Question.js b/src/types/Question.js index 93b92ea..51fb69d 100644 --- a/src/types/Question.js +++ b/src/types/Question.js @@ -44,8 +44,9 @@ export default class Question extends Message { */ send(bot) { const answers = this._answers; + const expectAnswer = true; - return super.send(bot).then(message => { + return super.send(bot, expectAnswer).then(message => { let answer; answers.forEach(function find(a) { From 68eb5e5483fde15519add114c0f3f2c06ed12f0c Mon Sep 17 00:00:00 2001 From: Laurynas Karvelis Date: Mon, 24 Dec 2018 13:56:33 +0200 Subject: [PATCH 2/3] fix: default param value to true to avoid breaking people's existing code; small return value fix --- src/types/Base.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/types/Base.js b/src/types/Base.js index 6e62dd6..1f3b80e 100644 --- a/src/types/Base.js +++ b/src/types/Base.js @@ -28,7 +28,7 @@ export default class Base extends EventEmitter { * @param {boolean} expectAnswer whether a sent message expects an answer from a contact(s) * @return {Promise} returns a promise, resolved with message:answer */ - send(bot, expectAnswer = false) { + send(bot, expectAnswer = true) { if (this._keyboard) { const replyMarkup = JSON.stringify(this._keyboard.getProperties()); this.properties.reply_markup = replyMarkup; @@ -43,7 +43,8 @@ export default class Base extends EventEmitter { .then(messageId => { if (!expectAnswer) { // no need to add more event callbacks for the messages that don't need expect an answer - return resolve(); + resolve(); + return; } const chat = this.properties.chat_id; @@ -73,8 +74,6 @@ export default class Base extends EventEmitter { bot.removeListener('update', listener); } }); - - return void 0; }) .catch(reject) .finally(() => { From 45a72519179437a3f0dd6e6eb0ca7df6441c237e Mon Sep 17 00:00:00 2001 From: Laurynas Karvelis Date: Mon, 24 Dec 2018 13:57:39 +0200 Subject: [PATCH 3/3] chore: remove redundant param addition inside Question.send --- src/types/Question.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/types/Question.js b/src/types/Question.js index 51fb69d..93b92ea 100644 --- a/src/types/Question.js +++ b/src/types/Question.js @@ -44,9 +44,8 @@ export default class Question extends Message { */ send(bot) { const answers = this._answers; - const expectAnswer = true; - return super.send(bot, expectAnswer).then(message => { + return super.send(bot).then(message => { let answer; answers.forEach(function find(a) {