sprinque-js-sdk-wip
Version:
UI kit to implement Pay by Invoice with Sprinque
48 lines (47 loc) • 2.09 kB
JavaScript
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;