diff --git a/client/src/components/bills-list-table/bills-list-table.component.jsx b/client/src/components/bills-list-table/bills-list-table.component.jsx index 503751268..5db774a98 100644 --- a/client/src/components/bills-list-table/bills-list-table.component.jsx +++ b/client/src/components/bills-list-table/bills-list-table.component.jsx @@ -18,7 +18,7 @@ import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; import LockerWrapperComponent from "../lock-wrapper/lock-wrapper.component"; import PrintWrapperComponent from "../print-wrapper/print-wrapper.component"; import UpsellComponent from "../upsell/upsell.component"; -import { upsellEnum } from "../upsell/upsell.component"; +import { UpsellEnum } from "../upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ jobRO: selectJobReadOnly, @@ -240,7 +240,7 @@ export function BillsListTableComponent({ onChange={handleTableChange} locale={{ ...(!hasBillsAccess && { - emptyText: + emptyText: }) }} /> diff --git a/client/src/components/job-audit-trail/job-audit-trail.component.jsx b/client/src/components/job-audit-trail/job-audit-trail.component.jsx index c3ca6f814..9bda0c7ee 100644 --- a/client/src/components/job-audit-trail/job-audit-trail.component.jsx +++ b/client/src/components/job-audit-trail/job-audit-trail.component.jsx @@ -10,7 +10,7 @@ import { selectBodyshop, selectCurrentUser } from "../../redux/user/user.selecto import { DateTimeFormatter } from "../../utils/DateFormatter"; import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ currentUser: selectCurrentUser, @@ -147,7 +147,7 @@ export function JobAuditTrail({ bodyshop, currentUser, jobId }) { {!hasAuditAccess && ( - + )} diff --git a/client/src/components/job-bills-total/job-bills-total.component.jsx b/client/src/components/job-bills-total/job-bills-total.component.jsx index 77b90cb9f..bc5201c89 100644 --- a/client/src/components/job-bills-total/job-bills-total.component.jsx +++ b/client/src/components/job-bills-total/job-bills-total.component.jsx @@ -7,7 +7,7 @@ import AlertComponent from "../alert/alert.component"; import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component"; import "./job-bills-total.styles.scss"; import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; @@ -336,7 +336,7 @@ export function JobBillsTotalComponent({ {!hasBillsAccess && ( - + )} diff --git a/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx b/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx index 3129eaab7..c2d7808b7 100644 --- a/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx +++ b/client/src/components/job-detail-cards/job-detail-cards.documents.component.jsx @@ -3,7 +3,7 @@ import React from "react"; import { useTranslation } from "react-i18next"; import { GenerateThumbUrl } from "../jobs-documents-gallery/job-documents.utility"; import CardTemplate from "./job-detail-cards.template.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; export default function JobDetailCardsDocumentsComponent({ loading, data }) { const { t } = useTranslation(); @@ -21,7 +21,7 @@ export default function JobDetailCardsDocumentsComponent({ loading, data }) { title={t("jobs.labels.cards.documents")} extraLink={`/manage/jobs/${data.id}?tab=documents`} > - + {data.documents.length > 0 ? ( {data.documents.map((item) => ( diff --git a/client/src/components/job-lifecycle/job-lifecycle.component.jsx b/client/src/components/job-lifecycle/job-lifecycle.component.jsx index 7f99d08b5..b7414e3c8 100644 --- a/client/src/components/job-lifecycle/job-lifecycle.component.jsx +++ b/client/src/components/job-lifecycle/job-lifecycle.component.jsx @@ -9,7 +9,7 @@ import { useTranslation } from "react-i18next"; import "./job-lifecycle.styles.scss"; import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; // show text on bar if text can fit export function JobLifecycleComponent({ job, statuses, ...rest }) { @@ -144,7 +144,7 @@ export function JobLifecycleComponent({ job, statuses, ...rest }) { style={{ width: "100%" }} > - +
- + )} @@ -152,7 +152,7 @@ function JobsDocumentsComponent({ {hasMediaAccess && !hasMobileAccess && ( - + )} diff --git a/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.container.jsx b/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.container.jsx index 8c6991d94..deee406b7 100644 --- a/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.container.jsx +++ b/client/src/components/jobs-documents-local-gallery/jobs-documents-local-gallery.container.jsx @@ -18,7 +18,7 @@ import JobsDocumentsLocalGallerySelectAllComponent from "./jobs-documents-local- import Lightbox from "react-image-lightbox"; import "react-image-lightbox/style.css"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -117,7 +117,7 @@ export function JobsDocumentsLocalGallery({ {!hasMediaAccess && ( - + )} diff --git a/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx b/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx index 57be0b072..1c8947d5f 100644 --- a/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx +++ b/client/src/components/labor-allocations-table/labor-allocations-table.component.jsx @@ -13,7 +13,7 @@ import LaborAllocationsAdjustmentEdit from "../labor-allocations-adjustment-edit import "./labor-allocations-table.styles.scss"; import { CalculateAllocationsTotals } from "./labor-allocations-table.utility"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, technician: selectTechnician @@ -206,7 +206,7 @@ export function LaborAllocationsTable({ ...(!hasTimeTicketAccess && { emptyText: ( - + ) }) @@ -249,7 +249,7 @@ export function LaborAllocationsTable({ ...(!hasTimeTicketAccess && { emptyText: ( - + ) }) diff --git a/client/src/components/labor-allocations-table/labor-allocations-table.payroll.component.jsx b/client/src/components/labor-allocations-table/labor-allocations-table.payroll.component.jsx index 82ccbbc7e..5330f025a 100644 --- a/client/src/components/labor-allocations-table/labor-allocations-table.payroll.component.jsx +++ b/client/src/components/labor-allocations-table/labor-allocations-table.payroll.component.jsx @@ -11,7 +11,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors"; import CurrencyFormatter from "../../utils/CurrencyFormatter"; import "./labor-allocations-table.styles.scss"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component"; const mapStateToProps = createStructuredSelector({ @@ -269,7 +269,7 @@ export function PayrollLaborAllocationsTable({ ...(!hasTimeTicketAccess && { emptyText: ( - + ) }) diff --git a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header-graph.component.jsx b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header-graph.component.jsx index 37809967e..57df25ecd 100644 --- a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header-graph.component.jsx +++ b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header-graph.component.jsx @@ -7,7 +7,7 @@ import { Legend, PolarAngleAxis, PolarGrid, PolarRadiusAxis, Radar, RadarChart, import { createStructuredSelector } from "reselect"; import { selectBodyshop } from "../../redux/user/user.selectors"; import BlurWrapperComponent from "../feature-wrapper/blur-wrapper.component"; -import { UpsellMaskWrapper, upsellEnum } from "../upsell/upsell.component"; +import { UpsellMaskWrapper, UpsellEnum } from "../upsell/upsell.component"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; const mapStateToProps = createStructuredSelector({ @@ -75,7 +75,7 @@ export function ScheduleCalendarHeaderGraph({ bodyshop, loadData }) { {hasSmartSchedulingAccess ? ( chartContents ) : ( - {chartContents} + {chartContents} )}
diff --git a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.jsx b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.jsx index 2bf99c1a9..edf1a8748 100644 --- a/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.jsx +++ b/client/src/components/schedule-calendar-wrapper/schedule-calendar-header.component.jsx @@ -17,7 +17,7 @@ import LoadingSkeleton from "../loading-skeleton/loading-skeleton.component"; import OwnerNameDisplay from "../owner-name-display/owner-name-display.component"; import ScheduleBlockDay from "../schedule-block-day/schedule-block-day.component"; import ScheduleCalendarHeaderGraph from "./schedule-calendar-header-graph.component"; -import UpsellComponent, { upsellEnum, UpsellMaskWrapper } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum, UpsellMaskWrapper } from "../upsell/upsell.component"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; const mapStateToProps = createStructuredSelector({ @@ -93,7 +93,7 @@ export function ScheduleCalendarHeaderComponent({ {!hasSmartSchedulingAccess && ( - + )} @@ -135,7 +135,7 @@ export function ScheduleCalendarHeaderComponent({ )} {!hasSmartSchedulingAccess && ( - + )} diff --git a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx index c55163479..1cee17397 100644 --- a/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx +++ b/client/src/components/schedule-job-modal/schedule-job-modal.component.jsx @@ -17,7 +17,7 @@ import ScheduleExistingAppointmentsList from "../schedule-existing-appointments- import "./schedule-job-modal.scss"; import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component"; import BlurWrapper from "../feature-wrapper/blur-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -139,7 +139,7 @@ export function ScheduleJobModalComponent({ ))} {!smartOptions.length > 1 && hasSmartSchedulingAccess && ( - + )} diff --git a/client/src/components/time-ticket-list/time-ticket-list.component.jsx b/client/src/components/time-ticket-list/time-ticket-list.component.jsx index c29648f17..3ac5d0a08 100644 --- a/client/src/components/time-ticket-list/time-ticket-list.component.jsx +++ b/client/src/components/time-ticket-list/time-ticket-list.component.jsx @@ -16,7 +16,7 @@ import { HasRbacAccess } from "../rbac-wrapper/rbac-wrapper.component"; import TimeTicketEnterButton from "../time-ticket-enter-button/time-ticket-enter-button.component"; import { HasFeatureAccess } from "../feature-wrapper/feature-wrapper.component"; import LockWrapperComponent from "../lock-wrapper/lock-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -364,7 +364,7 @@ export function TimeTicketList({ ...(!hasTimeTicketsAccess && { emptyText: ( - + ) }) diff --git a/client/src/components/upsell/upsell.component.jsx b/client/src/components/upsell/upsell.component.jsx index 8857a278d..847e68bdd 100644 --- a/client/src/components/upsell/upsell.component.jsx +++ b/client/src/components/upsell/upsell.component.jsx @@ -14,10 +14,14 @@ import i18n from "i18next"; import React, { useEffect, useRef } from "react"; import { useTranslation } from "react-i18next"; import "./upsell.styles.scss"; +import InstanceRenderManager from "../../utils/instanceRenderMgr.js"; +import { store } from "../../redux/store.js"; +import { Link } from "react-router-dom"; +import { useSelector } from "react-redux"; export default function UpsellComponent({ featureName, subFeatureName, upsell, disableMask }) { const { t } = useTranslation(); - const resultProps = upsell || upsellEnum[featureName][subFeatureName]; + const resultProps = upsell || UpsellEnum[featureName][subFeatureName]; const componentRef = useRef(null); @@ -52,7 +56,7 @@ export default function UpsellComponent({ featureName, subFeatureName, upsell, d } //Kept in the same function as the result props line must mirror and doesnt warrant a separate function. export function UpsellMaskWrapper({ children, upsell, featureName, subFeatureName }) { - const resultProps = upsell || upsellEnum[featureName][subFeatureName]; + const resultProps = upsell || UpsellEnum[featureName][subFeatureName]; return (
{children}
@@ -65,173 +69,275 @@ export function UpsellMaskWrapper({ children, upsell, featureName, subFeatureNam ); } //This is kept in this function as pulling it out into it's own util/enum prevents passing JSX as an `extra` prop -export const upsellEnum = () => ({ - bills: { - autoreconcile: { - //icon: null, - title: i18n.t("upsell.messages.bills.autoreconcile.title"), - subTitle: i18n.t("upsell.messages.bills.autoreconcile.subtitle"), - extra: - //status: null +export const UpsellEnum = () => { + //Had to use the selector hook as accessing store with store.getState() was causing issues when hot reloading. + const currentUser = useSelector((state) => state.user.currentUser); + const bodyshop = useSelector((state) => state.user.bodyshop); + + const [first_name, ...last_name] = currentUser?.displayName ? currentUser.displayName.split(" ") : []; + const LearnMoreLink = encodeURI( + InstanceRenderManager({ + imex: `https://imexsystems.ca/schedule-a-demo/`, + rome: `https://forms.zohopublic.com/rometech/form/ROLearnMore/formperma/0G29z8LgLlvKK8nno-b7s-GHgNXwIFlrMeE0mC394L4?first_name=${first_name || ""}&last_name=${last_name.join(" ") || ""}&shop_name=${bodyshop?.shopname || ""}&email=${currentUser?.email || ""}&shop_phone=${bodyshop?.phone || ""}` + }) + ); + + return { + bills: { + autoreconcile: { + //icon: null, + title: i18n.t("upsell.messages.bills.autoreconcile.title"), + subTitle: i18n.t("upsell.messages.bills.autoreconcile.subtitle"), + extra: ( + + + + ) + //status: null + }, + general: { + //icon: null, + title: i18n.t("upsell.messages.bills.general.title"), + subTitle: i18n.t("upsell.messages.bills.general.subtitle"), + extra: ( + + + + ) + //status: null + } }, - general: { - //icon: null, - title: i18n.t("upsell.messages.bills.general.title"), - subTitle: i18n.t("upsell.messages.bills.general.subtitle"), - extra: - //status: null - } - }, - checklist: { - general: { - //icon: null, - title: i18n.t("upsell.messages.checklist.general.title"), - subTitle: i18n.t("upsell.messages.checklist.general.subtitle"), - extra: - //status: null - } - }, - payments: { - general: { - //icon: null, - title: i18n.t("upsell.messages.payments.general.title"), - subTitle: i18n.t("upsell.messages.payments.general.subtitle"), - extra: - //status: null - } - }, - audit: { - general: { - //icon: null, - title: i18n.t("upsell.messages.audit.general.title"), - subTitle: i18n.t("upsell.messages.audit.general.subtitle"), - extra: - //status: null - } - }, - lifecycle: { - general: { - //icon: null, - title: i18n.t("upsell.messages.lifecycle.general.title"), - subTitle: i18n.t("upsell.messages.lifecycle.general.subtitle"), - extra: - //status: null } - } - }, - media: { - general: { - //icon: null, - title: i18n.t("upsell.messages.media.general.title"), - subTitle: i18n.t("upsell.messages.media.general.subtitle"), - extra: - //status: null } - }, - mobile: { - icon: , - title: i18n.t("upsell.messages.media.mobile.title"), - subTitle: i18n.t("upsell.messages.media.mobile.subtitle"), - extra: - //status: null } - } - }, - timetickets: { - allocations: { - title: i18n.t("upsell.messages.timetickets.allocations.title"), - subTitle: i18n.t("upsell.messages.timetickets.allocations.subtitle"), - extra: - }, - general: { - title: i18n.t("upsell.messages.timetickets.general.title"), - subTitle: i18n.t("upsell.messages.timetickets.general.subtitle"), - extra: - } - }, - smartscheduling: { - general: { - icon: , - title: i18n.t("upsell.messages.smartscheduling.general.title"), - subTitle: i18n.t("upsell.messages.smartscheduling.general.subtitle"), - extra: - }, - hrsdelta: { - icon: , - title: i18n.t("upsell.messages.smartscheduling.hrsdelta.title"), - subTitle: i18n.t("upsell.messages.smartscheduling.hrsdelta.subtitle"), - extra: - }, - datepicker: { - icon: , - title: i18n.t("upsell.messages.smartscheduling.datepicker.title"), - subTitle: i18n.t("upsell.messages.smartscheduling.datepicker.subtitle"), - extra: - } - }, - accounting: { - payables: { - icon: , - title: i18n.t("upsell.messages.accounting.payables.title"), - subTitle: i18n.t("upsell.messages.accounting.payables.subtitle"), - extra: - }, - receivables: { - icon: , - title: i18n.t("upsell.messages.accounting.receivables.title"), - subTitle: i18n.t("upsell.messages.accounting.receivables.subtitle"), - extra: + checklist: { + general: { + //icon: null, + title: i18n.t("upsell.messages.checklist.general.title"), + subTitle: i18n.t("upsell.messages.checklist.general.subtitle"), + extra: ( + + + + ) + //status: null + } }, payments: { - icon: , - title: i18n.t("upsell.messages.accounting.payments.title"), - subTitle: i18n.t("upsell.messages.accounting.payments.subtitle"), - extra: + general: { + //icon: null, + title: i18n.t("upsell.messages.payments.general.title"), + subTitle: i18n.t("upsell.messages.payments.general.subtitle"), + extra: ( + + + + ) + //status: null + } + }, + audit: { + general: { + //icon: null, + title: i18n.t("upsell.messages.audit.general.title"), + subTitle: i18n.t("upsell.messages.audit.general.subtitle"), + extra: ( + + + + ) + //status: null + } + }, + lifecycle: { + general: { + //icon: null, + title: i18n.t("upsell.messages.lifecycle.general.title"), + subTitle: i18n.t("upsell.messages.lifecycle.general.subtitle"), + extra: ( + + + + ) + //status: null } + } + }, + media: { + general: { + //icon: null, + title: i18n.t("upsell.messages.media.general.title"), + subTitle: i18n.t("upsell.messages.media.general.subtitle"), + extra: ( + + + + ) + //status: null } + }, + mobile: { + icon: , + title: i18n.t("upsell.messages.media.mobile.title"), + subTitle: i18n.t("upsell.messages.media.mobile.subtitle"), + extra: ( + + + + ) + //status: null } + } + }, + timetickets: { + allocations: { + title: i18n.t("upsell.messages.timetickets.allocations.title"), + subTitle: i18n.t("upsell.messages.timetickets.allocations.subtitle"), + extra: ( + + + + ) + }, + general: { + title: i18n.t("upsell.messages.timetickets.general.title"), + subTitle: i18n.t("upsell.messages.timetickets.general.subtitle"), + extra: ( + + + + ) + } + }, + smartscheduling: { + general: { + icon: , + title: i18n.t("upsell.messages.smartscheduling.general.title"), + subTitle: i18n.t("upsell.messages.smartscheduling.general.subtitle"), + extra: ( + + + + ) + }, + hrsdelta: { + icon: , + title: i18n.t("upsell.messages.smartscheduling.hrsdelta.title"), + subTitle: i18n.t("upsell.messages.smartscheduling.hrsdelta.subtitle"), + extra: ( + + + + ) + }, + datepicker: { + icon: , + title: i18n.t("upsell.messages.smartscheduling.datepicker.title"), + subTitle: i18n.t("upsell.messages.smartscheduling.datepicker.subtitle"), + extra: ( + + + + ) + } + }, + accounting: { + payables: { + icon: , + title: i18n.t("upsell.messages.accounting.payables.title"), + subTitle: i18n.t("upsell.messages.accounting.payables.subtitle"), + extra: ( + + + + ) + }, + receivables: { + icon: , + title: i18n.t("upsell.messages.accounting.receivables.title"), + subTitle: i18n.t("upsell.messages.accounting.receivables.subtitle"), + extra: ( + + + + ) + }, + payments: { + icon: , + title: i18n.t("upsell.messages.accounting.payments.title"), + subTitle: i18n.t("upsell.messages.accounting.payments.subtitle"), + extra: ( + + + + ) + } + }, + courtesycars: { + general: { + icon: , + title: i18n.t("upsell.messages.courtesycars.general.title"), + subTitle: i18n.t("upsell.messages.courtesycars.general.subtitle"), + extra: ( + + + + ) + } + }, + dashboard: { + general: { + icon: , + title: i18n.t("upsell.messages.dashboard.general.title"), + subTitle: i18n.t("upsell.messages.dashboard.general.subtitle"), + extra: ( + + + + ) + } + }, + visualboard: { + general: { + icon: , + title: i18n.t("upsell.messages.visualboard.general.title"), + subTitle: i18n.t("upsell.messages.visualboard.general.subtitle"), + extra: ( + + + + ) + } + }, + scoreboard: { + general: { + icon: , + title: i18n.t("upsell.messages.scoreboard.general.title"), + subTitle: i18n.t("upsell.messages.scoreboard.general.subtitle"), + extra: ( + + + + ) + } + }, + techconsole: { + general: { + icon: , + title: i18n.t("upsell.messages.techconsole.general.title"), + subTitle: i18n.t("upsell.messages.techconsole.general.subtitle"), + extra: ( + + + + ) + } + }, + csi: { + general: { + icon: , + title: i18n.t("upsell.messages.csi.general.title"), + subTitle: i18n.t("upsell.messages.csi.general.subtitle"), + extra: ( + + + + ) + } } - }, - courtesycars: { - general: { - icon: , - title: i18n.t("upsell.messages.courtesycars.general.title"), - subTitle: i18n.t("upsell.messages.courtesycars.general.subtitle"), - extra: - } - }, - dashboard: { - general: { - icon: , - title: i18n.t("upsell.messages.dashboard.general.title"), - subTitle: i18n.t("upsell.messages.dashboard.general.subtitle"), - extra: - } - }, - visualboard: { - general: { - icon: , - title: i18n.t("upsell.messages.visualboard.general.title"), - subTitle: i18n.t("upsell.messages.visualboard.general.subtitle"), - extra: - } - }, - scoreboard: { - general: { - icon: , - title: i18n.t("upsell.messages.scoreboard.general.title"), - subTitle: i18n.t("upsell.messages.scoreboard.general.subtitle"), - extra: - } - }, - techconsole: { - general: { - icon: , - title: i18n.t("upsell.messages.techconsole.general.title"), - subTitle: i18n.t("upsell.messages.techconsole.general.subtitle"), - extra: - } - }, - csi: { - general: { - icon: , - title: i18n.t("upsell.messages.csi.general.title"), - subTitle: i18n.t("upsell.messages.csi.general.subtitle"), - extra: - } - } -}); + }; +}; diff --git a/client/src/pages/accounting-payables/accounting-payables.container.jsx b/client/src/pages/accounting-payables/accounting-payables.container.jsx index 4e9b0dcfd..81127aea0 100644 --- a/client/src/pages/accounting-payables/accounting-payables.container.jsx +++ b/client/src/pages/accounting-payables/accounting-payables.container.jsx @@ -13,7 +13,7 @@ import { selectPartnerVersion } from "../../redux/application/application.select import { selectBodyshop } from "../../redux/user/user.selectors"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; import { Card } from "antd"; const mapStateToProps = createStructuredSelector({ @@ -63,7 +63,7 @@ export function AccountingPayablesContainer({ bodyshop, setBreadcrumbs, setSelec featureName="export" noauth={ - + } > diff --git a/client/src/pages/accounting-payments/accounting-payments.container.jsx b/client/src/pages/accounting-payments/accounting-payments.container.jsx index e3c01885d..856c84963 100644 --- a/client/src/pages/accounting-payments/accounting-payments.container.jsx +++ b/client/src/pages/accounting-payments/accounting-payments.container.jsx @@ -13,7 +13,7 @@ import { checkPartnerStatus } from "../../components/partner-ping/partner-ping.c import { selectPartnerVersion } from "../../redux/application/application.selectors"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; import { Card } from "antd"; const mapStateToProps = createStructuredSelector({ @@ -61,7 +61,7 @@ export function AccountingPaymentsContainer({ bodyshop, setBreadcrumbs, setSelec featureName="export" noauth={ - + } > diff --git a/client/src/pages/accounting-receivables/accounting-receivables.container.jsx b/client/src/pages/accounting-receivables/accounting-receivables.container.jsx index 830eb6cfa..115272ab0 100644 --- a/client/src/pages/accounting-receivables/accounting-receivables.container.jsx +++ b/client/src/pages/accounting-receivables/accounting-receivables.container.jsx @@ -14,7 +14,7 @@ import { selectPartnerVersion } from "../../redux/application/application.select import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop, @@ -66,7 +66,7 @@ export function AccountingReceivablesContainer({ bodyshop, setBreadcrumbs, setSe featureName="export" noauth={ - + } > diff --git a/client/src/pages/bills/bills.page.container.jsx b/client/src/pages/bills/bills.page.container.jsx index 5398cb87b..069e307a7 100644 --- a/client/src/pages/bills/bills.page.container.jsx +++ b/client/src/pages/bills/bills.page.container.jsx @@ -14,7 +14,7 @@ import { pageLimit } from "../../utils/config"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -59,7 +59,7 @@ export function BillsPageContainer({ setBreadcrumbs, setSelectedHeader }) { featureName="bills" noauth={ - + } > diff --git a/client/src/pages/contract-create/contract-create.page.container.jsx b/client/src/pages/contract-create/contract-create.page.container.jsx index c2ab7358e..cb6c7fa46 100644 --- a/client/src/pages/contract-create/contract-create.page.container.jsx +++ b/client/src/pages/contract-create/contract-create.page.container.jsx @@ -13,7 +13,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli import { selectBodyshop } from "../../redux/user/user.selectors"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import ContractCreatePageComponent from "./contract-create.page.component"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -125,7 +125,7 @@ export function ContractCreatePageContainer({ bodyshop, setBreadcrumbs, setSelec featureName="courtesycars" noauth={ - + } > diff --git a/client/src/pages/contract-detail/contract-detail.page.container.jsx b/client/src/pages/contract-detail/contract-detail.page.container.jsx index 911acde91..7fce74e55 100644 --- a/client/src/pages/contract-detail/contract-detail.page.container.jsx +++ b/client/src/pages/contract-detail/contract-detail.page.container.jsx @@ -16,7 +16,7 @@ import ContractDetailPageComponent from "./contract-detail.page.component"; import NotFound from "../../components/not-found/not-found.component"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -113,7 +113,7 @@ export function ContractDetailPageContainer({ setBreadcrumbs, addRecentItem, set featureName="courtesycars" noauth={ - + } > diff --git a/client/src/pages/contracts/contracts.page.container.jsx b/client/src/pages/contracts/contracts.page.container.jsx index 4652b30be..3d93e0862 100644 --- a/client/src/pages/contracts/contracts.page.container.jsx +++ b/client/src/pages/contracts/contracts.page.container.jsx @@ -13,7 +13,7 @@ import { pageLimit } from "../../utils/config"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -62,7 +62,7 @@ export function ContractsPageContainer({ setBreadcrumbs, setSelectedHeader }) { featureName="courtesycars" noauth={ - + } > diff --git a/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx b/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx index 451a32ea9..c6baaeb92 100644 --- a/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx +++ b/client/src/pages/courtesy-car-create/courtesy-car-create.page.container.jsx @@ -12,7 +12,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli import { selectBodyshop } from "../../redux/user/user.selectors"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -73,7 +73,7 @@ export function CourtesyCarCreateContainer({ bodyshop, setBreadcrumbs, setSelect featureName="courtesycars" noauth={ - + } > diff --git a/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx b/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx index ebbd2c0b6..ea70e4be6 100644 --- a/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx +++ b/client/src/pages/courtesy-cars/courtesy-cars.page.container.jsx @@ -10,7 +10,7 @@ import CourtesyCarsPageComponent from "./courtesy-cars.page.component"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -40,7 +40,7 @@ export function CourtesyCarsPageContainer({ setBreadcrumbs, setSelectedHeader }) featureName="courtesycars" noauth={ - + } > diff --git a/client/src/pages/dashboard/dashboard.container.jsx b/client/src/pages/dashboard/dashboard.container.jsx index fd1b76e45..f84d6bb69 100644 --- a/client/src/pages/dashboard/dashboard.container.jsx +++ b/client/src/pages/dashboard/dashboard.container.jsx @@ -7,7 +7,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -38,7 +38,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) { featureName="dashboard" noauth={ - + } > diff --git a/client/src/pages/export-logs/export-logs.page.container.jsx b/client/src/pages/export-logs/export-logs.page.container.jsx index 05fbe9426..e2ea9c741 100644 --- a/client/src/pages/export-logs/export-logs.page.container.jsx +++ b/client/src/pages/export-logs/export-logs.page.container.jsx @@ -7,7 +7,7 @@ import ExportLogsPage from "./export-logs.page.component"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapDispatchToProps = (dispatch) => ({ setBreadcrumbs: (breadcrumbs) => dispatch(setBreadcrumbs(breadcrumbs)), @@ -38,7 +38,7 @@ export function ExportsLogPageContainer({ setBreadcrumbs, setSelectedHeader }) { featureName="export" noauth={ - + } > diff --git a/client/src/pages/jobs-checklist-view/jobs-checklist-view.page.jsx b/client/src/pages/jobs-checklist-view/jobs-checklist-view.page.jsx index cc6bf193f..6dacc0f4b 100644 --- a/client/src/pages/jobs-checklist-view/jobs-checklist-view.page.jsx +++ b/client/src/pages/jobs-checklist-view/jobs-checklist-view.page.jsx @@ -15,7 +15,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli import { selectBodyshop } from "../../redux/user/user.selectors"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser @@ -79,7 +79,7 @@ export function JobsChecklistViewContainer({ bodyshop, setBreadcrumbs, setSelect featureName="checklist" noauth={ - + } > diff --git a/client/src/pages/jobs-deliver/jobs-delivery.page.container.jsx b/client/src/pages/jobs-deliver/jobs-delivery.page.container.jsx index 077c83398..9fa7aba13 100644 --- a/client/src/pages/jobs-deliver/jobs-delivery.page.container.jsx +++ b/client/src/pages/jobs-deliver/jobs-delivery.page.container.jsx @@ -14,7 +14,7 @@ import JobchecklistComponent from "../../components/job-checklist/job-checklist. import InstanceRenderManager from "../../utils/instanceRenderMgr"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser @@ -66,7 +66,7 @@ export function JobsDeliverContainer({ bodyshop, setBreadcrumbs, setSelectedHead featureName="checklist" noauth={ - + } > diff --git a/client/src/pages/jobs-intake/jobs-intake.page.container.jsx b/client/src/pages/jobs-intake/jobs-intake.page.container.jsx index 54a8a561d..7e9c1936a 100644 --- a/client/src/pages/jobs-intake/jobs-intake.page.container.jsx +++ b/client/src/pages/jobs-intake/jobs-intake.page.container.jsx @@ -14,7 +14,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; import { Card, Result } from "antd"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser @@ -69,7 +69,7 @@ export function JobsIntakeContainer({ bodyshop, setBreadcrumbs, setSelectedHeade featureName="checklist" noauth={ - + } > diff --git a/client/src/pages/payments-all/payments-all.container.page.jsx b/client/src/pages/payments-all/payments-all.container.page.jsx index 2b67c4737..649ac1004 100644 --- a/client/src/pages/payments-all/payments-all.container.page.jsx +++ b/client/src/pages/payments-all/payments-all.container.page.jsx @@ -14,7 +14,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors"; import { pageLimit } from "../../utils/config"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; import { Card } from "antd"; const mapStateToProps = createStructuredSelector({ @@ -64,7 +64,7 @@ export function AllJobs({ bodyshop, setBreadcrumbs, setSelectedHeader }) { featureName="payments" noauth={ - + } z diff --git a/client/src/pages/production-board/production-board.container.jsx b/client/src/pages/production-board/production-board.container.jsx index 0e80a5dd4..914b8fdbf 100644 --- a/client/src/pages/production-board/production-board.container.jsx +++ b/client/src/pages/production-board/production-board.container.jsx @@ -5,7 +5,7 @@ import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import FeatureWrapper from "../../components/feature-wrapper/feature-wrapper.component"; import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions"; import { selectBodyshop } from "../../redux/user/user.selectors"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; @@ -44,7 +44,7 @@ export function ProductionBoardContainer({ setBreadcrumbs, bodyshop, setSelected featureName="visualboard" noauth={ - + } > diff --git a/client/src/pages/scoreboard/scoreboard.page.container.jsx b/client/src/pages/scoreboard/scoreboard.page.container.jsx index 7e15cae75..96cc433c0 100644 --- a/client/src/pages/scoreboard/scoreboard.page.container.jsx +++ b/client/src/pages/scoreboard/scoreboard.page.container.jsx @@ -15,7 +15,7 @@ import ScoreboardTimeTickets from "../../components/scoreboard-timetickets/score import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/application.actions"; import { selectBodyshop } from "../../redux/user/user.selectors"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; /** * Mapping state to props @@ -71,7 +71,7 @@ export function ScoreboardContainer({ setBreadcrumbs, setSelectedHeader }) { featureName="scoreboard" noauth={ - + } > diff --git a/client/src/pages/shift-clock/shift-clock.page.jsx b/client/src/pages/shift-clock/shift-clock.page.jsx index 1e8ed0609..b3e655af8 100644 --- a/client/src/pages/shift-clock/shift-clock.page.jsx +++ b/client/src/pages/shift-clock/shift-clock.page.jsx @@ -3,7 +3,7 @@ import RbacWrapper from "../../components/rbac-wrapper/rbac-wrapper.component"; import TimeTicketShift from "../../components/time-ticket-shift/time-ticket-shift.container"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; export default function ShiftClock() { return ( @@ -11,7 +11,7 @@ export default function ShiftClock() { featureName="timetickets" noauth={ - + } > diff --git a/client/src/pages/shop-csi/shop-csi.container.page.jsx b/client/src/pages/shop-csi/shop-csi.container.page.jsx index fe6e6cf02..01fd4a97a 100644 --- a/client/src/pages/shop-csi/shop-csi.container.page.jsx +++ b/client/src/pages/shop-csi/shop-csi.container.page.jsx @@ -13,7 +13,7 @@ import { setBreadcrumbs, setSelectedHeader } from "../../redux/application/appli import { selectBodyshop } from "../../redux/user/user.selectors"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -56,7 +56,7 @@ export function ShopCsiContainer({ bodyshop, setBreadcrumbs, setSelectedHeader } featureName="csi" noauth={ - + } > diff --git a/client/src/pages/tech/tech.page.component.jsx b/client/src/pages/tech/tech.page.component.jsx index 5f66bb970..9ffef2684 100644 --- a/client/src/pages/tech/tech.page.component.jsx +++ b/client/src/pages/tech/tech.page.component.jsx @@ -14,7 +14,7 @@ import UpdateAlert from "../../components/update-alert/update-alert.component"; import { selectTechnician } from "../../redux/tech/tech.selectors"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import "./tech.page.styles.scss"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component.jsx"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component.jsx"; const TimeTicketModalContainer = lazy(() => import("../../components/time-ticket-modal/time-ticket-modal.container")); const EmailOverlayContainer = lazy(() => import("../../components/email-overlay/email-overlay.container.jsx")); @@ -87,7 +87,7 @@ export function TechPage({ technician }) { featureName="techconsole" noauth={ - + } > diff --git a/client/src/pages/temporary-docs/temporary-docs.container.jsx b/client/src/pages/temporary-docs/temporary-docs.container.jsx index 44d848230..d83f66d24 100644 --- a/client/src/pages/temporary-docs/temporary-docs.container.jsx +++ b/client/src/pages/temporary-docs/temporary-docs.container.jsx @@ -9,7 +9,7 @@ import TemporaryDocsComponent from "./temporary-docs.component"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -44,7 +44,7 @@ export function TempDocumentsContainer({ setBreadcrumbs, setSelectedHeader }) { featureName="media" noauth={ - + } > diff --git a/client/src/pages/time-tickets/time-tickets.container.jsx b/client/src/pages/time-tickets/time-tickets.container.jsx index f1492a9d9..e3d791ddd 100644 --- a/client/src/pages/time-tickets/time-tickets.container.jsx +++ b/client/src/pages/time-tickets/time-tickets.container.jsx @@ -20,7 +20,7 @@ import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wr import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { useSplitTreatments } from "@splitsoftware/splitio-react"; import { selectBodyshop } from "../../redux/user/user.selectors"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -78,7 +78,7 @@ export function TimeTicketsContainer({ bodyshop, setBreadcrumbs, setSelectedHead featureName="timetickets" noauth={ - + } > diff --git a/client/src/pages/tt-approvals/tt-approvals.page.container.jsx b/client/src/pages/tt-approvals/tt-approvals.page.container.jsx index 530a04503..230c9eaca 100644 --- a/client/src/pages/tt-approvals/tt-approvals.page.container.jsx +++ b/client/src/pages/tt-approvals/tt-approvals.page.container.jsx @@ -9,7 +9,7 @@ import { selectBodyshop } from "../../redux/user/user.selectors"; import FeatureWrapperComponent from "../../components/feature-wrapper/feature-wrapper.component"; import InstanceRenderManager from "../../utils/instanceRenderMgr"; import { Card } from "antd"; -import UpsellComponent, { upsellEnum } from "../../components/upsell/upsell.component"; +import UpsellComponent, { UpsellEnum } from "../../components/upsell/upsell.component"; const mapStateToProps = createStructuredSelector({ bodyshop: selectBodyshop @@ -44,7 +44,7 @@ export function TtApprovalsPage({ setBreadcrumbs, setSelectedHeader }) { featureName="timetickets" noauth={ - + } > diff --git a/server/intellipay/intellipay.js b/server/intellipay/intellipay.js index aa3ddb464..71adce9a3 100644 --- a/server/intellipay/intellipay.js +++ b/server/intellipay/intellipay.js @@ -389,7 +389,7 @@ exports.postback = async (req, res) => { if (decodedComment) { //Shifted the order to have this first to retain backwards compatibility for the old style of short link. //This has been triggered by IO and may have multiple jobs. - const parsedComment = JSON.parse(decodedComment); + const parsedComment = decodedComment; logger.log("intellipay-postback-parsed-comment", "DEBUG", req.user?.email, null, { parsedComment,