UNPKG

@munityapps/sdk-frontend

Version:

An SDK to provide easier used of unified API

134 lines (133 loc) 5.49 kB
var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var api_url = "https://api.munityapps.com"; var sse_url = "https://sse.munityapps.com"; function decodeJWT(token) { var _a = token.split("."), header = _a[0], payload = _a[1], signature = _a[2]; var decodeBase64 = function (str) { return JSON.parse(atob(str.replace(/-/g, '+').replace(/_/g, '/'))); }; return { header: decodeBase64(header), payload: decodeBase64(payload), signature: signature }; } export function listenMunityEvent(uuid, cb, config) { if (config === void 0) { config = {}; } if (config['api_url']) { api_url = config['api_url']; } if (config['sse_url']) { sse_url = config['sse_url']; } var url = "".concat(sse_url, "/events/?uuid=").concat(uuid); console.log("connecting to ".concat(uuid, " over: ").concat(url)); var eventSource = new EventSource(url); eventSource.onerror = function () { cb("ERROR"); console.error("SSE connection error."); eventSource === null || eventSource === void 0 ? void 0 : eventSource.close(); eventSource = null; }; eventSource.onopen = function () { cb("SUCCESS"); console.log("SSE connected."); }; eventSource.addEventListener("Integration", function (event) { var data = JSON.parse(event.data); console.log("Integration event", data); var munityEvent = new CustomEvent("MUNITY_EVENT", { detail: { data: data, 'type': 'integration' } }); document.dispatchEvent(munityEvent); }); eventSource.addEventListener("Pipeline", function (event) { var data = JSON.parse(event.data); console.log("Pipeline event", data); var munityEvent = new CustomEvent("MUNITY_EVENT", { detail: __assign(__assign({}, data), { 'type': 'pipeline' }) }); document.dispatchEvent(munityEvent); }); eventSource.addEventListener("Customer", function (event) { var data = JSON.parse(event.data); console.log("Customer event", data); var munityEvent = new CustomEvent("MUNITY_EVENT", { detail: __assign(__assign({}, data), { 'type': 'customer' }) }); document.dispatchEvent(munityEvent); }); eventSource.addEventListener("report_generated", function (event) { var data = JSON.parse(event.data); console.log("Customer event", data); var munityEvent = new CustomEvent("MUNITY_EVENT", { detail: __assign(__assign({}, data), { 'type': 'report_generated' }) }); document.dispatchEvent(munityEvent); }); } export function connect(connector, SECRET, cb, config) { if (cb === void 0) { cb = null; } if (config === void 0) { config = {}; } if (config['api_url']) { api_url = config['api_url']; } if (config['sse_url']) { sse_url = config['sse_url']; } var _a = decodeJWT(SECRET), header = _a.header, payload = _a.payload, signature = _a.signature; if (payload.flow === 'redirect') { window.location.href = "".concat(api_url, "/v1/integration/oauth/connect/").concat(connector, "?secret=").concat(SECRET); } else { var popup_1 = window.open("".concat(api_url, "/v1/integration/oauth/connect/").concat(connector, "?secret=").concat(SECRET), "_blank", "popup,left=100,top=100,width=640,height=640"); return new Promise(function (resolve, reject) { var eventSource = new EventSource("".concat(sse_url, "/events/?uuid=").concat(payload.workspace_id)); eventSource.addEventListener("Integration", function (event) { var data = JSON.parse(event.data); if (data.type === 'installed') { if (cb) { cb({ "status": "success", "message": data, }); } clearInterval(checkPopupStatusInterval); eventSource.close(); eventSource = null; resolve(true); } }); var checkPopupStatusInterval = setInterval(function () { if (popup_1 === null || popup_1 === void 0 ? void 0 : popup_1.closed) { clearInterval(checkPopupStatusInterval); eventSource.close(); eventSource = null; if (cb) { cb({ "status": "error", "message": "User close popup", }); } return reject({ "status": "error", "message": "User close popup", }); } }, 200); eventSource.onerror = function () { console.error("SSE connection error."); eventSource === null || eventSource === void 0 ? void 0 : eventSource.close(); eventSource = null; }; }); } }