ghost-keychain/packages/extension-ui/src/Popup/Signing/index.tsx
Jaco Greeff c9f4c2e4a6
Provide metadata from external source (#288)
* Provide metadata from external source

* Listing via metadata interface

* Updates

* UI update

* Storage & end-to-end
2020-03-26 11:01:33 +01:00

53 lines
1.8 KiB
TypeScript

// Copyright 2019-2020 @polkadot/extension-ui authors & contributors
// This software may be modified and distributed under the terms
// of the Apache-2.0 license. See the LICENSE file for details.
import React, { useContext, useEffect, useMemo, useState } from 'react';
import { Header, Loading, SigningReqContext } from '../../components';
import Request from './Request';
import TransactionIndex from './TransactionIndex';
import { SigningRequest } from '@polkadot/extension-base/background/types';
function isInnerTransaction (signingRequest: SigningRequest): boolean {
return 'blockNumber' in signingRequest.request.inner;
}
export default function Signing (): React.ReactElement<{}> {
const requests = useContext(SigningReqContext);
const [requestIndex, setRequestIndex] = useState(0);
const isTransaction = useMemo(
() => isInnerTransaction(requests[requestIndex]),
[requests, requestIndex]
);
useEffect(() => {
if (requestIndex >= requests.length) {
setRequestIndex(requests.length - 1);
}
}, [requests]);
return requests[requestIndex] ? (
<>
<Header text={isTransaction ? 'Transaction' : 'Sign message'}>
{requests.length > 1 && (
<TransactionIndex
index={requestIndex}
totalItems={requests.length}
onNextClick={(): void => setRequestIndex(requestIndex + 1)}
onPreviousClick={(): void => setRequestIndex(requestIndex - 1)}
/>
)}
</Header>
<Request
isFirst={requestIndex === 0}
account={requests[requestIndex].account}
request={requests[requestIndex].request}
signId={requests[requestIndex].id}
url={requests[requestIndex].url}
buttonText={isTransaction ? 'Sign the transaction' : 'Sign the message'}
/>
</>
) : <Loading />;
}