From 742580e3c90f80b76fe1d8d89eeae1a59e70812a Mon Sep 17 00:00:00 2001 From: Renato Becker Date: Mon, 12 Mar 2018 14:17:42 -0300 Subject: [PATCH 1/3] Message of the conversation finished has been added. --- packages/rocketchat-i18n/i18n/en.i18n.json | 1 + packages/rocketchat-i18n/i18n/pt.i18n.json | 1 + packages/rocketchat-livechat/.app/client/lib/_livechat.js | 7 +++++++ .../.app/client/views/livechatWindow.js | 4 ++++ packages/rocketchat-livechat/config.js | 8 ++++++++ packages/rocketchat-livechat/server/lib/Livechat.js | 3 ++- .../rocketchat-livechat/server/methods/getInitialData.js | 4 +++- .../rocketchat-livechat/server/methods/saveAppearance.js | 3 ++- .../server/publications/livechatAppearance.js | 3 ++- 9 files changed, 30 insertions(+), 4 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index 706fefe310ede..a9e85b7ac0a05 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -430,6 +430,7 @@ "Content": "Content", "Conversation": "Conversation", "Conversation_closed": "Conversation closed: __comment__.", + "Conversation_finished_message": "Conversation finished message", "Convert_Ascii_Emojis": "Convert ASCII to Emoji", "Copied": "Copied", "Copy": "Copy", diff --git a/packages/rocketchat-i18n/i18n/pt.i18n.json b/packages/rocketchat-i18n/i18n/pt.i18n.json index 7e5d014c8bd1d..ef5a1f75453cf 100644 --- a/packages/rocketchat-i18n/i18n/pt.i18n.json +++ b/packages/rocketchat-i18n/i18n/pt.i18n.json @@ -299,6 +299,7 @@ "Content": "Conteúdo", "Conversation": "Conversa", "Conversation_closed": "Chat encerrado: __comment__.", + "Conversation_finished_message": "Mensagem ao encerrar chat", "Convert_Ascii_Emojis": "Converter ASCII para Emoji", "Copied": "Copiado", "Copy": "Cópia", diff --git a/packages/rocketchat-livechat/.app/client/lib/_livechat.js b/packages/rocketchat-livechat/.app/client/lib/_livechat.js index c0185a16b436e..781f500bc6435 100644 --- a/packages/rocketchat-livechat/.app/client/lib/_livechat.js +++ b/packages/rocketchat-livechat/.app/client/lib/_livechat.js @@ -22,6 +22,7 @@ this.Livechat = new (class Livechat { this._offlineSuccessMessage = new ReactiveVar(TAPi18n.__('Thanks_We_ll_get_back_to_you_soon')); this._videoCall = new ReactiveVar(false); this._transcriptMessage = new ReactiveVar(''); + this._conversationFinishedMessage = new ReactiveVar(''); this._connecting = new ReactiveVar(false); this._room = new ReactiveVar(null); this._department = new ReactiveVar(null); @@ -100,6 +101,9 @@ this.Livechat = new (class Livechat { get transcriptMessage() { return this._transcriptMessage.get(); } + get conversationFinishedMessage() { + return this._conversationFinishedMessage.get(); + } get department() { return this._department.get(); } @@ -161,6 +165,9 @@ this.Livechat = new (class Livechat { set transcriptMessage(value) { this._transcriptMessage.set(value); } + set conversationFinishedMessage(value) { + this._conversationFinishedMessage.set(value); + } set connecting(value) { this._connecting.set(value); } diff --git a/packages/rocketchat-livechat/.app/client/views/livechatWindow.js b/packages/rocketchat-livechat/.app/client/views/livechatWindow.js index c0fdf8f2d18f1..093de6d155138 100644 --- a/packages/rocketchat-livechat/.app/client/views/livechatWindow.js +++ b/packages/rocketchat-livechat/.app/client/views/livechatWindow.js @@ -51,6 +51,9 @@ Template.livechatWindow.helpers({ }, showWidget() { return Livechat.online || Livechat.displayOfflineForm; + }, + conversationFinishedMessage() { + return Livechat.conversationFinishedMessage; } }); @@ -111,6 +114,7 @@ Template.livechatWindow.onCreated(function() { Livechat.online = true; Livechat.transcript = result.transcript; Livechat.transcriptMessage = result.transcriptMessage; + Livechat.conversationFinishedMessage = result.conversationFinishedMessage; } Livechat.videoCall = result.videoCall; Livechat.registrationForm = result.registrationForm; diff --git a/packages/rocketchat-livechat/config.js b/packages/rocketchat-livechat/config.js index 3a7815a4d6e86..96a85a4cf9351 100644 --- a/packages/rocketchat-livechat/config.js +++ b/packages/rocketchat-livechat/config.js @@ -66,6 +66,14 @@ Meteor.startup(function() { i18nLabel: 'Offline_success_message' }); + RocketChat.settings.add('Livechat_conversation_finished_message', '', { + type: 'string', + group: 'Livechat', + public: true, + section: 'Conversation Finished', + i18nLabel: 'Conversation_finished_message' + }); + RocketChat.settings.add('Livechat_registration_form', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_preregistration_form' }); RocketChat.settings.add('Livechat_allow_switching_departments', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Allow_switching_departments' }); RocketChat.settings.add('Livechat_show_agent_email', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_agent_email' }); diff --git a/packages/rocketchat-livechat/server/lib/Livechat.js b/packages/rocketchat-livechat/server/lib/Livechat.js index 99079cb7f6b9f..9fa1b60540b4f 100644 --- a/packages/rocketchat-livechat/server/lib/Livechat.js +++ b/packages/rocketchat-livechat/server/lib/Livechat.js @@ -275,7 +275,8 @@ RocketChat.Livechat = { 'Jitsi_Enabled', 'Language', 'Livechat_enable_transcript', - 'Livechat_transcript_message' + 'Livechat_transcript_message', + 'Livechat_conversation_finished_message' ]).forEach((setting) => { settings[setting._id] = setting.value; }); diff --git a/packages/rocketchat-livechat/server/methods/getInitialData.js b/packages/rocketchat-livechat/server/methods/getInitialData.js index bca2a9787764a..01415950fc739 100644 --- a/packages/rocketchat-livechat/server/methods/getInitialData.js +++ b/packages/rocketchat-livechat/server/methods/getInitialData.js @@ -20,7 +20,8 @@ Meteor.methods({ offlineSuccessMessage: null, offlineUnavailableMessage: null, displayOfflineForm: null, - videoCall: null + videoCall: null, + conversationFinishedMessage: null }; const room = RocketChat.models.Rooms.findOpenByVisitorToken(visitorToken, { @@ -67,6 +68,7 @@ Meteor.methods({ info.videoCall = initSettings.Livechat_videocall_enabled === true && initSettings.Jitsi_Enabled === true; info.transcript = initSettings.Livechat_enable_transcript; info.transcriptMessage = initSettings.Livechat_transcript_message; + info.conversationFinishedMessage = initSettings.Livechat_conversation_finished_message; info.agentData = room && room[0] && room[0].servedBy && RocketChat.models.Users.getAgentInfo(room[0].servedBy._id); diff --git a/packages/rocketchat-livechat/server/methods/saveAppearance.js b/packages/rocketchat-livechat/server/methods/saveAppearance.js index 69fc5287f38d6..a9aa4cccf98af 100644 --- a/packages/rocketchat-livechat/server/methods/saveAppearance.js +++ b/packages/rocketchat-livechat/server/methods/saveAppearance.js @@ -14,7 +14,8 @@ Meteor.methods({ 'Livechat_offline_success_message', 'Livechat_offline_title', 'Livechat_offline_title_color', - 'Livechat_offline_email' + 'Livechat_offline_email', + 'Livechat_conversation_finished_message' ]; const valid = settings.every((setting) => { diff --git a/packages/rocketchat-livechat/server/publications/livechatAppearance.js b/packages/rocketchat-livechat/server/publications/livechatAppearance.js index abb3aee63b379..db0a1788d0bab 100644 --- a/packages/rocketchat-livechat/server/publications/livechatAppearance.js +++ b/packages/rocketchat-livechat/server/publications/livechatAppearance.js @@ -19,7 +19,8 @@ Meteor.publish('livechat:appearance', function() { 'Livechat_offline_success_message', 'Livechat_offline_title', 'Livechat_offline_title_color', - 'Livechat_offline_email' + 'Livechat_offline_email', + 'Livechat_conversation_finished_message' ] } }; From 0b20d479aac6ad32cf57bf70edd8af48183349e3 Mon Sep 17 00:00:00 2001 From: Renato Becker Date: Mon, 12 Mar 2018 16:23:15 -0300 Subject: [PATCH 2/3] New setting added to display a message when the Livechat conversation has ended. --- packages/rocketchat-i18n/i18n/en.i18n.json | 2 +- .../.app/client/lib/commands.js | 7 ------- .../.app/client/views/livechatWindow.js | 3 --- .../.app/client/views/message.js | 3 ++- .../client/views/app/livechatAppearance.html | 7 +++++++ .../client/views/app/livechatAppearance.js | 15 +++++++++++++++ 6 files changed, 25 insertions(+), 12 deletions(-) diff --git a/packages/rocketchat-i18n/i18n/en.i18n.json b/packages/rocketchat-i18n/i18n/en.i18n.json index a9e85b7ac0a05..be278efb9bbc5 100644 --- a/packages/rocketchat-i18n/i18n/en.i18n.json +++ b/packages/rocketchat-i18n/i18n/en.i18n.json @@ -430,7 +430,7 @@ "Content": "Content", "Conversation": "Conversation", "Conversation_closed": "Conversation closed: __comment__.", - "Conversation_finished_message": "Conversation finished message", + "Conversation_finished_message": "Conversation Finished Message", "Convert_Ascii_Emojis": "Convert ASCII to Emoji", "Copied": "Copied", "Copy": "Copy", diff --git a/packages/rocketchat-livechat/.app/client/lib/commands.js b/packages/rocketchat-livechat/.app/client/lib/commands.js index e63bc3d10bf2b..34b2839f99e39 100644 --- a/packages/rocketchat-livechat/.app/client/lib/commands.js +++ b/packages/rocketchat-livechat/.app/client/lib/commands.js @@ -54,13 +54,6 @@ this.Commands = { } } }); - } else { - swal({ - title: t('Chat_ended'), - type: 'success', - timer: 1000, - showConfirmButton: false - }); } }, diff --git a/packages/rocketchat-livechat/.app/client/views/livechatWindow.js b/packages/rocketchat-livechat/.app/client/views/livechatWindow.js index 093de6d155138..3116100f6e50a 100644 --- a/packages/rocketchat-livechat/.app/client/views/livechatWindow.js +++ b/packages/rocketchat-livechat/.app/client/views/livechatWindow.js @@ -51,9 +51,6 @@ Template.livechatWindow.helpers({ }, showWidget() { return Livechat.online || Livechat.displayOfflineForm; - }, - conversationFinishedMessage() { - return Livechat.conversationFinishedMessage; } }); diff --git a/packages/rocketchat-livechat/.app/client/views/message.js b/packages/rocketchat-livechat/.app/client/views/message.js index 9dc31af875b10..d70cf2c378183 100644 --- a/packages/rocketchat-livechat/.app/client/views/message.js +++ b/packages/rocketchat-livechat/.app/client/views/message.js @@ -1,6 +1,7 @@ /* globals Livechat, t, tr, livechatAutolinker */ import moment from 'moment'; import visitor from '../../imports/client/visitor'; +import _ from 'underscore'; import s from 'underscore.string'; Template.message.helpers({ @@ -40,7 +41,7 @@ Template.message.helpers({ case 'wm': return t('Welcome', { user: this.u.username }); case 'livechat-close': - return t('Conversation_finished'); + return (!_.isEmpty(Livechat.conversationFinishedMessage)) ? Livechat.conversationFinishedMessage : t('Conversation_finished'); // case 'rtc': return RocketChat.callbacks.run('renderRtcMessage', this); default: this.html = this.msg; diff --git a/packages/rocketchat-livechat/client/views/app/livechatAppearance.html b/packages/rocketchat-livechat/client/views/app/livechatAppearance.html index 03fdaf1731f74..a21c01511d7f5 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatAppearance.html +++ b/packages/rocketchat-livechat/client/views/app/livechatAppearance.html @@ -66,6 +66,13 @@

{{_ "Settings"}}

+
+ {{_ "Conversation_finished"}} +
+ + +
+
diff --git a/packages/rocketchat-livechat/client/views/app/livechatAppearance.js b/packages/rocketchat-livechat/client/views/app/livechatAppearance.js index 89d4fb89a1ee7..d056e9855042a 100644 --- a/packages/rocketchat-livechat/client/views/app/livechatAppearance.js +++ b/packages/rocketchat-livechat/client/views/app/livechatAppearance.js @@ -79,6 +79,9 @@ Template.livechatAppearance.helpers({ emailOffline() { return Template.instance().offlineEmail.get(); }, + conversationFinishedMessage() { + return Template.instance().conversationFinishedMessage.get(); + }, sampleColor() { if (Template.instance().previewState.get().indexOf('offline') !== -1) { return Template.instance().colorOffline.get(); @@ -177,6 +180,7 @@ Template.livechatAppearance.onCreated(function() { this.titleOffline = new ReactiveVar(null); this.colorOffline = new ReactiveVar(null); this.offlineEmail = new ReactiveVar(null); + this.conversationFinishedMessage = new ReactiveVar(null); this.autorun(() => { const setting = LivechatAppearance.findOne('Livechat_title'); @@ -218,6 +222,10 @@ Template.livechatAppearance.onCreated(function() { const setting = LivechatAppearance.findOne('Livechat_offline_email'); this.offlineEmail.set(setting && setting.value); }); + this.autorun(() => { + const setting = LivechatAppearance.findOne('Livechat_conversation_finished_message'); + this.conversationFinishedMessage.set(setting && setting.value); + }); }); Template.livechatAppearance.events({ @@ -260,6 +268,9 @@ Template.livechatAppearance.events({ const settingOfflineTitleColor = LivechatAppearance.findOne('Livechat_offline_title_color'); instance.colorOffline.set(settingOfflineTitleColor && settingOfflineTitleColor.value); + + const settingConversationFinishedMessage = LivechatAppearance.findOne('Livechat_conversation_finished_message'); + instance.conversationFinishedMessage.set(settingConversationFinishedMessage && settingConversationFinishedMessage.value); }, 'submit .rocket-form'(e, instance) { e.preventDefault(); @@ -304,6 +315,10 @@ Template.livechatAppearance.events({ { _id: 'Livechat_offline_email', value: instance.$('#emailOffline').val() + }, + { + _id: 'Livechat_conversation_finished_message', + value: s.trim(instance.conversationFinishedMessage.get()) } ]; From 6b43db8c508de80acf706fe029cf5520db33aac9 Mon Sep 17 00:00:00 2001 From: Renato Becker Date: Tue, 17 Apr 2018 11:09:44 -0300 Subject: [PATCH 3/3] Fix PR review. --- packages/rocketchat-livechat/.app/client/views/message.js | 3 +-- packages/rocketchat-livechat/config.js | 8 ++++---- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/packages/rocketchat-livechat/.app/client/views/message.js b/packages/rocketchat-livechat/.app/client/views/message.js index d70cf2c378183..dac45da7a1f3b 100644 --- a/packages/rocketchat-livechat/.app/client/views/message.js +++ b/packages/rocketchat-livechat/.app/client/views/message.js @@ -1,7 +1,6 @@ /* globals Livechat, t, tr, livechatAutolinker */ import moment from 'moment'; import visitor from '../../imports/client/visitor'; -import _ from 'underscore'; import s from 'underscore.string'; Template.message.helpers({ @@ -41,7 +40,7 @@ Template.message.helpers({ case 'wm': return t('Welcome', { user: this.u.username }); case 'livechat-close': - return (!_.isEmpty(Livechat.conversationFinishedMessage)) ? Livechat.conversationFinishedMessage : t('Conversation_finished'); + return (Livechat.conversationFinishedMessage) ? Livechat.conversationFinishedMessage : t('Conversation_finished'); // case 'rtc': return RocketChat.callbacks.run('renderRtcMessage', this); default: this.html = this.msg; diff --git a/packages/rocketchat-livechat/config.js b/packages/rocketchat-livechat/config.js index 96a85a4cf9351..1fd1f3323ead0 100644 --- a/packages/rocketchat-livechat/config.js +++ b/packages/rocketchat-livechat/config.js @@ -66,17 +66,17 @@ Meteor.startup(function() { i18nLabel: 'Offline_success_message' }); + RocketChat.settings.add('Livechat_registration_form', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_preregistration_form' }); + RocketChat.settings.add('Livechat_allow_switching_departments', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Allow_switching_departments' }); + RocketChat.settings.add('Livechat_show_agent_email', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_agent_email' }); + RocketChat.settings.add('Livechat_conversation_finished_message', '', { type: 'string', group: 'Livechat', public: true, - section: 'Conversation Finished', i18nLabel: 'Conversation_finished_message' }); - RocketChat.settings.add('Livechat_registration_form', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_preregistration_form' }); - RocketChat.settings.add('Livechat_allow_switching_departments', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Allow_switching_departments' }); - RocketChat.settings.add('Livechat_show_agent_email', true, { type: 'boolean', group: 'Livechat', public: true, i18nLabel: 'Show_agent_email' }); RocketChat.settings.add('Livechat_guest_count', 1, { type: 'int', group: 'Livechat' }); RocketChat.settings.add('Livechat_Room_Count', 1, {