import { Tab, Tablist } from '@cybercongress/gravity';
import { useState } from 'react';
import RenderAbiExecute from './RenderAbiExecute';
import RenderAbiQuery from './RenderAbiQuery';
import SelectFile from './SelectFile';
import useParseJsonSchema from './useParseJsonSchema';

// import testJson from '../query_msg.json';
// import testJsonTx from '../cw20_execute_msg.json';

function Btn({ onSelect, checkedSwitch, text, ...props }) {
  return (
    <Tab
      isSelected={checkedSwitch}
      onSelect={onSelect}
      color="#36d6ae"
      boxShadow="0px 0px 10px #36d6ae"
      minWidth="100px"
      marginX={0}
      paddingX={10}
      paddingY={10}
      fontSize="18px"
      height={42}
      {...props}
    >
      {text}
    </Tab>
  );
}

function RenderAbi({ contractAddress, updateFnc }) {
  const [selected, setSelected] = useState('query');
  const [fileAbiQuery, setFileAbiQuery] = useState(null);
  const [fileAbiExecute, setFileAbiExecute] = useState(null);
  const { dataObj: schemaQuery } = useParseJsonSchema(fileAbiQuery);
  const { dataObj: schemaExecute } = useParseJsonSchema(fileAbiExecute);

  let content;

  if (selected === 'query') {
    if (fileAbiQuery === null) {
      content = <SelectFile stateCallback={setFileAbiQuery} />;
    } else {
      content = <RenderAbiQuery schema={schemaQuery} contractAddress={contractAddress} />;
    }
  }

  if (selected === 'execute') {
    if (fileAbiExecute === null) {
      content = <SelectFile text="Upload execute schema" stateCallback={setFileAbiExecute} />;
    } else {
      content = (
        <RenderAbiExecute
          schema={schemaExecute}
          contractAddress={contractAddress}
          updateFnc={updateFnc}
        />
      );
    }
  }

  return (
    <div>
      <Tablist
        display="grid"
        gridTemplateColumns="150px 150px"
        gridGap="8px"
        justifyContent="flex-start"
        marginBottom={30}
      >
        <Btn
          text="Query"
          checkedSwitch={selected === 'query'}
          onSelect={() => setSelected('query')}
        />
        <Btn
          text="Execute"
          checkedSwitch={selected === 'execute'}
          onSelect={() => setSelected('execute')}
        />
      </Tablist>

      {content}
    </div>
  );
}

export default RenderAbi;

Synonyms

pussy-ts/src/containers/wasm/index.jsx
pussy-ts/src/containers/trollBox/index.jsx
cyb/src/containers/movie/index.jsx
cyb/src/components/battery/index.jsx
cyb/src/components/vitalik/index.jsx
pussy-ts/src/containers/oracle/index.jsx
cyb/src/containers/wasm/index.jsx
cyb/src/components/ButtonNetwork/index.jsx
pussy-ts/src/containers/blok/index.jsx
pussy-ts/src/components/battery/index.jsx
cyb/src/components/searchSnippet/index.jsx
pussy-ts/src/containers/validator/index.jsx
pussy-ts/src/containers/Objects/index.jsx
cyb/src/containers/parameters/index.jsx
pussy-ts/src/containers/parameters/index.jsx
pussy-ts/src/containers/market/index.jsx
cyb/src/containers/oracle/index.jsx
cyb/src/components/particle/index.jsx
pussy-ts/src/components/numberCurrency/index.jsx
cyb/src/components/numberCurrency/index.jsx
pussy-ts/src/containers/testKeplre/index.jsx
pussy-ts/src/components/valueImg/index.jsx
pussy-ts/src/components/ButtonNetwork/index.jsx
pussy-ts/src/containers/network/index.jsx
pussy-ts/src/components/particle/index.jsx
pussy-ts/src/containers/movie/index.jsx
cyb/src/containers/market/index.jsx
pussy-ts/src/containers/help/index.jsx
pussy-ts/src/components/statusTooltip/index.jsx
cyb/src/containers/help/index.jsx
pussy-ts/src/components/vitalik/index.jsx
cyb/src/containers/testPage/index.jsx
pussy-ts/src/components/searchSnippet/index.jsx
cyb/src/components/valueImg/index.jsx
cyb/src/components/statusTooltip/index.jsx
cyb/src/containers/trollBox/index.jsx
pussy-ts/src/containers/Validators/components/index.jsx
pussy-ts/src/containers/portal/stateComponent/index.jsx
pussy-ts/src/containers/parameters/tabs/index.jsx
pussy-ts/src/containers/wasm/codes/index.jsx
pussy-ts/src/containers/wasm/contract/index.jsx
cyb/src/containers/wasm/contract/index.jsx
cyb/src/containers/portal/stateComponent/index.jsx
cyb/src/containers/parameters/tabs/index.jsx
cyb/src/containers/temple/components/canvasOne/index.jsx
cyb/src/containers/wasm/codes/code/index.jsx
pussy-ts/src/containers/portal/components/progressCard/index.jsx
pussy-ts/src/containers/temple/components/canvasOne/index.jsx
pussy-ts/src/containers/portal/components/ActionBar/index.jsx
cyb/src/containers/wasm/codes/codePage/index.jsx
pussy-ts/src/containers/portal/components/nextUnfreeze/index.jsx
pussy-ts/src/containers/portal/components/Released/index.jsx
cyb/src/containers/portal/components/progressCard/index.jsx
cyb/src/containers/portal/components/currentGift/index.jsx
pussy-ts/src/containers/wasm/codes/code/index.jsx
pussy-ts/src/containers/wasm/contract/renderAbi/index.jsx
pussy-ts/src/containers/portal/components/currentGift/index.jsx
cyb/src/containers/portal/components/Released/index.jsx
cyb/src/containers/portal/components/imgNetwork/index.jsx
pussy-ts/src/containers/portal/components/imgNetwork/index.jsx
pussy-ts/src/containers/energy/ui/card/index.jsx
pussy-ts/src/containers/wasm/codes/codePage/index.jsx
cyb/src/containers/portal/components/nextUnfreeze/index.jsx
cyb/src/containers/energy/ui/card/index.jsx
pussy-ts/src/containers/sigma/components/cardUi/ChartTotal/index.jsx
pussy-ts/src/containers/sigma/components/cardUi/DetailsBalance/index.jsx
pussy-ts/src/containers/sigma/components/cardUi/BtnArrow/index.jsx
cyb/src/containers/sigma/components/cardUi/ChartTotal/index.jsx
cyb/src/containers/sigma/components/cardUi/BtnArrow/index.jsx
cyb/src/containers/sigma/components/cardUi/DetailsBalance/index.jsx

Neighbours