Add trial request functionality for audit.

This commit is contained in:
Patrick Fic
2024-05-09 16:49:14 -07:00
parent 2f77f0fb45
commit 3a2a7c2a11
9 changed files with 67 additions and 4 deletions

View File

@@ -294,6 +294,11 @@ function openNoticeWindow() {
});
}
ipcMain.on(ipcTypes.app.toMain.setReleaseChannel, (event, channel) => {
autoUpdater.channel = channel;
checkForUpdates();
});
ipcMain.on(ipcTypes.app.toMain.checkForUpdates, (event, args) => {
checkForUpdates();
});

View File

@@ -28,6 +28,7 @@ select_permissions:
permission:
columns:
- accepted_ins_co
- channel
- created_at
- features
- groups

View File

@@ -0,0 +1,4 @@
-- Could not auto-generate a down migration.
-- Please write an appropriate down migration for the SQL below:
-- alter table "public"."bodyshops" add column "channel" text
-- null default 'latest';

View File

@@ -0,0 +1,2 @@
alter table "public"."bodyshops" add column "channel" text
null default 'latest';

View File

@@ -92,6 +92,7 @@
"vite-plugin-style-import": "^2.0.0"
},
"build": {
"generateUpdatesFilesForAllChannels": true,
"extends": null,
"appId": "com.imex.rps",
"copyright": "Copyright © ImEX Systems Inc.",

View File

@@ -1,5 +1,5 @@
import { PrinterFilled } from "@ant-design/icons";
import { Alert, Button, Card, Col, DatePicker, Form, Input, Row, Space } from "antd";
import { Alert, Button, Card, Col, DatePicker, Form, Input, Result, Row, Space } from "antd";
import React, { useRef } from "react";
import { connect } from "react-redux";
import { useReactToPrint } from "react-to-print";
@@ -11,11 +11,13 @@ import dayjs from "../../../util/day";
import AuditResultsOrganism from "../../organisms/audit-results/audit-results.organism";
import FeatureWrapper from "../../templates/feature-wrapper";
import "./audit.page.styles.scss";
import { selectBodyshop } from "../../../redux/user/user.selectors";
const { ipcRenderer } = window;
const mapStateToProps = createStructuredSelector({
//currentUser: selectCurrentUser
bodyshop: selectBodyshop,
auditError: selectAuditError
});
const mapDispatchToProps = (dispatch) => ({
@@ -23,7 +25,7 @@ const mapDispatchToProps = (dispatch) => ({
});
export default connect(mapStateToProps, mapDispatchToProps)(AuditPage);
export function AuditPage({ auditError, queryReportingData }) {
export function AuditPage({ auditError, queryReportingData, bodyshop }) {
const handleBrowseForFile = async ({ sheetName, dateRange }) => {
queryReportingData({
startDate: dateRange[0] || dayjs("2024-03-01"),
@@ -40,8 +42,14 @@ export function AuditPage({ auditError, queryReportingData }) {
window.ref = componentRef.current;
if (auditError) console.log("Error when opening audit file.", auditError);
return (
<FeatureWrapper featureName="audit">
<FeatureWrapper featureName="audit" noauth={<NoAuditAccess features={bodyshop.features} />}>
<div className="audit-container" id="audit-results-container">
{bodyshop.features.audit_trial && (
<Alert
type="info"
message={`You are currently on a trial of the RPS audit functionality. It will expire on ${bodyshop.features.audit_trial}`}
/>
)}
<Row gutter={[16, 16]} ref={componentRef}>
<Col span={24}>
<Card>
@@ -126,3 +134,42 @@ export function AuditPage({ auditError, queryReportingData }) {
</FeatureWrapper>
);
}
function NoAuditAccess({ features }) {
return (
<Result
status="warning"
title="You do not currently have access to the audit feature of RPS."
subTitle="Auditing allows you to instantly and automatically find discrepancies between the data you have recorded in RPS and the scorecard provided to your by your SRA."
extra={
features.audit_trial ? (
<Button
type="primary"
onClick={() => {
window.$crisp.push(["do", "message:thread:start", ["Subscription Upgrade - RPS Audit"]]);
window.$crisp.push(["set", "message:send", ["I would like to subscribe to the RPS Audit feature."]]);
}}
>
Subscribe
</Button>
) : (
<Button
type="primary"
onClick={() => {
window.$crisp.push(["set", "session:event", [[["trial_request", { feature: "audit" }]]]]);
window.$crisp.push(["do", "message:thread:start", ["Trial Request - RPS Audit"]]);
window.$crisp.push([
"do",
"message:send",
["text", "Hello, I would like to request a trial of the RPS audit feature."]
]);
window.$crisp.push(["do", "chat:open"]);
}}
>
Request Trial
</Button>
)
}
/>
);
}

View File

@@ -9,6 +9,7 @@ export const QUERY_BODYSHOP = gql`
groups
ppd_diff_alert
features
channel
}
targets {
id

View File

@@ -15,6 +15,7 @@
"getReleaseNotes": "app_getReleaseNotes",
"getAppVersion": "app_getApVersion",
"importJob": "app_importJob",
"setReleaseChannel": "app_setReleaseChannel",
"log": {
"info": "app_logInfo",
"debug": "app_logDebug",

View File

@@ -127,7 +127,7 @@ export function* signInSuccessSaga({ payload }) {
// LogRocket.identify(payload.email, {
// email: payload.email,
// });
ipcRenderer.send(ipcTypes.app.toMain.checkForUpdates);
//ipcRenderer.send(ipcTypes.app.toMain.checkForUpdates);
ipcRenderer.send(ipcTypes.app.toMain.track, {
event: "SIGN_IN_SUCCESS",
@@ -137,6 +137,7 @@ export function* signInSuccessSaga({ payload }) {
if (shop.data.bodyshops.length > 0) {
yield put(setBodyshop(shop.data.bodyshops[0]));
ipcRenderer.send(ipcTypes.app.toMain.setAcceptableInsCoNm, shop.data.bodyshops[0].accepted_ins_co);
ipcRenderer.send(ipcTypes.app.toMain.setReleaseChannel, shop.data.bodyshops[0].channel);
ipcRenderer.send(ipcTypes.fileWatcher.toMain.start, {
startup: true
});