diff --git a/client/src/App/App.jsx b/client/src/App/App.jsx
index 4f074e5e9..8c7d9e42a 100644
--- a/client/src/App/App.jsx
+++ b/client/src/App/App.jsx
@@ -16,42 +16,28 @@ import TechPageContainer from "../pages/tech/tech.page.container";
import { setOnline } from "../redux/application/application.actions";
import { selectOnline } from "../redux/application/application.selectors";
import { checkUserSession } from "../redux/user/user.actions";
-import {
- selectBodyshop,
- selectCurrentUser,
-} from "../redux/user/user.selectors";
+import { selectBodyshop, selectCurrentUser } from "../redux/user/user.selectors";
import PrivateRoute from "../utils/private-route";
import "./App.styles.scss";
-import handleBeta from "../utils/handleBeta";
-const ResetPassword = lazy(() =>
- import("../pages/reset-password/reset-password.component")
-);
+const ResetPassword = lazy(() => import("../pages/reset-password/reset-password.component"));
const ManagePage = lazy(() => import("../pages/manage/manage.page.container"));
const SignInPage = lazy(() => import("../pages/sign-in/sign-in.page"));
const CsiPage = lazy(() => import("../pages/csi/csi.container.page"));
-const MobilePaymentContainer = lazy(() =>
- import("../pages/mobile-payment/mobile-payment.container")
-);
+const MobilePaymentContainer = lazy(() => import("../pages/mobile-payment/mobile-payment.container"));
const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser,
online: selectOnline,
- bodyshop: selectBodyshop,
+ bodyshop: selectBodyshop
});
const mapDispatchToProps = (dispatch) => ({
checkUserSession: () => dispatch(checkUserSession()),
- setOnline: (isOnline) => dispatch(setOnline(isOnline)),
+ setOnline: (isOnline) => dispatch(setOnline(isOnline))
});
-export function App({
- bodyshop,
- checkUserSession,
- currentUser,
- online,
- setOnline,
-}) {
+export function App({ bodyshop, checkUserSession, currentUser, online, setOnline }) {
const client = useClient();
useEffect(() => {
@@ -108,8 +94,6 @@ export function App({
/>
);
- handleBeta();
-
return (
}>
@@ -129,32 +113,16 @@ export function App({
-
+
-
+
-
+
-
+
diff --git a/client/src/components/header/header.component.jsx b/client/src/components/header/header.component.jsx
index d22e37d89..3109aa45e 100644
--- a/client/src/components/header/header.component.jsx
+++ b/client/src/components/header/header.component.jsx
@@ -11,9 +11,8 @@ import Icon, {
FileAddFilled,
FileAddOutlined,
FileFilled,
- //GlobalOutlined,
HomeFilled,
- ImportOutlined, InfoCircleOutlined,
+ ImportOutlined,
LineChartOutlined,
PaperClipOutlined,
PhoneOutlined,
@@ -23,56 +22,39 @@ import Icon, {
TeamOutlined,
ToolFilled,
UnorderedListOutlined,
- UserOutlined,
+ UserOutlined
} from "@ant-design/icons";
import { useTreatments } from "@splitsoftware/splitio-react";
-import {Layout, Menu, Switch, Tooltip} from "antd";
-import React, {useEffect, useState} from "react";
+import { Layout, Menu } from "antd";
+import React from "react";
import { useTranslation } from "react-i18next";
import { BsKanban } from "react-icons/bs";
-import {
- FaCalendarAlt,
- FaCarCrash,
- FaCreditCard,
- FaFileInvoiceDollar,
-} from "react-icons/fa";
+import { FaCalendarAlt, FaCarCrash, FaCreditCard, FaFileInvoiceDollar } from "react-icons/fa";
import { GiPayMoney, GiPlayerTime, GiSettingsKnobs } from "react-icons/gi";
import { IoBusinessOutline } from "react-icons/io5";
import { RiSurveyLine } from "react-icons/ri";
import { connect } from "react-redux";
import { Link } from "react-router-dom";
import { createStructuredSelector } from "reselect";
-import {
- selectRecentItems,
- selectSelectedHeader,
-} from "../../redux/application/application.selectors";
+import { selectRecentItems, selectSelectedHeader } from "../../redux/application/application.selectors";
import { setModalContext } from "../../redux/modals/modals.actions";
import { signOutStart } from "../../redux/user/user.actions";
-import {
- selectBodyshop,
- selectCurrentUser,
-} from "../../redux/user/user.selectors";
-import {handleBeta, setBeta, checkBeta} from "../../utils/handleBeta";
+import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selectors";
const mapStateToProps = createStructuredSelector({
currentUser: selectCurrentUser,
recentItems: selectRecentItems,
selectedHeader: selectSelectedHeader,
- bodyshop: selectBodyshop,
+ bodyshop: selectBodyshop
});
const mapDispatchToProps = (dispatch) => ({
- setBillEnterContext: (context) =>
- dispatch(setModalContext({ context: context, modal: "billEnter" })),
- setTimeTicketContext: (context) =>
- dispatch(setModalContext({ context: context, modal: "timeTicket" })),
- setPaymentContext: (context) =>
- dispatch(setModalContext({ context: context, modal: "payment" })),
- setReportCenterContext: (context) =>
- dispatch(setModalContext({ context: context, modal: "reportCenter" })),
+ setBillEnterContext: (context) => dispatch(setModalContext({ context: context, modal: "billEnter" })),
+ setTimeTicketContext: (context) => dispatch(setModalContext({ context: context, modal: "timeTicket" })),
+ setPaymentContext: (context) => dispatch(setModalContext({ context: context, modal: "payment" })),
+ setReportCenterContext: (context) => dispatch(setModalContext({ context: context, modal: "reportCenter" })),
signOutStart: () => dispatch(signOutStart()),
- setCardPaymentContext: (context) =>
- dispatch(setModalContext({ context: context, modal: "cardPayment" })),
+ setCardPaymentContext: (context) => dispatch(setModalContext({ context: context, modal: "cardPayment" }))
});
function Header({
@@ -86,37 +68,26 @@ function Header({
setPaymentContext,
setReportCenterContext,
recentItems,
- setCardPaymentContext,
+ setCardPaymentContext
}) {
- const { Simple_Inventory } = useTreatments(
- ["Simple_Inventory"],
- {},
- bodyshop && bodyshop.imexshopid
- );
- const { DmsAp } = useTreatments(
- ["DmsAp"],
- {},
- bodyshop && bodyshop.imexshopid
- );
- const { ImEXPay } = useTreatments(
- ["ImEXPay"],
- {},
- bodyshop && bodyshop.imexshopid
- );
- const [betaSwitch, setBetaSwitch] = useState(false);
+ const { Simple_Inventory } = useTreatments(["Simple_Inventory"], {}, bodyshop && bodyshop.imexshopid);
+ const { DmsAp } = useTreatments(["DmsAp"], {}, bodyshop && bodyshop.imexshopid);
+ const { ImEXPay } = useTreatments(["ImEXPay"], {}, bodyshop && bodyshop.imexshopid);
const { t } = useTranslation();
- useEffect(() => {
- const isBeta = checkBeta();
- setBetaSwitch(isBeta);
- }, []);
+ const deleteBetaCookie = () => {
+ const cookieExists = document.cookie.split("; ").some((row) => row.startsWith(`betaSwitchImex=`));
+ if (cookieExists) {
+ const domain = window.location.hostname.split(".").slice(-2).join(".");
+ document.cookie = `betaSwitchImex=; expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/; domain=.${domain}`;
+ console.log(`betaSwitchImex cookie deleted`);
+ } else {
+ console.log(`betaSwitchImex cookie does not exist`);
+ }
+ };
- const betaSwitchChange = (checked) => {
- setBeta(checked);
- setBetaSwitch(checked);
- handleBeta();
- }
+ deleteBetaCookie();
return (
@@ -134,11 +105,7 @@ function Header({
}>
{t("menus.header.schedule")}
- }
- title={t("menus.header.jobs")}
- >
+ } title={t("menus.header.jobs")}>
}>
{t("menus.header.activejobs")}
@@ -149,9 +116,7 @@ function Header({
{t("menus.header.parts-queue")}
}>
-
- {t("menus.header.availablejobs")}
-
+ {t("menus.header.availablejobs")}
}>
{t("menus.header.newjob")}
@@ -162,25 +127,17 @@ function Header({
}>
-
- {t("menus.header.productionlist")}
-
+ {t("menus.header.productionlist")}
}>
-
- {t("menus.header.productionboard")}
-
+ {t("menus.header.productionboard")}
}>
{t("menus.header.scoreboard")}
- }
- title={t("menus.header.customers")}
- >
+ } title={t("menus.header.customers")}>
}>
{t("menus.header.owners")}
@@ -188,36 +145,19 @@ function Header({
{t("menus.header.vehicles")}
- }
- title={t("menus.header.courtesycars")}
- >
+ } title={t("menus.header.courtesycars")}>
}>
-
- {t("menus.header.courtesycars-all")}
-
+ {t("menus.header.courtesycars-all")}
}>
-
- {t("menus.header.courtesycars-contracts")}
-
+ {t("menus.header.courtesycars-contracts")}
}>
-
- {t("menus.header.courtesycars-newcontract")}
-
+ {t("menus.header.courtesycars-newcontract")}
- }
- title={t("menus.header.accounting")}
- >
- }
- >
+ } title={t("menus.header.accounting")}>
+ }>
{t("menus.header.bills")}
{
setBillEnterContext({
actions: {},
- context: {},
+ context: {}
});
}}
>
@@ -235,13 +175,8 @@ function Header({
{Simple_Inventory.treatment === "on" && (
<>
- }
- >
-
- {t("menus.header.inventory")}
-
+ }>
+ {t("menus.header.inventory")}
>
)}
@@ -254,7 +189,7 @@ function Header({
onClick={() => {
setPaymentContext({
actions: {},
- context: null,
+ context: null
});
}}
icon={}
@@ -267,7 +202,7 @@ function Header({
onClick={() => {
setCardPaymentContext({
actions: {},
- context: {},
+ context: {}
});
}}
icon={}
@@ -277,9 +212,7 @@ function Header({
)}
}>
-
- {t("menus.header.timetickets")}
-
+ {t("menus.header.timetickets")}
{t("menus.header.entertimeticket")}
- }
- >
+ }>
-
- {t("menus.header.accounting-receivables")}
-
+ {t("menus.header.accounting-receivables")}
- {(!(
- (bodyshop && bodyshop.cdk_dealerid) ||
- (bodyshop && bodyshop.pbs_serialnumber)
- ) ||
+ {(!((bodyshop && bodyshop.cdk_dealerid) || (bodyshop && bodyshop.pbs_serialnumber)) ||
DmsAp.treatment === "on") && (
-
- {t("menus.header.accounting-payables")}
-
+ {t("menus.header.accounting-payables")}
)}
- {!(
- (bodyshop && bodyshop.cdk_dealerid) ||
- (bodyshop && bodyshop.pbs_serialnumber)
- ) && (
+ {!((bodyshop && bodyshop.cdk_dealerid) || (bodyshop && bodyshop.pbs_serialnumber)) && (
-
- {t("menus.header.accounting-payments")}
-
+ {t("menus.header.accounting-payments")}
)}
-
- {t("menus.header.export-logs")}
-
+ {t("menus.header.export-logs")}
@@ -340,19 +255,11 @@ function Header({
{t("menus.header.phonebook")}
}>
-
- {t("menus.header.temporarydocs")}
-
+ {t("menus.header.temporarydocs")}
- }
- >
+ }>
}>
-
- {t("menus.header.shop_config")}
-
+ {t("menus.header.shop_config")}
}>
{t("menus.header.dashboard")}
@@ -363,32 +270,20 @@ function Header({
onClick={() => {
setReportCenterContext({
actions: {},
- context: {},
+ context: {}
});
}}
>
{t("menus.header.reportcenter")}
- }
- >
-
- {t("menus.header.shop_vendors")}
-
+ }>
+ {t("menus.header.shop_vendors")}
}>
{t("menus.header.shop_csi")}
-
+
signOutStart()}>
{t("user.actions.signout")}
@@ -444,17 +339,6 @@ function Header({
))}
-
-
-
- Try the new ImEX Online
-
-
-
-
);
diff --git a/client/src/firebase/firebase.utils.js b/client/src/firebase/firebase.utils.js
index 9632ce148..d140c1d6b 100644
--- a/client/src/firebase/firebase.utils.js
+++ b/client/src/firebase/firebase.utils.js
@@ -5,7 +5,6 @@ import { getFirestore } from "firebase/firestore";
import { getMessaging, getToken, onMessage } from "firebase/messaging";
import { store } from "../redux/store";
import axios from "axios";
-import { checkBeta } from "../utils/handleBeta";
const config = JSON.parse(process.env.REACT_APP_FIREBASE_CONFIG);
initializeApp(config);
@@ -51,7 +50,7 @@ export { messaging };
export const requestForToken = () => {
return getToken(messaging, {
- vapidKey: process.env.REACT_APP_FIREBASE_PUBLIC_VAPID_KEY,
+ vapidKey: process.env.REACT_APP_FIREBASE_PUBLIC_VAPID_KEY
})
.then((currentToken) => {
if (currentToken) {
@@ -59,9 +58,7 @@ export const requestForToken = () => {
// Perform any other necessary action with the token
} else {
// Show permission request UI
- console.log(
- "No registration token available. Request permission to generate one."
- );
+ console.log("No registration token available. Request permission to generate one.");
}
})
.catch((err) => {
@@ -80,24 +77,17 @@ export const onMessageListener = () =>
export const logImEXEvent = (eventName, additionalParams, stateProp = null) => {
const state = stateProp || store.getState();
const eventParams = {
- shop:
- (state.user && state.user.bodyshop && state.user.bodyshop.shopname) ||
- null,
- user:
- (state.user && state.user.currentUser && state.user.currentUser.email) ||
- null,
- ...additionalParams,
+ shop: (state.user && state.user.bodyshop && state.user.bodyshop.shopname) || null,
+ user: (state.user && state.user.currentUser && state.user.currentUser.email) || null,
+ ...additionalParams
};
axios.post("/ioevent", {
- useremail:
- (state.user && state.user.currentUser && state.user.currentUser.email) ||
- null,
- bodyshopid:
- (state.user && state.user.bodyshop && state.user.bodyshop.id) || null,
+ useremail: (state.user && state.user.currentUser && state.user.currentUser.email) || null,
+ bodyshopid: (state.user && state.user.bodyshop && state.user.bodyshop.id) || null,
operationName: eventName,
variables: additionalParams,
dbevent: false,
- env: checkBeta() ? "beta" : "master",
+ env: "master"
});
// console.log(
diff --git a/client/src/utils/handleBeta.js b/client/src/utils/handleBeta.js
deleted file mode 100644
index dcb0d18d1..000000000
--- a/client/src/utils/handleBeta.js
+++ /dev/null
@@ -1,47 +0,0 @@
-export const BETA_KEY = "betaSwitchImex";
-
-export const checkBeta = () => {
- const cookie = document.cookie.split("; ").find((row) => row.startsWith(BETA_KEY));
- return cookie ? cookie.split("=")[1] === "true" : false;
-};
-
-export const setBeta = (value) => {
- const domain = window.location.hostname.split(".").slice(-2).join(".");
- document.cookie = `${BETA_KEY}=${value}; path=/; domain=.${domain}`;
-};
-
-export const handleBeta = () => {
- if (window.location.hostname.startsWith("localhost")) {
- console.log("Not on beta or test, so no need to handle beta.");
- return;
- }
-
- const isBeta = checkBeta();
- const currentHostName = window.location.hostname;
-
- // Determine if the host name starts with "beta" or "www.beta"
- const isBetaHost = currentHostName.startsWith("beta.");
- const isBetaHostWithWWW = currentHostName.startsWith("www.beta.");
-
- if (isBeta) {
- // If beta is on and we are not on a beta domain, redirect to the beta version
- if (!isBetaHost && !isBetaHostWithWWW) {
- const newHostName = currentHostName.startsWith("www.")
- ? `www.beta.${currentHostName.replace(/^www\./, "")}`
- : `beta.${currentHostName}`;
- const href = `${window.location.protocol}//${newHostName}${window.location.pathname}${window.location.search}${window.location.hash}`;
- window.location.replace(href);
- }
- // Otherwise, if beta is on and we're already on a beta domain, stay there
- } else {
- // If beta is off and we are on a beta domain, redirect to the non-beta version
- if (isBetaHost || isBetaHostWithWWW) {
- const newHostName = currentHostName.replace(/^www\.beta\./, "www.").replace(/^beta\./, "");
- const href = `${window.location.protocol}//${newHostName}${window.location.pathname}${window.location.search}${window.location.hash}`;
- window.location.replace(href);
- }
- // Otherwise, if beta is off and we're not on a beta domain, stay there
- }
-};
-
-export default handleBeta;