cyb/src/hooks/useTracesNetworks.ts

import { useEffect, useState } from 'react';
import { ObjectKey } from 'src/types/data';
import { Network } from 'src/types/hub';
import { Networks } from 'src/types/networks';
import { useNetworks } from './useHub';

export function isNativeChainId(chain: string) {
  // temp
  if (chain && Networks[chain.toUpperCase()]) {
    return true;
  }
  // also temp
  if (chain && chain === 'space-pussy') {
    return true;
  }
  return false;
}

const findChainIdInNetworkList = (chainId: string, networks: ObjectKey<Network>) => {
  if (Object.hasOwn(networks, chainId)) {
    return networks[chainId];
  }

  return undefined;
};

export const useTracesNetworks = (chainIdTraces: string) => {
  const { networks } = useNetworks();
  const [chainInfo, setChainInfo] = useState({
    chainId: chainIdTraces,
    chainName: chainIdTraces,
    chainIdImageCid: '',
  });

  useEffect(() => {
    if (networks) {
      let infoTemp = {};
      const chainInfoFromList = findChainIdInNetworkList(chainIdTraces, networks);

      if (chainInfoFromList) {
        const { chain_id: chainId, name: chainName, logo: chainIdImageCid } = chainInfoFromList;
        infoTemp = {
          chainId,
          chainName,
          chainIdImageCid,
        };
      }

      if (Object.keys(infoTemp).length > 0) {
        setChainInfo((item) => ({ ...item, ...infoTemp }));
      }
    } else {
      const infoTemp = {
        chainId: chainIdTraces,
        chainName: chainIdTraces,
        chainIdImageCid: '',
      };
      setChainInfo((item) => ({ ...item, ...infoTemp }));
    }
  }, [chainIdTraces, networks]);

  return { chainInfo };
};

Neighbours