UNPKG

sprinque-js-sdk-wip

Version:

UI kit to implement Pay by Invoice with Sprinque

48 lines (47 loc) 2.09 kB
import * as FullStory from '@fullstory/browser'; import i18next from 'i18next'; import { SprinqueModal } from './src/inject-web-component'; import { SPRINQUE_CUSTOM_ELEMENT_NAME } from './src/constants'; import { removeSprinqueModal } from './src/helpers'; import { i18nResources } from './src/languages'; export class Sprinque { constructor() { this.open = async ({ getTokenUrl = '', token = '', env = 'sandbox', lang = 'en', onBuyerResponse, onOrderCreated, order, buyerId, }) => { if (onBuyerResponse) SprinqueModal.onBuyerResponse = onBuyerResponse; if (onOrderCreated) SprinqueModal.onOrderCreated = onOrderCreated; if (order) SprinqueModal.order = order; // fetch temporary token let respData; if (getTokenUrl) { const resp = await fetch(`${getTokenUrl}`); respData = await resp.json(); } if ((respData && respData.access) || token) { // initialized translations await i18next.init({ lng: lang, debug: process.env.NODE_ENV === 'development', resources: i18nResources, }); document .getElementsByTagName('body')[0] .insertAdjacentHTML('beforeend', `<sprinque-modal token=${token || respData.access} getTokenUrl=${getTokenUrl} env=${env} ${buyerId && `buyer-id=${buyerId}`} lang=${lang} />`); window.customElements.get(SPRINQUE_CUSTOM_ELEMENT_NAME) || window.customElements.define(SPRINQUE_CUSTOM_ELEMENT_NAME, SprinqueModal); } // Fullstory tracking if (location.hostname !== 'localhost') { FullStory.init({ orgId: 'o-1ESJKB-na1' }); } }; this.close = () => { removeSprinqueModal(); }; } } const sprinque = new Sprinque(); export const open = sprinque.open; export const close = sprinque.close;