function EV(eventName, arg) { if (Object.values(EV.enum).indexOf(eventName) === -1) { return console.warn('Unregistered event', eventName, 'registered events:', EV.enum); } EV.callbacks = EV.callbacks || {}; // static variable EV.callbacks[eventName] = EV.callbacks[eventName] || []; if (typeof arg !== 'function') { // then its an argument console.log('got event', eventName, '...'); for (let cc of EV.callbacks[eventName]) { console.log('dispatching event', eventName); cc(arg); } } else { // its a callback. subscribe it to event console.log('someone subscribed to', eventName); EV.callbacks[eventName].push(arg); } } EV.enum = { WALLETS_COUNT_CHANGED: 'WALLETS_COUNT_CHANGED', TRANSACTIONS_COUNT_CHANGED: 'TRANSACTIONS_COUNT_CHANGED', CREATE_TRANSACTION_NEW_DESTINATION_ADDRESS: 'CREATE_TRANSACTION_NEW_DESTINATION_ADDRESS', // RECEIVE_ADDRESS_CHANGED: 'RECEIVE_ADDRESS_CHANGED', }; module.exports = EV;