Accounts.tsx 1.02 KiB
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import { useStore } from '@nanostores/react'
Andrei Eres's avatar
Andrei Eres committed
import React, { useEffect } from 'react'
Andrei Eres's avatar
Andrei Eres committed
import styled from 'styled-components'
Andrei Eres's avatar
Andrei Eres committed
import Key from '../components/Key'
Andrei Eres's avatar
Andrei Eres committed
import { accountsStore } from '../../stores/accounts'
Andrei Eres's avatar
Andrei Eres committed
import {
  addHeaderAction,
  importHeaderAction,
  resetHeaderActions,
Andrei Eres's avatar
Andrei Eres committed
} from '../../stores/headerActions'
Andrei Eres's avatar
Andrei Eres committed
import { BaseProps } from '../types'
Andrei Eres's avatar
Andrei Eres committed
import NoAccounts from './NoAccounts'
Andrei Eres's avatar
Andrei Eres committed

Andrei Eres's avatar
Andrei Eres committed
const Accounts: React.FC<BaseProps> = ({ className }) => {
Andrei Eres's avatar
Andrei Eres committed
  const accounts = useStore(accountsStore)
Andrei Eres's avatar
Andrei Eres committed

Andrei Eres's avatar
Andrei Eres committed
  useEffect(() => {
Andrei Eres's avatar
Andrei Eres committed
    if (accounts.length > 0) addHeaderAction(importHeaderAction)
Andrei Eres's avatar
Andrei Eres committed
    return () => resetHeaderActions()
Andrei Eres's avatar
Andrei Eres committed
  }, [accounts.length])
Andrei Eres's avatar
Andrei Eres committed

Andrei Eres's avatar
Andrei Eres committed
  if (accounts.length === 0) return <NoAccounts />
Andrei Eres's avatar
Andrei Eres committed

  return (
Andrei Eres's avatar
Andrei Eres committed
    <div className={className}>
Andrei Eres's avatar
Andrei Eres committed
      <h1>All keys</h1>
Andrei Eres's avatar
Andrei Eres committed
      {accounts.map((account) => (
Andrei Eres's avatar
Andrei Eres committed
        <Key
          address={account.address}
          genesisHash={account.genesisHash}
          name={account.name}
          key={account.address}
        />
Andrei Eres's avatar
Andrei Eres committed
      ))}
    </div>
Andrei Eres's avatar
Andrei Eres committed
  )
}

export default styled(Accounts)`
Andrei Eres's avatar
Andrei Eres committed
  height: 100%;
Andrei Eres's avatar
Andrei Eres committed
`