@spindox/superenalotto-bridge
Version:
76 lines (58 loc) • 1.64 kB
JavaScript
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,
};