Merged in feature/IO-3096-GlobalNotifications (pull request #2143)

Feature/IO-3096 GlobalNotifications
This commit is contained in:
Dave Richer
2025-03-04 16:57:30 +00:00
7 changed files with 39 additions and 38 deletions

View File

@@ -17,7 +17,7 @@
"@reduxjs/toolkit": "^2.6.0",
"@sentry/cli": "^2.42.2",
"@sentry/react": "^9.3.0",
"@sentry/vite-plugin": "^3.2.1",
"@sentry/vite-plugin": "^3.2.2",
"@splitsoftware/splitio-react": "^1.13.0",
"@tanem/react-nprogress": "^5.0.53",
"@vitejs/plugin-react": "^4.3.4",
@@ -92,7 +92,7 @@
"@emotion/babel-plugin": "^11.13.5",
"@emotion/react": "^11.14.0",
"@eslint/js": "^9.21.0",
"@sentry/webpack-plugin": "^3.2.1",
"@sentry/webpack-plugin": "^3.2.2",
"@testing-library/cypress": "^10.0.2",
"browserslist": "^4.24.4",
"browserslist-to-esbuild": "^2.1.1",
@@ -5311,9 +5311,9 @@
}
},
"node_modules/@sentry/babel-plugin-component-annotate": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.2.1.tgz",
"integrity": "sha512-tUp2e+CERpRFzTftjPxt7lg4BF0R3K+wGfeJyIqrc0tbJ2y6duT8OD0ArWoOi1g8xQ73NDn1/mEeS8pC+sbjTQ==",
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-3.2.2.tgz",
"integrity": "sha512-D+SKQ266ra/wo87s9+UI/rKQi3qhGPCR8eSCDe0VJudhjHsqyNU+JJ5lnIGCgmZaWFTXgdBP/gdr1Iz1zqGs4Q==",
"license": "MIT",
"engines": {
"node": ">= 14"
@@ -5336,13 +5336,13 @@
}
},
"node_modules/@sentry/bundler-plugin-core": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.2.1.tgz",
"integrity": "sha512-1wId05LXf6LyTeNwqyhSDSWYbYtFT/NQRqq3sW7hcL4nZuAgzT82PSvxeeCgR/D2qXOj7RCYXXZtyWzzo3wtXA==",
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-3.2.2.tgz",
"integrity": "sha512-YGrtmqQ2jMixccX2slVG/Lw7pCGJL3DGB3clmY9mO8QBEBIN3/gEANiHJVWwRidpUOS/0b7yVVGAdwZ87oPwTg==",
"license": "MIT",
"dependencies": {
"@babel/core": "^7.18.5",
"@sentry/babel-plugin-component-annotate": "3.2.1",
"@sentry/babel-plugin-component-annotate": "3.2.2",
"@sentry/cli": "2.42.2",
"dotenv": "^16.3.1",
"find-up": "^5.0.0",
@@ -5546,12 +5546,12 @@
}
},
"node_modules/@sentry/vite-plugin": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-3.2.1.tgz",
"integrity": "sha512-A/R9PAWPkWR6iqbJJ4C9BygcET0HAq5irEKy7xPmzB0mjW5XbDwbhQtHHnb6C1q/JrfzufB3TZWrG2XfrBRazg==",
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/@sentry/vite-plugin/-/vite-plugin-3.2.2.tgz",
"integrity": "sha512-WSkHOhZszMrIE9zmx2l4JhMnMlZmN/yAoHyf59pwFLIMctuZak6lNPbTbIFkFHDzIJ9Nut5RAVsw1qjmWc1PTA==",
"license": "MIT",
"dependencies": {
"@sentry/bundler-plugin-core": "3.2.1",
"@sentry/bundler-plugin-core": "3.2.2",
"unplugin": "1.0.1"
},
"engines": {
@@ -5559,13 +5559,13 @@
}
},
"node_modules/@sentry/webpack-plugin": {
"version": "3.2.1",
"resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.2.1.tgz",
"integrity": "sha512-wP/JDljhB9pCFc62rSwWbIglF2Os8FLV68pQuyJnmImM9cjGjlK6UO+qKa2pOLYsmAcnn+t3Bhu77bbzPIStCg==",
"version": "3.2.2",
"resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-3.2.2.tgz",
"integrity": "sha512-6OkVKNOjKk8P9j7oh6svZ+kEP1i9YIHBC2aGWL2XsgeZTIrMBxJAXtOf+qSrfMAxEtibSroGVOMQc/y3WJTQtg==",
"dev": true,
"license": "MIT",
"dependencies": {
"@sentry/bundler-plugin-core": "3.2.1",
"@sentry/bundler-plugin-core": "3.2.2",
"unplugin": "1.0.1",
"uuid": "^9.0.0"
},

View File

@@ -16,7 +16,7 @@
"@reduxjs/toolkit": "^2.6.0",
"@sentry/cli": "^2.42.2",
"@sentry/react": "^9.3.0",
"@sentry/vite-plugin": "^3.2.1",
"@sentry/vite-plugin": "^3.2.2",
"@splitsoftware/splitio-react": "^1.13.0",
"@tanem/react-nprogress": "^5.0.53",
"@vitejs/plugin-react": "^4.3.4",
@@ -127,7 +127,7 @@
"@emotion/babel-plugin": "^11.13.5",
"@emotion/react": "^11.14.0",
"@eslint/js": "^9.21.0",
"@sentry/webpack-plugin": "^3.2.1",
"@sentry/webpack-plugin": "^3.2.2",
"@testing-library/cypress": "^10.0.2",
"browserslist": "^4.24.4",
"browserslist-to-esbuild": "^2.1.1",

25
package-lock.json generated
View File

@@ -43,7 +43,7 @@
"intuit-oauth": "^4.2.0",
"ioredis": "^5.5.0",
"json-2-csv": "^5.5.8",
"juice": "^11.0.0",
"juice": "^11.0.1",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"moment-timezone": "^0.5.47",
@@ -56,7 +56,7 @@
"redis": "^4.7.0",
"rimraf": "^6.0.1",
"skia-canvas": "^2.0.2",
"soap": "^1.1.8",
"soap": "^1.1.9",
"socket.io": "^4.8.1",
"socket.io-adapter": "^2.5.5",
"ssh2-sftp-client": "^11.0.0",
@@ -75,7 +75,7 @@
"eslint-plugin-react": "^7.37.4",
"globals": "^15.15.0",
"p-limit": "^3.1.0",
"prettier": "^3.5.2",
"prettier": "^3.5.3",
"source-map-explorer": "^2.5.2"
},
"engines": {
@@ -7738,13 +7738,14 @@
}
},
"node_modules/juice": {
"version": "11.0.0",
"resolved": "https://registry.npmjs.org/juice/-/juice-11.0.0.tgz",
"integrity": "sha512-sGF8hPz9/Wg+YXbaNDqc1Iuoaw+J/P9lBHNQKXAGc9pPNjCd4fyPai0Zxj7MRtdjMr0lcgk5PjEIkP2b8R9F3w==",
"version": "11.0.1",
"resolved": "https://registry.npmjs.org/juice/-/juice-11.0.1.tgz",
"integrity": "sha512-R3KLud4l/sN9AMmFZs0QY7cugGSiKvPhGyIsufCV5nJ0MjSlngUE7k80TmFeK9I62wOXrjWBtYA1knVs2OkF8w==",
"license": "MIT",
"dependencies": {
"cheerio": "^1.0.0",
"commander": "^12.1.0",
"entities": "^4.5.0",
"mensch": "^0.3.4",
"slick": "^1.12.2",
"web-resource-inliner": "^7.0.0"
@@ -8975,9 +8976,9 @@
}
},
"node_modules/prettier": {
"version": "3.5.2",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.2.tgz",
"integrity": "sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==",
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
"integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==",
"dev": true,
"license": "MIT",
"bin": {
@@ -9919,9 +9920,9 @@
}
},
"node_modules/soap": {
"version": "1.1.8",
"resolved": "https://registry.npmjs.org/soap/-/soap-1.1.8.tgz",
"integrity": "sha512-fDNGyGsPkQP3bZX/366Ud5Kpjo9mCMh7ZKYIc3uipBEPPM2ZqCNkv1Z2/w0qpzpYFLL7do8WWwVUAjAwuUe1AQ==",
"version": "1.1.9",
"resolved": "https://registry.npmjs.org/soap/-/soap-1.1.9.tgz",
"integrity": "sha512-x6wMhwIwGFnMQiV0tLIygERELwpV/EkidUvzjcCPRx0D16YngNL8z7j5+nFad0Fl5irisXbfY2FKzvF9SEjMog==",
"license": "MIT",
"dependencies": {
"axios": "^1.7.9",

View File

@@ -53,7 +53,7 @@
"intuit-oauth": "^4.2.0",
"ioredis": "^5.5.0",
"json-2-csv": "^5.5.8",
"juice": "^11.0.0",
"juice": "^11.0.1",
"lodash": "^4.17.21",
"moment": "^2.30.1",
"moment-timezone": "^0.5.47",
@@ -66,7 +66,7 @@
"redis": "^4.7.0",
"rimraf": "^6.0.1",
"skia-canvas": "^2.0.2",
"soap": "^1.1.8",
"soap": "^1.1.9",
"socket.io": "^4.8.1",
"socket.io-adapter": "^2.5.5",
"ssh2-sftp-client": "^11.0.0",
@@ -85,7 +85,7 @@
"eslint-plugin-react": "^7.37.4",
"globals": "^15.15.0",
"p-limit": "^3.1.0",
"prettier": "^3.5.2",
"prettier": "^3.5.3",
"source-map-explorer": "^2.5.2"
}
}

View File

@@ -138,7 +138,7 @@ const loadAppQueue = async ({ pubClient, logger, redisHelpers, ioRedis }) => {
await pubClient.del(userKey);
logger.logger.debug(`Deleted Redis key ${userKey}`);
} else {
logger.logger.warn(`No notifications found for ${user} under ${userKey}`);
logger.logger.debug(`No notifications found for ${user} under ${userKey}`);
}
}
@@ -207,7 +207,7 @@ const loadAppQueue = async ({ pubClient, logger, redisHelpers, ioRedis }) => {
`Sent ${notifications.length} consolidated notifications to ${user} for jobId ${jobId} with notificationId ${notificationId}`
);
} else {
logger.logger.warn(`No socket IDs found for ${user} in bodyShopId ${bodyShopId}`);
logger.logger.debug(`No socket IDs found for ${user} in bodyShopId ${bodyShopId}`);
}
}
}

View File

@@ -5,7 +5,7 @@ const { InstanceEndpoints } = require("../../utils/instanceMgr");
const { registerCleanupTask } = require("../../utils/cleanupManager");
const EMAIL_CONSOLIDATION_DELAY_IN_MINS = (() => {
const envValue = process.env?.APP_CONSOLIDATION_DELAY_IN_MINS;
const envValue = process.env?.EMAIL_CONSOLIDATION_DELAY_IN_MINS;
const parsedValue = envValue ? parseInt(envValue, 10) : NaN;
return isNaN(parsedValue) ? 1 : Math.max(1, parsedValue); // Default to 1, ensure at least 1
})();

View File

@@ -16,7 +16,7 @@ const { dispatchEmailsToQueue } = require("./queues/emailQueue");
const { dispatchAppsToQueue } = require("./queues/appQueue");
// If true, the user who commits the action will NOT receive notifications; if false, they will.
const FILTER_SELF_FROM_WATCHERS = process.env?.FILTER_SELF_FROM_WATCHERS === "true";
const FILTER_SELF_FROM_WATCHERS = process.env?.FILTER_SELF_FROM_WATCHERS !== "false";
/**
* Parses an event and determines matching scenarios for notifications.