From ffeab6a94ee161886ee74dc9ee2a9c6e36eeb231 Mon Sep 17 00:00:00 2001 From: Jaco Greeff Date: Sat, 5 Sep 2020 12:26:25 +0200 Subject: [PATCH] Detect WASM (via util) (#3612) * Detect WASM (via util) * Linting * Cleanups. --- packages/page-contracts/src/Codes/Upload.tsx | 4 ++-- packages/react-components/src/InputWasm.tsx | 7 +++---- packages/react-components/src/LinkExternal.tsx | 4 ---- packages/react-params/src/Param/Code.tsx | 9 +++------ 4 files changed, 8 insertions(+), 16 deletions(-) diff --git a/packages/page-contracts/src/Codes/Upload.tsx b/packages/page-contracts/src/Codes/Upload.tsx index 59169fc187..ef0ee47405 100644 --- a/packages/page-contracts/src/Codes/Upload.tsx +++ b/packages/page-contracts/src/Codes/Upload.tsx @@ -8,7 +8,7 @@ import React, { useCallback, useMemo, useState } from 'react'; import { SubmittableResult } from '@polkadot/api'; import { Button, InputAddress, InputFile, Modal, TxButton } from '@polkadot/react-components'; import { useAccountId, useApi, useNonEmptyString, useToggle } from '@polkadot/react-hooks'; -import { compactAddLength, isNull } from '@polkadot/util'; +import { compactAddLength, isNull, isWasm } from '@polkadot/util'; import { ABI, InputName } from '../shared'; import store from '../store'; @@ -31,7 +31,7 @@ function Upload (): React.ReactElement { const _onAddWasm = useCallback( (wasm: Uint8Array, name: string): void => { - setWasm([compactAddLength(wasm), wasm.subarray(0, 4).toString() === '0,97,115,109']); + setWasm([compactAddLength(wasm), isWasm(wasm)]); setName(name); }, [setName] diff --git a/packages/react-components/src/InputWasm.tsx b/packages/react-components/src/InputWasm.tsx index c1fd76dbbc..3f3525bf9d 100644 --- a/packages/react-components/src/InputWasm.tsx +++ b/packages/react-components/src/InputWasm.tsx @@ -3,7 +3,8 @@ // of the Apache-2.0 license. See the LICENSE file for details. import React, { useCallback } from 'react'; -import { compactAddLength } from '@polkadot/util'; +import { compactAddLength, isWasm } from '@polkadot/util'; + import InputFile, { InputFileProps } from './InputFile'; interface Props extends Omit { @@ -14,9 +15,7 @@ interface Props extends Omit { function InputWasm ({ isValidRef, onChange, ...props }: Props): React.ReactElement { const _onChange = useCallback( (wasm: Uint8Array, name: string): void => { - const isWasmValid = wasm.subarray(0, 4).toString() === '0,97,115,109'; // '\0asm' - - isValidRef.current = isWasmValid; + isValidRef.current = isWasm(wasm); onChange(compactAddLength(wasm), name); }, [isValidRef, onChange] diff --git a/packages/react-components/src/LinkExternal.tsx b/packages/react-components/src/LinkExternal.tsx index 65767a2706..34871689ab 100644 --- a/packages/react-components/src/LinkExternal.tsx +++ b/packages/react-components/src/LinkExternal.tsx @@ -88,10 +88,6 @@ export default React.memo(styled(LinkExternal)` .links { white-space: nowrap; - - span+span { - margin-left: 0.25rem; - } } } diff --git a/packages/react-params/src/Param/Code.tsx b/packages/react-params/src/Param/Code.tsx index ecb8fdcf6c..a5a8b40bba 100644 --- a/packages/react-params/src/Param/Code.tsx +++ b/packages/react-params/src/Param/Code.tsx @@ -5,6 +5,7 @@ import { Props } from '../types'; import React, { useCallback, useState } from 'react'; +import { isWasm } from '@polkadot/util'; import Bytes from './Bytes'; import BytesFile from './File'; @@ -12,15 +13,11 @@ import BytesFile from './File'; function Code ({ className = '', defaultValue, isDisabled, isError, label, onChange, onEnter, onEscape, type, withLabel }: Props): React.ReactElement { const [isValid, setIsValid] = useState(false); - // TODO: Validate that we have actual proper WASM code const _onChange = useCallback( (value: Uint8Array): void => { - const isValid = value.length !== 0; + const isValid = isWasm(value); - onChange && onChange({ - isValid, - value - }); + onChange && onChange({ isValid, value }); setIsValid(isValid); }, [onChange]