UNPKG

@spindox/superenalotto-bridge

Version:
76 lines (58 loc) 1.64 kB
import venice from '@spindox/venice'; import { setupCordovaBridge, disconnectCordovaBridge } from '@spindox/cordova-venice-bridge'; import Logger from './logger'; const JS_CHANNEL_SUPERENALOTTO_KEY = 'sisal.superenalotto.guest'; const logger = Logger.get(JS_CHANNEL_SUPERENALOTTO_KEY); const defaultOptions = { handlers: {}, log: false, }; const connect = (iframe, options = {}, onReady = () => {}) => { const opts = Object.assign({}, defaultOptions, options); if (!opts.log) Logger.disableAll(); logger.log('connect channel'); setupCordovaBridge(iframe, { log: opts.log }); const channel = venice.channel(JS_CHANNEL_SUPERENALOTTO_KEY, { window: iframe.contentWindow, onReady: () => { logger.log('channel is ready!'); }, }); channel.subscribe('ready', (data, tx) => { logger.log('SuperEnalotto is ready!'); return onReady(data, tx); }); Object.keys(opts.handlers).forEach((key) => { channel.subscribe(key, opts.handlers[key]); logger.log(`channel subscribed to ${key}`); }); }; const disconnect = () => { logger.log('disconnect channel'); disconnectCordovaBridge(); venice.disconnect(JS_CHANNEL_SUPERENALOTTO_KEY); logger.log('channel disconnected!'); }; const auth = (type, payload) => { venice.publish({ channel: JS_CHANNEL_SUPERENALOTTO_KEY, topic: 'auth', data: { type, payload, }, }); logger.log(`authentication: ${type} message sent to SuperEnalotto`); }; const login = (data) => { auth('login', data); }; const logout = () => { auth('logout'); }; export default { connect, disconnect, login, logout, };