tb-react-live-chat-loader
Version:
Implement live chat in your react app without taking a performance hit.
79 lines (64 loc) • 8 kB
JavaScript
import waitForLoad from "../utils/waitForLoad";
const domain = 'https://connect.facebook.net';
/* eslint-disable */
const loadScript = locale => {
if (window.FB) return false;
(function loadFacebookSDK(d, s, id) {
// fetch customerchat.js
const fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
const js = d.createElement(s);
js.id = id;
js.src = `${domain}/${locale}/sdk/xfbml.customerchat.js`;
if (fjs) {
var _fjs$parentNode;
(_fjs$parentNode = fjs.parentNode) === null || _fjs$parentNode === void 0 ? void 0 : _fjs$parentNode.insertBefore(js, fjs);
} else {
d.body.appendChild(js);
}
})(window.document, 'script', 'facebook-jssdk');
return true;
};
/* eslint-enable */
const load = ({
appID,
locale = 'en_US',
setState,
beforeInit = () => undefined,
onReady = () => undefined
}) => {
const loaded = loadScript(locale); // Continue as long as messenger hasn’t already been initialised.
if (loaded) {
beforeInit();
window.fbAsyncInit = function () {
window.FB.init(Object.assign({
cookie: true,
xfbml: true,
version: 'v6.0'
}, appID ? {
appId: appID
} : {}));
window.FB.Event.subscribe('customerchat.load', () => // Allow messenger to complete loading before removing fake widget
setTimeout(() => {
setState('complete');
onReady();
}, 3000));
};
}
return loaded;
};
const open = () => {
waitForLoad(() => {
var _window$FB, _window$FB$CustomerCh;
return !!((_window$FB = window.FB) !== null && _window$FB !== void 0 && (_window$FB$CustomerCh = _window$FB.CustomerChat) !== null && _window$FB$CustomerCh !== void 0 && _window$FB$CustomerCh.show);
}, // messenger is slow to show once it has loaded
() => setTimeout(() => window.FB.CustomerChat.show(true), 2000));
};
export default {
domain,
load,
open
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlcnMvbWVzc2VuZ2VyLnRzIl0sIm5hbWVzIjpbIndhaXRGb3JMb2FkIiwiZG9tYWluIiwibG9hZFNjcmlwdCIsImxvY2FsZSIsIndpbmRvdyIsIkZCIiwibG9hZEZhY2Vib29rU0RLIiwiZCIsInMiLCJpZCIsImZqcyIsImdldEVsZW1lbnRzQnlUYWdOYW1lIiwiZ2V0RWxlbWVudEJ5SWQiLCJqcyIsImNyZWF0ZUVsZW1lbnQiLCJzcmMiLCJwYXJlbnROb2RlIiwiaW5zZXJ0QmVmb3JlIiwiYm9keSIsImFwcGVuZENoaWxkIiwiZG9jdW1lbnQiLCJsb2FkIiwiYXBwSUQiLCJzZXRTdGF0ZSIsImJlZm9yZUluaXQiLCJ1bmRlZmluZWQiLCJvblJlYWR5IiwibG9hZGVkIiwiZmJBc3luY0luaXQiLCJpbml0IiwiT2JqZWN0IiwiYXNzaWduIiwiY29va2llIiwieGZibWwiLCJ2ZXJzaW9uIiwiYXBwSWQiLCJFdmVudCIsInN1YnNjcmliZSIsInNldFRpbWVvdXQiLCJvcGVuIiwiQ3VzdG9tZXJDaGF0Iiwic2hvdyJdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBT0EsV0FBUDtBQUVBLE1BQU1DLE1BQU0sR0FBRyw4QkFBZjs7QUFVQTtBQUNBLE1BQU1DLFVBQVUsR0FBSUMsTUFBRCxJQUE2QjtBQUM5QyxNQUFJQyxNQUFNLENBQUNDLEVBQVgsRUFBZSxPQUFPLEtBQVA7O0FBQ2QsR0FBQyxTQUFTQyxlQUFULENBQXlCQyxDQUF6QixFQUE0QkMsQ0FBNUIsRUFBK0JDLEVBQS9CLEVBQW1DO0FBQ25DO0FBQ0EsVUFBTUMsR0FBRyxHQUFHSCxDQUFDLENBQUNJLG9CQUFGLENBQXVCSCxDQUF2QixFQUEwQixDQUExQixDQUFaOztBQUNBLFFBQUlELENBQUMsQ0FBQ0ssY0FBRixDQUFpQkgsRUFBakIsQ0FBSixFQUEwQjtBQUN4QjtBQUNEOztBQUNELFVBQU1JLEVBQUUsR0FBR04sQ0FBQyxDQUFDTyxhQUFGLENBQWdCTixDQUFoQixDQUFYO0FBQ0FLLElBQUFBLEVBQUUsQ0FBQ0osRUFBSCxHQUFRQSxFQUFSO0FBQ0FJLElBQUFBLEVBQUUsQ0FBQ0UsR0FBSCxHQUFVLEdBQUVkLE1BQU8sSUFBR0UsTUFBTyw0QkFBN0I7O0FBQ0EsUUFBSU8sR0FBSixFQUFTO0FBQUE7O0FBQ1AseUJBQUFBLEdBQUcsQ0FBQ00sVUFBSixvRUFBZ0JDLFlBQWhCLENBQTZCSixFQUE3QixFQUFpQ0gsR0FBakM7QUFDRCxLQUZELE1BRU87QUFDTEgsTUFBQUEsQ0FBQyxDQUFDVyxJQUFGLENBQU9DLFdBQVAsQ0FBbUJOLEVBQW5CO0FBQ0Q7QUFDRixHQWRBLEVBY0VULE1BQU0sQ0FBQ2dCLFFBZFQsRUFjbUIsUUFkbkIsRUFjNkIsZ0JBZDdCOztBQWVELFNBQU8sSUFBUDtBQUNELENBbEJEO0FBbUJBOzs7QUFFQSxNQUFNQyxJQUFJLEdBQUcsQ0FBQztBQUNaQyxFQUFBQSxLQURZO0FBRVpuQixFQUFBQSxNQUFNLEdBQUcsT0FGRztBQUdab0IsRUFBQUEsUUFIWTtBQUlaQyxFQUFBQSxVQUFVLEdBQUcsTUFBTUMsU0FKUDtBQUtaQyxFQUFBQSxPQUFPLEdBQUcsTUFBTUQ7QUFMSixDQUFELEtBWUU7QUFDYixRQUFNRSxNQUFNLEdBQUd6QixVQUFVLENBQUNDLE1BQUQsQ0FBekIsQ0FEYSxDQUViOztBQUNBLE1BQUl3QixNQUFKLEVBQVk7QUFDVkgsSUFBQUEsVUFBVTs7QUFDVnBCLElBQUFBLE1BQU0sQ0FBQ3dCLFdBQVAsR0FBcUIsWUFBVztBQUM5QnhCLE1BQUFBLE1BQU0sQ0FBQ0MsRUFBUCxDQUFVd0IsSUFBVixDQUNFQyxNQUFNLENBQUNDLE1BQVAsQ0FDRTtBQUNFQyxRQUFBQSxNQUFNLEVBQUUsSUFEVjtBQUVFQyxRQUFBQSxLQUFLLEVBQUUsSUFGVDtBQUdFQyxRQUFBQSxPQUFPLEVBQUU7QUFIWCxPQURGLEVBTUVaLEtBQUssR0FBRztBQUFFYSxRQUFBQSxLQUFLLEVBQUViO0FBQVQsT0FBSCxHQUFzQixFQU43QixDQURGO0FBVUFsQixNQUFBQSxNQUFNLENBQUNDLEVBQVAsQ0FBVStCLEtBQVYsQ0FBZ0JDLFNBQWhCLENBQTBCLG1CQUExQixFQUErQyxNQUM3QztBQUNBQyxNQUFBQSxVQUFVLENBQUMsTUFBTTtBQUNmZixRQUFBQSxRQUFRLENBQUMsVUFBRCxDQUFSO0FBQ0FHLFFBQUFBLE9BQU87QUFDUixPQUhTLEVBR1AsSUFITyxDQUZaO0FBT0QsS0FsQkQ7QUFtQkQ7O0FBRUQsU0FBT0MsTUFBUDtBQUNELENBdkNEOztBQXlDQSxNQUFNWSxJQUFJLEdBQUcsTUFBWTtBQUN2QnZDLEVBQUFBLFdBQVcsQ0FDVDtBQUFBOztBQUFBLFdBQU0sQ0FBQyxnQkFBQ0ksTUFBTSxDQUFDQyxFQUFSLGdFQUFDLFdBQVdtQyxZQUFaLGtEQUFDLHNCQUF5QkMsSUFBMUIsQ0FBUDtBQUFBLEdBRFMsRUFFVDtBQUNBLFFBQU1ILFVBQVUsQ0FBQyxNQUFNbEMsTUFBTSxDQUFDQyxFQUFQLENBQVVtQyxZQUFWLENBQXVCQyxJQUF2QixDQUE0QixJQUE1QixDQUFQLEVBQTBDLElBQTFDLENBSFAsQ0FBWDtBQUtELENBTkQ7O0FBUUEsZUFBZTtBQUNieEMsRUFBQUEsTUFEYTtBQUVib0IsRUFBQUEsSUFGYTtBQUdia0IsRUFBQUE7QUFIYSxDQUFmIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RhdGUgfSBmcm9tICcuLi90eXBlcydcbmltcG9ydCB3YWl0Rm9yTG9hZCBmcm9tICcuLi91dGlscy93YWl0Rm9yTG9hZCdcblxuY29uc3QgZG9tYWluID0gJ2h0dHBzOi8vY29ubmVjdC5mYWNlYm9vay5uZXQnXG5cbmRlY2xhcmUgZ2xvYmFsIHtcbiAgaW50ZXJmYWNlIFdpbmRvdyB7XG4gICAgLy9lc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueVxuICAgIEZCOiBhbnlcbiAgICBmYkFzeW5jSW5pdDogKCkgPT4gdm9pZFxuICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5jb25zdCBsb2FkU2NyaXB0ID0gKGxvY2FsZTogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gIGlmICh3aW5kb3cuRkIpIHJldHVybiBmYWxzZVxuICA7KGZ1bmN0aW9uIGxvYWRGYWNlYm9va1NESyhkLCBzLCBpZCkge1xuICAgIC8vIGZldGNoIGN1c3RvbWVyY2hhdC5qc1xuICAgIGNvbnN0IGZqcyA9IGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUocylbMF1cbiAgICBpZiAoZC5nZXRFbGVtZW50QnlJZChpZCkpIHtcbiAgICAgIHJldHVyblxuICAgIH1cbiAgICBjb25zdCBqcyA9IGQuY3JlYXRlRWxlbWVudChzKSBhcyBhbnlcbiAgICBqcy5pZCA9IGlkXG4gICAganMuc3JjID0gYCR7ZG9tYWlufS8ke2xvY2FsZX0vc2RrL3hmYm1sLmN1c3RvbWVyY2hhdC5qc2BcbiAgICBpZiAoZmpzKSB7XG4gICAgICBmanMucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKGpzLCBmanMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGQuYm9keS5hcHBlbmRDaGlsZChqcylcbiAgICB9XG4gIH0pKHdpbmRvdy5kb2N1bWVudCwgJ3NjcmlwdCcsICdmYWNlYm9vay1qc3NkaycpXG4gIHJldHVybiB0cnVlXG59XG4vKiBlc2xpbnQtZW5hYmxlICovXG5cbmNvbnN0IGxvYWQgPSAoe1xuICBhcHBJRCxcbiAgbG9jYWxlID0gJ2VuX1VTJyxcbiAgc2V0U3RhdGUsXG4gIGJlZm9yZUluaXQgPSAoKSA9PiB1bmRlZmluZWQsXG4gIG9uUmVhZHkgPSAoKSA9PiB1bmRlZmluZWRcbn06IHtcbiAgYXBwSUQ/OiBzdHJpbmdcbiAgbG9jYWxlPzogc3RyaW5nXG4gIHNldFN0YXRlOiAoc3RhdGU6IFN0YXRlKSA9PiB2b2lkXG4gIGJlZm9yZUluaXQ/OiAoKSA9PiB2b2lkXG4gIG9uUmVhZHk/OiAoKSA9PiB2b2lkXG59KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGxvYWRlZCA9IGxvYWRTY3JpcHQobG9jYWxlKVxuICAvLyBDb250aW51ZSBhcyBsb25nIGFzIG1lc3NlbmdlciBoYXNu4oCZdCBhbHJlYWR5IGJlZW4gaW5pdGlhbGlzZWQuXG4gIGlmIChsb2FkZWQpIHtcbiAgICBiZWZvcmVJbml0KClcbiAgICB3aW5kb3cuZmJBc3luY0luaXQgPSBmdW5jdGlvbigpIHtcbiAgICAgIHdpbmRvdy5GQi5pbml0KFxuICAgICAgICBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGNvb2tpZTogdHJ1ZSxcbiAgICAgICAgICAgIHhmYm1sOiB0cnVlLFxuICAgICAgICAgICAgdmVyc2lvbjogJ3Y2LjAnXG4gICAgICAgICAgfSxcbiAgICAgICAgICBhcHBJRCA/IHsgYXBwSWQ6IGFwcElEIH0gOiB7fVxuICAgICAgICApXG4gICAgICApXG4gICAgICB3aW5kb3cuRkIuRXZlbnQuc3Vic2NyaWJlKCdjdXN0b21lcmNoYXQubG9hZCcsICgpID0+XG4gICAgICAgIC8vIEFsbG93IG1lc3NlbmdlciB0byBjb21wbGV0ZSBsb2FkaW5nIGJlZm9yZSByZW1vdmluZyBmYWtlIHdpZGdldFxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRTdGF0ZSgnY29tcGxldGUnKVxuICAgICAgICAgIG9uUmVhZHkoKVxuICAgICAgICB9LCAzMDAwKVxuICAgICAgKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2FkZWRcbn1cblxuY29uc3Qgb3BlbiA9ICgpOiB2b2lkID0+IHtcbiAgd2FpdEZvckxvYWQoXG4gICAgKCkgPT4gISF3aW5kb3cuRkI/LkN1c3RvbWVyQ2hhdD8uc2hvdyxcbiAgICAvLyBtZXNzZW5nZXIgaXMgc2xvdyB0byBzaG93IG9uY2UgaXQgaGFzIGxvYWRlZFxuICAgICgpID0+IHNldFRpbWVvdXQoKCkgPT4gd2luZG93LkZCLkN1c3RvbWVyQ2hhdC5zaG93KHRydWUpLCAyMDAwKVxuICApXG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgZG9tYWluLFxuICBsb2FkLFxuICBvcGVuXG59XG4iXX0=