- |
+ |
{{ generateLogText(auditLogItem) }}
|
-
+ |
{{
messageTimestamp(
auditLogItem.created_at,
@@ -65,7 +65,7 @@
diff --git a/app/javascript/dashboard/routes/dashboard/settings/campaigns/campaigns.routes.js b/app/javascript/dashboard/routes/dashboard/settings/campaigns/campaigns.routes.js
index 1ac007ed6..5c8581981 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/campaigns/campaigns.routes.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/campaigns/campaigns.routes.js
@@ -19,7 +19,9 @@ export default {
{
path: 'ongoing',
name: 'ongoing_campaigns',
- roles: ['administrator'],
+ meta: {
+ permissions: ['administrator'],
+ },
component: Index,
},
],
@@ -35,7 +37,9 @@ export default {
{
path: 'one_off',
name: 'one_off',
- roles: ['administrator'],
+ meta: {
+ permissions: ['administrator'],
+ },
component: Index,
},
],
diff --git a/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js b/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js
index 73b370e2a..236801c8c 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/canned/canned.routes.js
@@ -16,13 +16,14 @@ export default {
children: [
{
path: '',
- name: 'canned_wrapper',
redirect: 'list',
},
{
path: 'list',
name: 'canned_list',
- roles: ['administrator', 'agent'],
+ meta: {
+ permissions: ['administrator', 'agent'],
+ },
component: CannedHome,
},
],
diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channel-factory.js b/app/javascript/dashboard/routes/dashboard/settings/inbox/channel-factory.js
index 0842f9f6b..4209fa9e0 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channel-factory.js
+++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channel-factory.js
@@ -1,12 +1,12 @@
-import Facebook from './channels/Facebook';
-import Website from './channels/Website';
-import Twitter from './channels/Twitter';
-import Api from './channels/Api';
-import Email from './channels/Email';
-import Sms from './channels/Sms';
-import Whatsapp from './channels/Whatsapp';
-import Line from './channels/Line';
-import Telegram from './channels/Telegram';
+import Facebook from './channels/Facebook.vue';
+import Website from './channels/Website.vue';
+import Twitter from './channels/Twitter.vue';
+import Api from './channels/Api.vue';
+import Email from './channels/Email.vue';
+import Sms from './channels/Sms.vue';
+import Whatsapp from './channels/Whatsapp.vue';
+import Line from './channels/Line.vue';
+import Telegram from './channels/Telegram.vue';
const channelViewList = {
facebook: Facebook,
diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Facebook.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Facebook.vue
index 374a88854..b52af77a6 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Facebook.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/channels/Facebook.vue
@@ -2,14 +2,15 @@
-
+
-
+
{{
useInstallationName(
$t('INBOX_MGMT.ADD.FB.HELP'),
@@ -99,12 +100,16 @@ import router from '../../../../index';
import globalConfigMixin from 'shared/mixins/globalConfigMixin';
import accountMixin from '../../../../../mixins/account';
+import { loadScript } from 'dashboard/helper/DOMHelpers';
+import alertMixin from 'shared/mixins/alertMixin';
+import * as Sentry from '@sentry/browser';
+
export default {
components: {
LoadingState,
PageHeader,
},
- mixins: [globalConfigMixin, accountMixin],
+ mixins: [globalConfigMixin, accountMixin, alertMixin],
data() {
return {
isCreating: false,
@@ -147,19 +152,29 @@ export default {
}),
},
- created() {
- this.initFB();
- this.loadFBsdk();
- },
-
mounted() {
- this.initFB();
+ window.fbAsyncInit = this.runFBInit;
},
methods: {
- startLogin() {
+ async startLogin() {
this.hasLoginStarted = true;
- this.tryFBlogin();
+ try {
+ // this will load the SDK in a promise, and resolve it when the sdk is loaded
+ // in case the SDK is already present, it will resolve immediately
+ await this.loadFBsdk();
+ this.runFBInit(); // run init anyway, `tryFBlogin` won't wait for `fbAsyncInit` otherwise.
+ this.tryFBlogin(); // make an attempt to login
+ } catch (error) {
+ if (error.name === 'ScriptLoaderError') {
+ // if the error was related to script loading, we show a toast
+ this.showAlert(this.$t('INBOX_MGMT.DETAILS.ERROR_FB_LOADING'));
+ } else {
+ // if the error was anything else, we capture it and show a toast
+ Sentry.captureException(error);
+ this.showAlert(this.$t('INBOX_MGMT.DETAILS.ERROR_FB_AUTH'));
+ }
+ }
},
setPageName({ name }) {
@@ -173,34 +188,21 @@ export default {
}
},
- initFB() {
- if (window.fbSDKLoaded === undefined) {
- window.fbAsyncInit = () => {
- FB.init({
- appId: window.chatwootConfig.fbAppId,
- xfbml: true,
- version: window.chatwootConfig.fbApiVersion,
- status: true,
- });
- window.fbSDKLoaded = true;
- FB.AppEvents.logPageView();
- };
- }
+ runFBInit() {
+ FB.init({
+ appId: window.chatwootConfig.fbAppId,
+ xfbml: true,
+ version: window.chatwootConfig.fbApiVersion,
+ status: true,
+ });
+ window.fbSDKLoaded = true;
+ FB.AppEvents.logPageView();
},
- loadFBsdk() {
- ((d, s, id) => {
- let js;
- // eslint-disable-next-line
- const fjs = (js = d.getElementsByTagName(s)[0]);
- if (d.getElementById(id)) {
- return;
- }
- js = d.createElement(s);
- js.id = id;
- js.src = '//connect.facebook.net/en_US/sdk.js';
- fjs.parentNode.insertBefore(js, fjs);
- })(document, 'script', 'facebook-jssdk');
+ async loadFBsdk() {
+ return loadScript('https://connect.facebook.net/en_US/sdk.js', {
+ id: 'facebook-jssdk',
+ });
},
tryFBlogin() {
@@ -285,16 +287,3 @@ export default {
},
};
-
diff --git a/app/javascript/dashboard/routes/dashboard/settings/inbox/facebook/Reauthorize.vue b/app/javascript/dashboard/routes/dashboard/settings/inbox/facebook/Reauthorize.vue
index d90f88d3b..95e333b77 100644
--- a/app/javascript/dashboard/routes/dashboard/settings/inbox/facebook/Reauthorize.vue
+++ b/app/javascript/dashboard/routes/dashboard/settings/inbox/facebook/Reauthorize.vue
@@ -1,11 +1,14 @@
-
+
|