diff --git a/electron/main.js b/electron/main.js index 4a95f6a..f28ecdc 100644 --- a/electron/main.js +++ b/electron/main.js @@ -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(); }); diff --git a/hasura/metadata/databases/default/tables/public_bodyshops.yaml b/hasura/metadata/databases/default/tables/public_bodyshops.yaml index 55048ce..113d4b9 100644 --- a/hasura/metadata/databases/default/tables/public_bodyshops.yaml +++ b/hasura/metadata/databases/default/tables/public_bodyshops.yaml @@ -28,6 +28,7 @@ select_permissions: permission: columns: - accepted_ins_co + - channel - created_at - features - groups diff --git a/hasura/migrations/default/1715296413886_alter_table_public_bodyshops_add_column_channel/down.sql b/hasura/migrations/default/1715296413886_alter_table_public_bodyshops_add_column_channel/down.sql new file mode 100644 index 0000000..bbb6021 --- /dev/null +++ b/hasura/migrations/default/1715296413886_alter_table_public_bodyshops_add_column_channel/down.sql @@ -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'; diff --git a/hasura/migrations/default/1715296413886_alter_table_public_bodyshops_add_column_channel/up.sql b/hasura/migrations/default/1715296413886_alter_table_public_bodyshops_add_column_channel/up.sql new file mode 100644 index 0000000..20c3efd --- /dev/null +++ b/hasura/migrations/default/1715296413886_alter_table_public_bodyshops_add_column_channel/up.sql @@ -0,0 +1,2 @@ +alter table "public"."bodyshops" add column "channel" text + null default 'latest'; diff --git a/package.json b/package.json index fceb4f0..7d7fcfe 100644 --- a/package.json +++ b/package.json @@ -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.", diff --git a/src/components/pages/audit/audit.page.jsx b/src/components/pages/audit/audit.page.jsx index fbffef6..918163b 100644 --- a/src/components/pages/audit/audit.page.jsx +++ b/src/components/pages/audit/audit.page.jsx @@ -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 ( - + }>
+ {bodyshop.features.audit_trial && ( + + )} @@ -126,3 +134,42 @@ export function AuditPage({ auditError, queryReportingData }) { ); } + +function NoAuditAccess({ features }) { + return ( + { + 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 + + ) : ( + + ) + } + /> + ); +} diff --git a/src/graphql/bodyshop.queries.js b/src/graphql/bodyshop.queries.js index ab1adff..d318030 100644 --- a/src/graphql/bodyshop.queries.js +++ b/src/graphql/bodyshop.queries.js @@ -9,6 +9,7 @@ export const QUERY_BODYSHOP = gql` groups ppd_diff_alert features + channel } targets { id diff --git a/src/ipc.types.json b/src/ipc.types.json index 81d9bc1..d30135f 100644 --- a/src/ipc.types.json +++ b/src/ipc.types.json @@ -15,6 +15,7 @@ "getReleaseNotes": "app_getReleaseNotes", "getAppVersion": "app_getApVersion", "importJob": "app_importJob", + "setReleaseChannel": "app_setReleaseChannel", "log": { "info": "app_logInfo", "debug": "app_logDebug", diff --git a/src/redux/user/user.sagas.js b/src/redux/user/user.sagas.js index 7a5eea9..1b6b8f4 100644 --- a/src/redux/user/user.sagas.js +++ b/src/redux/user/user.sagas.js @@ -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 });