From 10bcb9f70a85b3369e8d63f5d4697bbeb13a75bb Mon Sep 17 00:00:00 2001 From: Diego Sampaio Date: Mon, 8 Jan 2018 17:41:10 -0200 Subject: [PATCH] Force enable Facebook integration --- .../integrations/livechatIntegrationFacebook.js | 13 +++++++++++++ .../server/methods/facebook.js | 15 ++++++++++----- 2 files changed, 23 insertions(+), 5 deletions(-) diff --git a/packages/rocketchat-livechat/client/views/app/integrations/livechatIntegrationFacebook.js b/packages/rocketchat-livechat/client/views/app/integrations/livechatIntegrationFacebook.js index 1fa2bd58e3c..1adf15706c3 100644 --- a/packages/rocketchat-livechat/client/views/app/integrations/livechatIntegrationFacebook.js +++ b/packages/rocketchat-livechat/client/views/app/integrations/livechatIntegrationFacebook.js @@ -33,6 +33,19 @@ Template.livechatIntegrationFacebook.onCreated(function() { this.result = (successFn, errorFn = () => {}) => { return (error, result) => { + // fix the state where user it was enabled on admin + if (error && error.error) { + switch (error.error) { + case 'invalid-facebook-token': + case 'invalid-instance-url': + case 'integration-disabled': + return Meteor.call('livechat:facebook', { action: 'enable' }, this.result(() => { + this.enabled.set(true); + this.loadPages(); + }, () => this.loadPages())); + } + } + if (result && result.success === false && (result.type === 'OAuthException' || typeof result.url !== 'undefined')) { const oauthWindow = window.open(result.url, 'facebook-integration-oauth', 'width=600,height=400'); diff --git a/packages/rocketchat-livechat/server/methods/facebook.js b/packages/rocketchat-livechat/server/methods/facebook.js index ddba0562ccd..9162c3ab348 100644 --- a/packages/rocketchat-livechat/server/methods/facebook.js +++ b/packages/rocketchat-livechat/server/methods/facebook.js @@ -44,11 +44,16 @@ Meteor.methods({ } } } catch (e) { - if (e.response && e.response.data && e.response.data.error && e.response.data.error.response) { - throw new Meteor.Error('integration-error', e.response.data.error.response.error.message); - } - if (e.response && e.response.data && e.response.data.error && e.response.data.error.message) { - throw new Meteor.Error('integration-error', e.response.data.error.message); + if (e.response && e.response.data && e.response.data.error) { + if (e.response.data.error.error) { + throw new Meteor.Error(e.response.data.error.error, e.response.data.error.message); + } + if (e.response.data.error.response) { + throw new Meteor.Error('integration-error', e.response.data.error.response.error.message); + } + if (e.response.data.error.message) { + throw new Meteor.Error('integration-error', e.response.data.error.message); + } } console.error('Error contacting omni.rocket.chat:', e); throw new Meteor.Error('integration-error', e.error);