Untitled

 avatar
unknown
jsx
2 years ago
1.4 kB
6
Indexable
import React from "react";

import { Typography } from "neetoui";
import { Redirect, Route, Switch } from "react-router-dom";

import PrivateRoute from "components/Common/PrivateRoute";
import { useAuthState } from "contexts/auth";
import { useSettingsState } from "contexts/settings";

import {
  PASSWORD_VERIFICATION_ROUTE,
  ARTICLES_PREVIEW_ROUTE,
  PUBLIC_PATH,
  PASSWORD_VERIFICATION_PATH,
} from "../routeConstants";

const Public = () => {
  const { siteName, passwordProtectionStatus } = useSettingsState();
  const { authToken } = useAuthState();
  const isLoggedIn = !passwordProtectionStatus || !!authToken;

  return (
    <>
      <header className="w-full text-center">
        <Typography className="my-3" style="h4">
          {siteName}
        </Typography>
        <hr />
      </header>
      <Switch>
        <Route
          component={PASSWORD_VERIFICATION_ROUTE.component}
          path={PASSWORD_VERIFICATION_ROUTE.path}
        />
        <PrivateRoute
          component={ARTICLES_PREVIEW_ROUTE.component}
          condition={isLoggedIn}
          path={ARTICLES_PREVIEW_ROUTE.path}
          redirectRoute={PASSWORD_VERIFICATION_PATH}
        />
        <Redirect
          from={PUBLIC_PATH}
          to={isLoggedIn ? "/public/articles/" : PASSWORD_VERIFICATION_PATH}
        />
      </Switch>
    </>
  );
};

export default Public;
Editor is loading...