import {CXF} from '../typings/cxf'; import {IPushMessage, IPushMessageData} from './common'; import {encodePing} from './ping'; export function decodePayload(data: string): T { return JSON.parse(atob(data)); } export const bfOnGrowthFundRewardAdapter = (handler: (data: IPushMessageData) => void) => ([data]: [IPushMessage]): void => { handler(decodePayload(data.payload)); }; export const epOnGrowthFundRewardAdapter = (handler: (data: IPushMessageData) => void) => ([[nothing, dataStr]]: [[string, string]]): void => { const data = JSON.parse(dataStr) as { playerId: number, payload: string }; handler(decodePayload(data.payload)); }; require('@goodgamestudios/cxf-ready').then((cxf: CXF) => { const onPushHandler = ({id, payload}: IPushMessageData) => { console.log('PUSH MESSAGE', id, payload); if (id === 'shop_zipcodes.open') { cxf.emit('cxf.dialog.close'); cxf.emit('cxf.dialog.open', `${process.env.ZIPCODE_URL}/?token=${encodePing(cxf)}`); } }; cxf.on('CUSTOM_CXF_PUSH', () => bfOnGrowthFundRewardAdapter(onPushHandler)); cxf.on('505', () => onPushHandler); cxf.on('cxp', () => epOnGrowthFundRewardAdapter(onPushHandler)); });