diff --git a/electron/analytics.js b/electron/analytics.js index 6421316..e3f46c5 100644 --- a/electron/analytics.js +++ b/electron/analytics.js @@ -3,7 +3,11 @@ const { ipcMain } = require("electron"); const log = require("electron-log"); //const Nucleus = require("nucleus-nodejs"); const { default: ipcTypes } = require("../src/ipc.types.commonjs"); - +const amplitude = require('@amplitude/analytics-node'); +const { store } = require("./electron-store"); +const deviceId = store.get("deviceId"); +let userId; +amplitude.init('a733ff926aef84f93baf95e66b5dcb75'); // Nucleus.init("5f91b569b95bac34eefdb63a", { // disableInDev: true, // debug: false, @@ -19,16 +23,16 @@ const { default: ipcTypes } = require("../src/ipc.types.commonjs"); // // type will either be uncaughtException, unhandledRejection or windowError // }; -ipcMain.on(ipcTypes.app.toMain.setUserName, (event, userName) => { -// Nucleus.setUserId(userName); -// Nucleus.appStarted(); +ipcMain.on(ipcTypes.app.toMain.setUserName, (event, userid) => { + userId = userid; }); ipcMain.on(ipcTypes.app.toMain.track, (e, args) => { - log.log("NUCLEUS Event", args); - // const { event, ...eventDetails } = args; + // log.log("Analytics Event", args); + const { event, ...eventDetails } = args; try { - //// Nucleus.track(event, eventDetails); + //// Nucleus.track(event, eventDetails); + amplitude.track(event, eventDetails, { device_id: deviceId, user_id: userId }); } catch (error) { log.error(error); } diff --git a/electron/electron-store.js b/electron/electron-store.js index 488fe8d..f7e5f7f 100644 --- a/electron/electron-store.js +++ b/electron/electron-store.js @@ -1,7 +1,9 @@ +const { randomUUID } = require("crypto"); const Store = require("electron-store"); const store = new Store({ defaults: { + deviceId: randomUUID(), showChangeLog: true, enableNotifications: true, filePaths: [], diff --git a/electron/estimate-scrubber/estimate-scrubber.js b/electron/estimate-scrubber/estimate-scrubber.js index f5cb9db..4cde985 100644 --- a/electron/estimate-scrubber/estimate-scrubber.js +++ b/electron/estimate-scrubber/estimate-scrubber.js @@ -37,7 +37,10 @@ async function ScrubEstimate({ job }) { const basicAuthUser = "Imex2"; const basicAuthpassword = "Patrick"; const currentChannel = autoUpdater.channel - const estimateScrubberUrl = process.env.NODE_ENV === undefined || currentChannel === 'alpha' ? 'https://4284-79073.el-alt.com/api/sendems' : "https://insurtechtoolkit.com/api/sendems"; + const estimateScrubberUrl = + process.env.NODE_ENV === undefined ? "https://4284-79287.el-alt.com" : //dev specific URL. + currentChannel === 'beta' ? 'https://4284-79073.el-alt.com/api/sendems' //Beta specific URL. + : "https://insurtechtoolkit.com/api/sendems"; //Production route. log.debug(`Estimate Scrubber URL: [${currentChannel} |`, estimateScrubberUrl); const sendingEntityId = "87330f61-412b-4251-baaa-d026565b23c5"; try { diff --git a/package-lock.json b/package-lock.json index c2fa3c6..acb5447 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { "name": "imexrps", - "version": "1.4.1-alpha.1", + "version": "1.4.2-alpha.15", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "imexrps", - "version": "1.4.1-alpha.1", + "version": "1.4.2-alpha.15", "hasInstallScript": true, "dependencies": { + "@amplitude/analytics-node": "^1.5.10", "@ant-design/pro-layout": "^7.22.3", "@apollo/client": "^3.13.4", "@sentry/electron": "^6.1.0", @@ -66,6 +67,32 @@ "vite-plugin-style-import": "^2.0.0" } }, + "node_modules/@amplitude/analytics-connector": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-connector/-/analytics-connector-1.6.4.tgz", + "integrity": "sha512-SpIv0IQMNIq6SH3UqFGiaZyGSc7PBZwRdq7lvP0pBxW8i4Ny+8zwI0pV+VMfMHQwWY3wdIbWw5WQphNjpdq1/Q==", + "license": "MIT" + }, + "node_modules/@amplitude/analytics-core": { + "version": "2.24.1", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-core/-/analytics-core-2.24.1.tgz", + "integrity": "sha512-cXU6/iq2NysqXR+E+5LXTcOnWSuWU9VJT/2BUPohfbDVFVss+dhLpagEe8H5HwnffexMl0bypebAgZ9At7Y75g==", + "license": "MIT", + "dependencies": { + "@amplitude/analytics-connector": "^1.6.4", + "tslib": "^2.4.1" + } + }, + "node_modules/@amplitude/analytics-node": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/@amplitude/analytics-node/-/analytics-node-1.5.10.tgz", + "integrity": "sha512-u77NWS0ng17mUlc1OW6CVDHLE0XeidB6TCre9N+PdkMmu1XX+H0qjeOB0NrqfXGneRo2aHm1J5trfXBLI95xGA==", + "license": "MIT", + "dependencies": { + "@amplitude/analytics-core": "^2.24.1", + "tslib": "^2.4.1" + } + }, "node_modules/@ampproject/remapping": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", diff --git a/package.json b/package.json index 19017a7..094dcd1 100644 --- a/package.json +++ b/package.json @@ -3,10 +3,11 @@ "productName": "ImEX RPS", "author": "ImEX Systems Inc. ", "description": "ImEX RPS", - "version": "1.4.2-alpha.15", + "version": "1.4.2-alpha.16", "main": "electron/main.js", "homepage": "./", "dependencies": { + "@amplitude/analytics-node": "^1.5.10", "@ant-design/pro-layout": "^7.22.3", "@apollo/client": "^3.13.4", "@sentry/electron": "^6.1.0", diff --git a/src/App/App.jsx b/src/App/App.jsx index bd3632c..6a4988e 100644 --- a/src/App/App.jsx +++ b/src/App/App.jsx @@ -35,6 +35,12 @@ export function App({ currentUser, checkUserSession, darkMode }) { checkUserSession(); }, [checkUserSession]); + useEffect(() => { + if (currentUser && currentUser.email) { + ipcRenderer.send(ipcTypes.app.toMain.setUserName, currentUser.email); + } + }, [currentUser]); + useEffect(() => { // return () => { diff --git a/src/components/molecules/reporting-dates/reporting-dates.molecule.jsx b/src/components/molecules/reporting-dates/reporting-dates.molecule.jsx index 8c9dd28..647dcb8 100644 --- a/src/components/molecules/reporting-dates/reporting-dates.molecule.jsx +++ b/src/components/molecules/reporting-dates/reporting-dates.molecule.jsx @@ -4,6 +4,9 @@ import { connect } from "react-redux"; import { createStructuredSelector } from "reselect"; import { queryReportingData } from "../../../redux/reporting/reporting.actions"; import dayjs from "../../../util/day.js"; +import ipcTypes from "../../../ipc.types.js"; +import { range } from "lodash"; +const { ipcRenderer } = window; const mapStateToProps = createStructuredSelector({ //currentUser: selectCurrentUser }); @@ -24,139 +27,169 @@ export function ReportingDatesMolecule({ queryReportingData }) { return (
- - + + 1) { - return Promise.reject("Time period exceeds 1 year. Please select a shorter date range."); - } else { - return Promise.resolve(); + if (dayjs(value[1]).diff(dayjs(value[0]), "years", true) > 1) { + return Promise.reject("Time period exceeds 1 year. Please select a shorter date range."); + } else { + return Promise.resolve(); + } } } - } - ]} - > - + + + + + + Quick Ranges: + - - - Quick Ranges: - - - - - - - - - + > + Last Month + + + + + + + + + +
); diff --git a/src/components/molecules/reporting-jobs-list/reporting-jobs-list.molecule.jsx b/src/components/molecules/reporting-jobs-list/reporting-jobs-list.molecule.jsx index 54d30d2..56f088c 100644 --- a/src/components/molecules/reporting-jobs-list/reporting-jobs-list.molecule.jsx +++ b/src/components/molecules/reporting-jobs-list/reporting-jobs-list.molecule.jsx @@ -185,6 +185,9 @@ export function ReportingJobsListMolecule({ checked={excludedIds.includes(record.id)} onChange={(checked) => { checked ? addExcludedId(record.id) : removeExcludedId(record.id); + ipcRenderer.send(ipcTypes.app.toMain.track, { + event: "TOGGLE_SCENARIO_MANAGER", + }); }} /> ) diff --git a/src/components/pages/audit/audit.page.jsx b/src/components/pages/audit/audit.page.jsx index 2bfa036..1517ef9 100644 --- a/src/components/pages/audit/audit.page.jsx +++ b/src/components/pages/audit/audit.page.jsx @@ -56,7 +56,9 @@ export function AuditPage({ auditError, queryReportingData, bodyshop, reportingE }; const handleRunAudit = async ({ sheetName, dateRange }) => { - console.log("🚀 ~ handleRunAudit ~ sheetName:", sheetName); + ipcRenderer.send(ipcTypes.app.toMain.track, { + event: "RUN_AUDIT" + }); ipcRenderer.send(ipcTypes.audit.toMain.runAudit, { sheetName }); };