pussy-ts/src/router.tsx

import {
  Link,
  HashRouter,
  BrowserRouter,
  Routes,
  Route,
  Navigate,
  useParams,
} from 'react-router-dom';
import App from './containers/application/App';
import Home from './containers/home/home';
import Governance from './containers/governance/governance';
import ProposalsDetail from './containers/governance/proposalsDetail';
import Validators from './containers/Validators/Validators';
import Story from './containers/story/story';
import TxsDetails from './containers/txs/txsDetails';
import ValidatorsDetails from './containers/validator';
import Ipfs from './containers/ipfs/ipfs';
import BlockDetails from './containers/blok/blockDetails';
import Txs from './containers/txs';
import Block from './containers/blok';
import ParamNetwork from './containers/parameters';
import TrollBoxx from './containers/trollBox';
import ForceQuitter from './containers/forceGraph/forceQuitter';
import TestKeplr from './containers/testKeplre';
import Mint from './containers/mint';
import Market from './containers/market';
import Oracle from './containers/oracle';
import Objects from './containers/Objects';
import Nebula from './containers/nebula';
import Movie from './containers/movie';
import PortalCitizenship from './containers/portal';
import PortalGift from './containers/portal/gift';
import Release from './containers/portal/release';
import Temple from './containers/temple/Temple';
// import IpfsSettings from './features/ipfs/ipfsSettings';
import {
  Codes,
  CodePage,
  ContractPage,
  DashboardPage,
} from './containers/wasm';
import Help from './containers/help';
import MainPartal from './containers/portal/mainPortal';

import { routes } from './routes';
import WarpDashboardPools from './containers/warp/WarpDashboardPools';
import Warp from './containers/warp/Warp';
import Robot from './pages/robot/Robot';
import SigmaWrapper from './containers/sigma/SigmaWrapper';
import Keys from './pages/Keys/Keys';
import Teleport from './pages/teleport/Teleport';
import OracleLanding from './pages/oracle/landing/OracleLanding';
import Learn from './pages/oracle/Learn/Learn';
import ToOracleAsk from './pages/redirects/ToOracleAsk';
import Social from './pages/Social/Social';
import Brain from './pages/Brain/Brain';

type WrappedRouterProps = {
  children: React.ReactNode;
};

function WrappedRouter({ children }: WrappedRouterProps) {
  return process.env.IPFS_DEPLOY ? (
    <HashRouter>{children}</HashRouter>
  ) : (
    <BrowserRouter>{children}</BrowserRouter>
  );
}

function PageNotExist() {
  return (
    <div
      style={{
        textAlign: 'center',
      }}
    >
      page not exists
      <br />
      <Link to={routes.home.path}>Home</Link>
    </div>
  );
}

function CheckPassportPage() {
  const params = useParams();

  if (params.username?.includes('@')) {
    return <Robot />;
  }

  return <PageNotExist />;
}

function ValidatorsRedirect() {
  const { status } = useParams();
  return <Navigate to={`/sphere/${status}`} />;
}

function RedirectToRobot() {
  const params = useParams();
  return <Navigate to={`/neuron/${params.address}`} replace />;
}

function RedirectToRobotBrain() {
  const params = useParams();
  return <Navigate to={`/neuron/${params.agent}/brain`} replace />;
}

function AppRouter() {
  return (
    <WrappedRouter>
      <Routes>
        <Route path={routes.home.path} element={<App />}>
          <Route index element={<OracleLanding />} />

          <Route path="/robot/*" element={<Robot />} />
          <Route path="/ipfs" element={<Navigate to="/robot/drive" />} />

          <Route path={routes.temple.path} element={<Temple />} />
          <Route path={routes.neuron.path} element={<Robot />} />

          <Route path={routes.oracle.learn.path} element={<Learn />} />

          <Route path="/oracle/stats" element={<Home />} />
          <Route path="/oracle-old" element={<Oracle />} />

          <Route path="/ipfs/:query" element={<ToOracleAsk />} />
          <Route path={routes.oracle.ask.path} element={<Ipfs />} />

          <Route
            path="/oracle"
            element={<Navigate to={routes.oracle.path} />}
          />

          <Route
            path="/search"
            element={<Navigate to={routes.oracle.path} />}
          />
          <Route path="/search/:query" element={<ToOracleAsk />} />

          <Route path="/senate" element={<Governance />} />
          <Route
            path={routes.senateProposal.path}
            element={<ProposalsDetail />}
          />

          {/* old links - start */}
          <Route path="/halloffame" element={<Navigate to="/sphere" />} />
          <Route path="/halloffame/:status" element={<ValidatorsRedirect />} />
          <Route path="/mint" element={<Navigate to={routes.hfr.path} />} />
          {/* old links - end */}

          <Route path="/sphere" element={<Validators />} />
          <Route path="/sphere/:status" element={<Validators />} />
          <Route path="/episode-1" element={<Story />} />
          <Route path="/quitter" element={<ForceQuitter />} />

          {['/graph', '/brain'].map((path) => (
            <Route key={path} path={path} element={<Brain />} />
          ))}

          <Route path="/pgraph/:agent" element={<RedirectToRobotBrain />} />

          <Route path="network/bostrom">
            <Route path="tx" element={<Txs />} />
            <Route path="tx/:txHash" element={<TxsDetails />} />

            <Route path="contract/:address" element={<RedirectToRobot />} />
            <Route
              path="contract/:address/:tab"
              element={<RedirectToRobot />}
            />

            <Route path="hero/:address/" element={<ValidatorsDetails />} />
            <Route path="hero/:address/:tab" element={<ValidatorsDetails />} />
            <Route path="parameters" element={<ParamNetwork />} />
            <Route path="parameters/:param" element={<ParamNetwork />} />
            <Route path="blocks" element={<Block />} />
            <Route path="blocks/:idBlock" element={<BlockDetails />} />
          </Route>
          <Route path="/degenbox" element={<TrollBoxx />} />
          <Route path="/test" element={<TestKeplr />} />
          <Route path={routes.hfr.path} element={<Mint />} />
          <Route path="/token" element={<Market />} />
          <Route path="/token/:tab" element={<Market />} />
          <Route path="/particles" element={<Objects />} />

          <Route path="/teleport/*" element={<Teleport />} />

          {/* <Route path="/teleport" element={<TeleportMainScreen />} />
          <Route path="/teleport/swap" element={<Swap />} />
          <Route path="/teleport/send" element={<Send />} />
          <Route path="/teleport/bridge" element={<Bridge />} /> */}

          <Route path="/warp" element={<WarpDashboardPools />} />
          <Route path="/warp/:tab" element={<Warp />} />
          <Route path="/genesis" element={<Movie />} />
          <Route path="/citizenship" element={<PortalCitizenship />} />
          <Route path="/gift" element={<PortalGift />} />
          <Route path="/release" element={<Release />} />
          <Route path="/portal" element={<MainPartal />} />
          {/* wasm */}
          <Route path="/libs" element={<Codes />} />
          <Route path="/libs/:codeId" element={<CodePage />} />
          <Route path="/contracts" element={<DashboardPage />} />
          <Route
            path="/contracts/:contractAddress"
            element={<ContractPage />}
          />
          {/* network */}
          {/* <Route path="/networks" element={<ListNetwork />} />
          <Route path="/networks/add" element={<CustomNetwork />} />
          <Route path="/networks/:networkId" element={<DetailsNetwork />} /> */}
          <Route path="/help" element={<Help />} />

          <Route path="/sigma" element={<SigmaWrapper />} />

          <Route path="/nebula" element={<Nebula />} />

          <Route path="/keys" element={<Keys />} />

          <Route path={routes.social.path} element={<Social />} />

          {/* works as 404 also */}
          <Route path=":username/*" element={<CheckPassportPage />} />
          <Route path="*" element={<PageNotExist />} />
        </Route>
      </Routes>
    </WrappedRouter>
  );
}

export default AppRouter;

Synonyms

cyb/src/router.tsx

Neighbours