hiesoftrd 1 tahun lalu
induk
melakukan
89c4727431
2 mengubah file dengan 219 tambahan dan 0 penghapusan
  1. 36 0
      frontend/src/routes/Route.js
  2. 183 0
      frontend/src/routes/index.js

+ 36 - 0
frontend/src/routes/Route.js

@@ -0,0 +1,36 @@
+import React, { useContext } from "react";
+import { Route as RouterRoute, Redirect } from "react-router-dom";
+
+import { AuthContext } from "../context/Auth/AuthContext";
+import BackdropLoading from "../components/BackdropLoading";
+
+const Route = ({ component: Component, isPrivate = false, ...rest }) => {
+	const { isAuth, loading } = useContext(AuthContext);
+
+	if (!isAuth && isPrivate) {
+		return (
+			<>
+				{loading && <BackdropLoading />}
+				<Redirect to={{ pathname: "/login", state: { from: rest.location } }} />
+			</>
+		);
+	}
+
+	if (isAuth && !isPrivate) {
+		return (
+			<>
+				{loading && <BackdropLoading />}
+				<Redirect to={{ pathname: "/", state: { from: rest.location } }} />;
+			</>
+		);
+	}
+
+	return (
+		<>
+			{loading && <BackdropLoading />}
+			<RouterRoute {...rest} component={Component} />
+		</>
+	);
+};
+
+export default Route;

+ 183 - 0
frontend/src/routes/index.js

@@ -0,0 +1,183 @@
+import React, { useEffect, useState } from "react";
+import { BrowserRouter, Switch } from "react-router-dom";
+import { ToastContainer } from "react-toastify";
+
+import LoggedInLayout from "../layout";
+import Dashboard from "../pages/Dashboard/";
+import TicketResponsiveContainer from "../pages/TicketResponsiveContainer";
+import Signup from "../pages/Signup/";
+import Login from "../pages/Login/";
+import Connections from "../pages/Connections/";
+import SettingsCustom from "../pages/SettingsCustom/";
+import Financeiro from "../pages/Financeiro/";
+import Users from "../pages/Users";
+import Contacts from "../pages/Contacts/";
+import Queues from "../pages/Queues/";
+import Tags from "../pages/Tags/";
+import MessagesAPI from "../pages/MessagesAPI/";
+import Helps from "../pages/Helps/";
+import ContactLists from "../pages/ContactLists/";
+import ContactListItems from "../pages/ContactListItems/";
+// import Companies from "../pages/Companies/";
+import QuickMessages from "../pages/QuickMessages/";
+import Kanban from "../pages/Kanban";
+import { AuthProvider } from "../context/Auth/AuthContext";
+import { TicketsContextProvider } from "../context/Tickets/TicketsContext";
+import { WhatsAppsProvider } from "../context/WhatsApp/WhatsAppsContext";
+import Route from "./Route";
+import Schedules from "../pages/Schedules";
+import Campaigns from "../pages/Campaigns";
+import CampaignsConfig from "../pages/CampaignsConfig";
+import CampaignReport from "../pages/CampaignReport";
+import Annoucements from "../pages/Annoucements";
+import Chat from "../pages/Chat";
+import ToDoList from "../pages/ToDoList/";
+import Subscription from "../pages/Subscription/";
+import Files from "../pages/Files/";
+import Prompts from "../pages/Prompts";
+import QueueIntegration from "../pages/QueueIntegration";
+import ForgetPassword from "../pages/ForgetPassWord/"; // Reset PassWd
+
+const Routes = () => {
+  const [showCampaigns, setShowCampaigns] = useState(false);
+
+  useEffect(() => {
+    const cshow = localStorage.getItem("cshow");
+    if (cshow !== undefined) {
+      setShowCampaigns(true);
+    }
+  }, []);
+
+  return (
+    <BrowserRouter>
+      <AuthProvider>
+        <TicketsContextProvider>
+          <Switch>
+            <Route exact path="/login" component={Login} />
+            <Route exact path="/signup" component={Signup} />
+			      <Route exact path="/forgetpsw" component={ForgetPassword} /> 
+            {/* <Route exact path="/create-company" component={Companies} /> */}
+            <WhatsAppsProvider>
+              <LoggedInLayout>
+                <Route exact path="/" component={Dashboard} isPrivate />
+                <Route
+                  exact
+                  path="/tickets/:ticketId?"
+                  component={TicketResponsiveContainer}
+                  isPrivate
+                />
+                <Route
+                  exact
+                  path="/connections"
+                  component={Connections}
+                  isPrivate
+                />
+                <Route
+                  exact
+                  path="/quick-messages"
+                  component={QuickMessages}
+                  isPrivate
+                />
+                <Route
+                  exact
+                  path="/todolist"
+                  component={ToDoList}
+                  isPrivate
+                  />
+                <Route
+                  exact
+                  path="/schedules"
+                  component={Schedules}
+                  isPrivate
+                />
+                <Route exact path="/tags" component={Tags} isPrivate />
+                <Route exact path="/contacts" component={Contacts} isPrivate />
+                <Route exact path="/helps" component={Helps} isPrivate />
+                <Route exact path="/users" component={Users} isPrivate />
+                <Route exact path="/files" component={Files} isPrivate />
+                <Route exact path="/prompts" component={Prompts} isPrivate />
+                <Route exact path="/queue-integration" component={QueueIntegration} isPrivate />
+
+                <Route
+                  exact
+                  path="/messages-api"
+                  component={MessagesAPI}
+                  isPrivate
+                />
+                <Route
+                  exact
+                  path="/settings"
+                  component={SettingsCustom}
+                  isPrivate
+                />
+				        <Route 
+                  exact
+                  path="/kanban"
+                  component={Kanban}
+                  isPrivate
+                />
+                <Route
+                  exact
+                  path="/financeiro"
+                  component={Financeiro}
+                  isPrivate
+                />
+                <Route exact path="/queues" component={Queues} isPrivate />
+                <Route
+                  exact
+                  path="/announcements"
+                  component={Annoucements}
+                  isPrivate
+                />
+                <Route
+                  exact
+                  path="/subscription"
+                  component={Subscription}
+                  isPrivate
+                />
+                <Route exact path="/chats/:id?" component={Chat} isPrivate />
+                {showCampaigns && (
+                  <>
+                    <Route
+                      exact
+                      path="/contact-lists"
+                      component={ContactLists}
+                      isPrivate
+                    />
+                    <Route
+                      exact
+                      path="/contact-lists/:contactListId/contacts"
+                      component={ContactListItems}
+                      isPrivate
+                    />
+                    <Route
+                      exact
+                      path="/campaigns"
+                      component={Campaigns}
+                      isPrivate
+                    />
+                    <Route
+                      exact
+                      path="/campaign/:campaignId/report"
+                      component={CampaignReport}
+                      isPrivate
+                    />
+                    <Route
+                      exact
+                      path="/campaigns-config"
+                      component={CampaignsConfig}
+                      isPrivate
+                    />
+                  </>
+                )}
+              </LoggedInLayout>
+            </WhatsAppsProvider>
+          </Switch>
+          <ToastContainer autoClose={3000} />
+        </TicketsContextProvider>
+      </AuthProvider>
+    </BrowserRouter>
+  );
+};
+
+export default Routes;