tb-react-live-chat-loader
Version:
Implement live chat in your react app without taking a performance hit.
60 lines (49 loc) • 6.13 kB
JavaScript
import waitForLoad from "../utils/waitForLoad";
const domain = 'https://userlike-cdn-widgets.s3-eu-west-1.amazonaws.com';
/* eslint-disable */
const loadScript = providerKey => {
if (window.userlike) return false;
var d = document;
function l() {
var _x$parentNode;
var s = d.createElement('script');
s.type = 'text/javascript';
s.async = true;
s.src = `${domain}/${providerKey}.js`;
var x = d.getElementsByTagName('script')[0];
(_x$parentNode = x.parentNode) === null || _x$parentNode === void 0 ? void 0 : _x$parentNode.insertBefore(s, x);
}
l();
return true;
};
/* eslint-enable */
const load = ({
providerKey,
setState,
beforeInit = () => undefined,
onReady = () => undefined
}) => {
const loaded = loadScript(providerKey); // Continue as long as userlike hasn’t already been initialised.
if (loaded) {
beforeInit();
waitForLoad(() => !!window.userlike, // Allow userlike to complete loading before removing fake widget
() => setTimeout(() => {
setState('complete');
onReady();
}, 2000));
}
return true;
};
const open = () => {
waitForLoad(() => {
var _window$userlike;
return !!((_window$userlike = window.userlike) !== null && _window$userlike !== void 0 && _window$userlike.userlikeStartChat);
}, // userlike is slow to show once it has loaded
() => setTimeout(window.userlike.userlikeStartChat, 1000));
};
export default {
domain,
load,
open
};
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wcm92aWRlcnMvdXNlcmxpa2UudHMiXSwibmFtZXMiOlsid2FpdEZvckxvYWQiLCJkb21haW4iLCJsb2FkU2NyaXB0IiwicHJvdmlkZXJLZXkiLCJ3aW5kb3ciLCJ1c2VybGlrZSIsImQiLCJkb2N1bWVudCIsImwiLCJzIiwiY3JlYXRlRWxlbWVudCIsInR5cGUiLCJhc3luYyIsInNyYyIsIngiLCJnZXRFbGVtZW50c0J5VGFnTmFtZSIsInBhcmVudE5vZGUiLCJpbnNlcnRCZWZvcmUiLCJsb2FkIiwic2V0U3RhdGUiLCJiZWZvcmVJbml0IiwidW5kZWZpbmVkIiwib25SZWFkeSIsImxvYWRlZCIsInNldFRpbWVvdXQiLCJvcGVuIiwidXNlcmxpa2VTdGFydENoYXQiXSwibWFwcGluZ3MiOiJBQUNBLE9BQU9BLFdBQVA7QUFFQSxNQUFNQyxNQUFNLEdBQUcseURBQWY7O0FBYUE7QUFDQSxNQUFNQyxVQUFVLEdBQUlDLFdBQUQsSUFBa0M7QUFDbkQsTUFBSUMsTUFBTSxDQUFDQyxRQUFYLEVBQXFCLE9BQU8sS0FBUDtBQUVyQixNQUFJQyxDQUFDLEdBQUdDLFFBQVI7O0FBQ0EsV0FBU0MsQ0FBVCxHQUFhO0FBQUE7O0FBQ1gsUUFBSUMsQ0FBQyxHQUFHSCxDQUFDLENBQUNJLGFBQUYsQ0FBZ0IsUUFBaEIsQ0FBUjtBQUNBRCxJQUFBQSxDQUFDLENBQUNFLElBQUYsR0FBUyxpQkFBVDtBQUNBRixJQUFBQSxDQUFDLENBQUNHLEtBQUYsR0FBVSxJQUFWO0FBQ0FILElBQUFBLENBQUMsQ0FBQ0ksR0FBRixHQUFTLEdBQUVaLE1BQU8sSUFBR0UsV0FBWSxLQUFqQztBQUNBLFFBQUlXLENBQUMsR0FBR1IsQ0FBQyxDQUFDUyxvQkFBRixDQUF1QixRQUF2QixFQUFpQyxDQUFqQyxDQUFSO0FBQ0EscUJBQUFELENBQUMsQ0FBQ0UsVUFBRixnRUFBY0MsWUFBZCxDQUEyQlIsQ0FBM0IsRUFBOEJLLENBQTlCO0FBQ0Q7O0FBQ0ROLEVBQUFBLENBQUM7QUFFRCxTQUFPLElBQVA7QUFDRCxDQWZEO0FBZ0JBOzs7QUFFQSxNQUFNVSxJQUFJLEdBQUcsQ0FBQztBQUNaZixFQUFBQSxXQURZO0FBRVpnQixFQUFBQSxRQUZZO0FBR1pDLEVBQUFBLFVBQVUsR0FBRyxNQUFNQyxTQUhQO0FBSVpDLEVBQUFBLE9BQU8sR0FBRyxNQUFNRDtBQUpKLENBQUQsS0FVRTtBQUNiLFFBQU1FLE1BQU0sR0FBR3JCLFVBQVUsQ0FBQ0MsV0FBRCxDQUF6QixDQURhLENBRWI7O0FBQ0EsTUFBSW9CLE1BQUosRUFBWTtBQUNWSCxJQUFBQSxVQUFVO0FBQ1ZwQixJQUFBQSxXQUFXLENBQ1QsTUFBTSxDQUFDLENBQUNJLE1BQU0sQ0FBQ0MsUUFETixFQUVUO0FBQ0EsVUFDRW1CLFVBQVUsQ0FBQyxNQUFNO0FBQ2ZMLE1BQUFBLFFBQVEsQ0FBQyxVQUFELENBQVI7QUFDQUcsTUFBQUEsT0FBTztBQUNSLEtBSFMsRUFHUCxJQUhPLENBSkgsQ0FBWDtBQVNEOztBQUVELFNBQU8sSUFBUDtBQUNELENBM0JEOztBQTZCQSxNQUFNRyxJQUFJLEdBQUcsTUFBWTtBQUN2QnpCLEVBQUFBLFdBQVcsQ0FDVDtBQUFBOztBQUFBLFdBQU0sQ0FBQyxzQkFBQ0ksTUFBTSxDQUFDQyxRQUFSLDZDQUFDLGlCQUFpQnFCLGlCQUFsQixDQUFQO0FBQUEsR0FEUyxFQUVUO0FBQ0EsUUFBTUYsVUFBVSxDQUFDcEIsTUFBTSxDQUFDQyxRQUFQLENBQWdCcUIsaUJBQWpCLEVBQW9DLElBQXBDLENBSFAsQ0FBWDtBQUtELENBTkQ7O0FBUUEsZUFBZTtBQUNiekIsRUFBQUEsTUFEYTtBQUViaUIsRUFBQUEsSUFGYTtBQUdiTyxFQUFBQTtBQUhhLENBQWYiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdGF0ZSB9IGZyb20gJy4uL3R5cGVzJ1xuaW1wb3J0IHdhaXRGb3JMb2FkIGZyb20gJy4uL3V0aWxzL3dhaXRGb3JMb2FkJ1xuXG5jb25zdCBkb21haW4gPSAnaHR0cHM6Ly91c2VybGlrZS1jZG4td2lkZ2V0cy5zMy1ldS13ZXN0LTEuYW1hem9uYXdzLmNvbSdcblxuZGVjbGFyZSBnbG9iYWwge1xuICBpbnRlcmZhY2UgV2luZG93IHtcbiAgICAvL2VzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55XG4gICAgdXNlcmxpa2U6IHtcbiAgICAgIHVzZXJsaWtlUmVhZHk6ICgpID0+IHZvaWRcbiAgICAgIHVzZXJsaWtlU3RhcnRDaGF0OiAoKSA9PiB2b2lkXG4gICAgICB1c2VybGlrZVF1aXRDaGF0OiAoKSA9PiB2b2lkXG4gICAgfVxuICB9XG59XG5cbi8qIGVzbGludC1kaXNhYmxlICovXG5jb25zdCBsb2FkU2NyaXB0ID0gKHByb3ZpZGVyS2V5OiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgaWYgKHdpbmRvdy51c2VybGlrZSkgcmV0dXJuIGZhbHNlXG5cbiAgdmFyIGQgPSBkb2N1bWVudFxuICBmdW5jdGlvbiBsKCkge1xuICAgIHZhciBzID0gZC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxuICAgIHMudHlwZSA9ICd0ZXh0L2phdmFzY3JpcHQnXG4gICAgcy5hc3luYyA9IHRydWVcbiAgICBzLnNyYyA9IGAke2RvbWFpbn0vJHtwcm92aWRlcktleX0uanNgXG4gICAgdmFyIHggPSBkLmdldEVsZW1lbnRzQnlUYWdOYW1lKCdzY3JpcHQnKVswXVxuICAgIHgucGFyZW50Tm9kZT8uaW5zZXJ0QmVmb3JlKHMsIHgpXG4gIH1cbiAgbCgpXG5cbiAgcmV0dXJuIHRydWVcbn1cbi8qIGVzbGludC1lbmFibGUgKi9cblxuY29uc3QgbG9hZCA9ICh7XG4gIHByb3ZpZGVyS2V5LFxuICBzZXRTdGF0ZSxcbiAgYmVmb3JlSW5pdCA9ICgpID0+IHVuZGVmaW5lZCxcbiAgb25SZWFkeSA9ICgpID0+IHVuZGVmaW5lZFxufToge1xuICBwcm92aWRlcktleTogc3RyaW5nXG4gIHNldFN0YXRlOiAoc3RhdGU6IFN0YXRlKSA9PiB2b2lkXG4gIGJlZm9yZUluaXQ/OiAoKSA9PiB2b2lkXG4gIG9uUmVhZHk/OiAoKSA9PiB2b2lkXG59KTogYm9vbGVhbiA9PiB7XG4gIGNvbnN0IGxvYWRlZCA9IGxvYWRTY3JpcHQocHJvdmlkZXJLZXkpXG4gIC8vIENvbnRpbnVlIGFzIGxvbmcgYXMgdXNlcmxpa2UgaGFzbuKAmXQgYWxyZWFkeSBiZWVuIGluaXRpYWxpc2VkLlxuICBpZiAobG9hZGVkKSB7XG4gICAgYmVmb3JlSW5pdCgpXG4gICAgd2FpdEZvckxvYWQoXG4gICAgICAoKSA9PiAhIXdpbmRvdy51c2VybGlrZSxcbiAgICAgIC8vIEFsbG93IHVzZXJsaWtlIHRvIGNvbXBsZXRlIGxvYWRpbmcgYmVmb3JlIHJlbW92aW5nIGZha2Ugd2lkZ2V0XG4gICAgICAoKSA9PlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICBzZXRTdGF0ZSgnY29tcGxldGUnKVxuICAgICAgICAgIG9uUmVhZHkoKVxuICAgICAgICB9LCAyMDAwKVxuICAgIClcbiAgfVxuXG4gIHJldHVybiB0cnVlXG59XG5cbmNvbnN0IG9wZW4gPSAoKTogdm9pZCA9PiB7XG4gIHdhaXRGb3JMb2FkKFxuICAgICgpID0+ICEhd2luZG93LnVzZXJsaWtlPy51c2VybGlrZVN0YXJ0Q2hhdCxcbiAgICAvLyB1c2VybGlrZSBpcyBzbG93IHRvIHNob3cgb25jZSBpdCBoYXMgbG9hZGVkXG4gICAgKCkgPT4gc2V0VGltZW91dCh3aW5kb3cudXNlcmxpa2UudXNlcmxpa2VTdGFydENoYXQsIDEwMDApXG4gIClcbn1cblxuZXhwb3J0IGRlZmF1bHQge1xuICBkb21haW4sXG4gIGxvYWQsXG4gIG9wZW5cbn1cbiJdfQ==