ghost-portal/packages/react-components/src/InputWasm.tsx
Jaco Greeff 15c6b90b6a
Introduce React.memo for react-components (#2404)
* Introduce React.memo for react-components

* Api with memo

* Cleanup Dropdown

* Adjust toggle highlight

* Chart exports
2020-03-17 12:49:42 +01:00

32 lines
991 B
TypeScript

// Copyright 2017-2020 @polkadot/react-components 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 from 'react';
import { compactAddLength } from '@polkadot/util';
import InputFile, { InputFileProps } from './InputFile';
interface Props extends Omit<InputFileProps, 'accept'> {
isValidRef: React.MutableRefObject<boolean>;
onChange: (contents: Uint8Array, name?: string) => void;
}
function InputWasm ({ isValidRef, onChange, ...props }: Props): React.ReactElement<Props> {
const _onChange = (wasm: Uint8Array, name: string): void => {
const isWasmValid = wasm.subarray(0, 4).toString() === '0,97,115,109'; // '\0asm'
isValidRef.current = isWasmValid;
onChange(compactAddLength(wasm), name);
};
return (
<InputFile
{...props}
accept='application/wasm'
onChange={_onChange}
/>
);
}
export default React.memo(InputWasm);