jcwallet/src/common/WalletEvent.ts
2022-10-28 17:50:14 +08:00

37 lines
1.0 KiB
TypeScript

var createWalletEvents = () => ({
events: {},
emit(event, ...args) {
for (let i of this.events[event] || []) {
i(...args);
}
},
on(event, cb) {
(this.events[event] = this.events[event] || []).push(cb);
return () =>
(this.events[event] = this.events[event].filter((i) => i !== cb));
},
once(event, cb) {
var callback = (...args) => {
this.events[event] = this.events[event].filter((i) => i !== callback);
cb(...args);
};
(this.events[event] = this.events[event] || []).push(callback);
},
listen(event, cb) {
(this.events[event] = this.events[event] || []).push(cb);
return () =>
(this.events[event] = this.events[event].filter((i) => i !== cb));
},
remove(event, cb) {
this.events[event] = this.events[event].filter((i) => i !== cb);
},
});
export { createWalletEvents };
export const WALLET_CHAIN_CHANGE = "wallet_chain_change";
export const WALLET_ACCOUNT_CHANGE = "wallet_account_change";
export const WALLET_TOKEN_TYPE_CHANGE = "wallet_token_type_change";