@bigmi/client
Version:
Reactive primitives for Bitcoin apps.
77 lines (76 loc) • 1.74 kB
JavaScript
import { deepEqual } from "@bigmi/core";
//#region src/actions/getAccount.ts
let previousAccount;
function getAccount(config) {
const uid = config.state.current;
const connection = config.state.connections.get(uid);
const accounts = connection?.accounts;
const account = accounts?.[0];
const chain = config.chains.find((chain) => chain.id === connection?.chainId);
const status = config.state.status;
let result;
switch (status) {
case "connected":
result = {
account,
accounts,
chain,
chainId: connection.chainId,
connector: connection.connector,
isConnected: true,
isConnecting: false,
isDisconnected: false,
isReconnecting: false,
status
};
break;
case "reconnecting":
result = {
account,
accounts,
chain,
chainId: connection?.chainId,
connector: connection?.connector,
isConnected: !!account,
isConnecting: false,
isDisconnected: false,
isReconnecting: true,
status
};
break;
case "connecting":
result = {
account,
accounts,
chain,
chainId: connection?.chainId,
connector: connection?.connector,
isConnected: false,
isConnecting: true,
isDisconnected: false,
isReconnecting: false,
status
};
break;
case "disconnected":
result = {
account: void 0,
accounts: void 0,
chain: void 0,
chainId: void 0,
connector: void 0,
isConnected: false,
isConnecting: false,
isDisconnected: true,
isReconnecting: false,
status
};
break;
}
if (previousAccount && deepEqual(previousAccount, result)) return previousAccount;
previousAccount = result;
return result;
}
//#endregion
export { getAccount };
//# sourceMappingURL=getAccount.js.map