accounts.ts 677 B
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import { AccountJson } from '@polkadot/extension-base/background/types'
import { createDerived, createStore } from 'nanostores'
Andrei Eres's avatar
Andrei Eres committed
import { buildHierarchy } from '../utils/buildHierarchy'
import { subscribeAccounts } from '../messaging/uiActions'
Andrei Eres's avatar
Andrei Eres committed

export const accounts = createStore<AccountJson[]>(() => {
  accounts.set([])
  subscribeAccounts(setAccounts).catch(console.error)
})

export const accountNamesByAddress = createDerived(accounts, (list) =>
  list.reduce((res, account) => {
    res[account.address] = account.name
    return res
  }, {} as Record<string, string | undefined>)
)

Andrei Eres's avatar
Andrei Eres committed
const setAccounts = (list: AccountJson[]) => {
Andrei Eres's avatar
Andrei Eres committed
  accounts.set(buildHierarchy(list))
Andrei Eres's avatar
Andrei Eres committed
}