Signing.tsx 1.29 KiB
Newer Older
Andrei Eres's avatar
Andrei Eres committed
import { SignerPayloadJSON } from '@polkadot/types/types'
import { useStore } from 'nanostores/react'
Andrei Eres's avatar
Andrei Eres committed
import React, { useState } from 'react'
Andrei Eres's avatar
Andrei Eres committed
import Header from '../components/Header'
Andrei Eres's avatar
Andrei Eres committed
import { signRequests } from '../stores/signRequests'
Andrei Eres's avatar
Andrei Eres committed
import SigningRequest from './SigningRequest'
import TransactionIndex from './TransactionIndex'
Andrei Eres's avatar
Andrei Eres committed

const Signing: React.FC = () => {
Andrei Eres's avatar
Andrei Eres committed
  const requests = useStore(signRequests)
Andrei Eres's avatar
Andrei Eres committed
  const [idx, setIdx] = useState(0)
  const request = requests[idx]
Andrei Eres's avatar
Andrei Eres committed
  const isTransaction = !!(request?.request?.payload as SignerPayloadJSON)
    ?.blockNumber

Andrei Eres's avatar
Andrei Eres committed
  const onNextClick = () => setIdx((i) => Math.min(i + 1, requests.length))
  const onPreviousClick = () => setIdx((i) => Math.max(i - 1, 0))
Andrei Eres's avatar
Andrei Eres committed

  return (
    <>
Andrei Eres's avatar
Andrei Eres committed
      <Header text={isTransaction ? 'Transaction' : 'Sign message'} />
Andrei Eres's avatar
Andrei Eres committed
      {requests.length > 1 && (
        <TransactionIndex
Andrei Eres's avatar
Andrei Eres committed
          index={idx}
Andrei Eres's avatar
Andrei Eres committed
          onNextClick={onNextClick}
          onPreviousClick={onPreviousClick}
          totalItems={requests.length}
        />
      )}
Andrei Eres's avatar
Andrei Eres committed
      <SigningRequest
Andrei Eres's avatar
Andrei Eres committed
        account={request.account}
Andrei Eres's avatar
Andrei Eres committed
        buttonText={isTransaction ? 'Sign the transaction' : 'Sign the message'}
Andrei Eres's avatar
Andrei Eres committed
        isFirst={idx === 0}
Andrei Eres's avatar
Andrei Eres committed
        request={request.request}
        signId={request.id}
        url={request.url}
      />
    </>
  )
}

export default Signing