ImportQr.tsx 1.13 KiB
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import { QrScanAddress } from '@polkadot/react-qr'
import React, { useState } from 'react'
Andrei Eres's avatar
Andrei Eres committed
import Address from '../components/Address'
Andrei Eres's avatar
Andrei Eres committed
import Header from '../components/Header'
Andrei Eres's avatar
Andrei Eres committed
import { createAccountExternal } from '../utils/messaging'
import { goHome } from '../utils/routing'
Andrei Eres's avatar
Andrei Eres committed

interface QrAccount {
  isAddress: boolean
  content: string
  genesisHash: string
  name?: string
}

const ImportQr: React.FC = () => {
  const [account, setAccount] = useState<QrAccount>()

Andrei Eres's avatar
Andrei Eres committed
  const onCreate = () => {
Andrei Eres's avatar
Andrei Eres committed
    if (account) {
      createAccountExternal(
        account.name || '',
        account.content,
        account.genesisHash
      )
Andrei Eres's avatar
Andrei Eres committed
        .then(goHome)
Andrei Eres's avatar
Andrei Eres committed
        .catch((error: Error) => console.error(error))
    }
  }

  return (
    <>
Andrei Eres's avatar
Andrei Eres committed
      <Header showBack text={'Scan Address Qr'} />
Andrei Eres's avatar
Andrei Eres committed
      {!account && <QrScanAddress onScan={setAccount} />}
      {account && (
        <>
Andrei Eres's avatar
Andrei Eres committed
          <Address {...account} address={account.content} name={account.name} />
Andrei Eres's avatar
Andrei Eres committed
          <button disabled={!account.name} onClick={onCreate}>
Andrei Eres's avatar
Andrei Eres committed
            Add the account with identified address
Andrei Eres's avatar
Andrei Eres committed
          </button>
        </>
      )}
    </>
  )
}

export default ImportQr