pussy-ts/src/containers/wasm/contract/renderAbi/useParseJsonSchema.js

import { useState, useEffect } from 'react';

const useParseJsonSchema = (fileAbi) => {
  const [dataObj, setDataObj] = useState([]);

  useEffect(() => {
    if (fileAbi !== null) {
      const objArr = [];
      const copyObjGlobal = { ...fileAbi };
      delete copyObjGlobal.title;
      if (fileAbi.oneOf) {
        delete copyObjGlobal.oneOf;
        Object.keys(fileAbi.oneOf).forEach((key) =>
          objArr.push({
            ...copyObjGlobal,
            ...fileAbi.oneOf[key],
          })
        );
      } else if (fileAbi.allOf) {
        delete copyObjGlobal.allOf;
        Object.keys(fileAbi.allOf).forEach((key) =>
          objArr.push({
            ...copyObjGlobal,
            ...fileAbi.allOf[key],
          })
        );
      } else {
        objArr.push({
          ...fileAbi,
        });
      }
      setDataObj(objArr);
    } else {
      setDataObj([]);
    }
  }, [fileAbi]);

  return { dataObj };
};

export default useParseJsonSchema;

Synonyms

cyb/src/containers/wasm/contract/renderAbi/useParseJsonSchema.js

Neighbours