UNPKG

@cosmos-kit/core

Version:

cosmos-kit wallet connector core package

91 lines (90 loc) 2.35 kB
import { State } from '../types'; import { getWalletStatusFromState } from '../utils'; export class StateBase { _mutable; actions; _env; logger; constructor() { this._mutable = { state: State.Init }; } get env() { return this._env; } setEnv(env) { this._env = env; } setActions = (actions) => { this.actions = actions; }; get isMobile() { return this.env?.device === 'mobile'; } get mutable() { return this._mutable; } get state() { return this.mutable.state; } get isInit() { return this.state === 'Init'; } get isDone() { return this.state === 'Done'; } get isError() { return this.state === 'Error'; } get isPending() { return this.state === 'Pending'; } get data() { return this.mutable.data; } get message() { return this.mutable.message; } setState(state) { this.logger?.debug(`[State Change] ${this.state} (${this.walletStatus}) -> ${state} (${this.chainName}/${this.walletName})`); this._mutable.state = state; this.actions?.state?.(state); } setData(data) { this._mutable.data = data; this.actions?.data?.(data); } setMessage(message) { this.logger?.debug(`[Message Set] ${message} (${this.chainName}/${this.walletName})`); this._mutable.message = message; this.actions?.message?.(message); } reset() { this.setData(undefined); this.setMessage(undefined); this.setState(State.Init); } get walletStatus() { return getWalletStatusFromState(this.state, this.message); } get isWalletOnceConnect() { return this.isWalletConnected || this.isWalletError; } get isWalletConnecting() { return this.walletStatus === 'Connecting'; } get isWalletConnected() { return this.walletStatus === 'Connected'; } get isWalletDisconnected() { return this.walletStatus === 'Disconnected'; } get isWalletRejected() { return this.walletStatus === 'Rejected'; } get isWalletNotExist() { return this.walletStatus === 'NotExist'; } get isWalletError() { return this.walletStatus === 'Error'; } }