Skip to content

Commit faff5fe

Browse files
author
Sachin Maheshwari
committed
fixing multiple member and group calls and duplicate user notifications
1 parent bfaccec commit faff5fe

File tree

3 files changed

+32
-13
lines changed

3 files changed

+32
-13
lines changed

src/common/broadcastAPIHelper.js

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ const m2m = m2mAuth(config)
1313
const cache = new NodeCache()
1414

1515
const logPrefix = "BroadcastAPI: "
16-
const cachedTimeInSeconds = 60 //60 seconds
16+
const cachedTimeInSeconds = 300 //300 seconds
1717

1818
/**
1919
* Helper Function - get m2m token
@@ -112,12 +112,16 @@ async function callApi(url, machineToken) {
112112

113113
/**
114114
* Helper function - check Skills and Tracks condition
115+
*
116+
* @param {Integer} userId
117+
* @param {Object} bulkMessage
118+
* @param {Object} m memberInfo
119+
*
115120
*/
116-
async function checkUserSkillsAndTracks(userId, bulkMessage) {
121+
async function checkUserSkillsAndTracks(userId, bulkMessage, m) {
117122
try {
118123
const skills = _.get(bulkMessage, 'recipients.skills')
119124
const tracks = _.get(bulkMessage, 'recipients.tracks')
120-
const m = await getMemberInfo(userId)
121125
let skillMatch, trackMatch = false // default
122126
if (skills && skills.length > 0) {
123127
const ms = _.get(m[0], "skills") // get member skills
@@ -169,11 +173,10 @@ async function checkUserSkillsAndTracks(userId, bulkMessage) {
169173
/**
170174
* Helper function - check group condition
171175
*/
172-
async function checkUserGroup(userId, bulkMessage) {
176+
async function checkUserGroup(userId, bulkMessage, userGroupInfo) {
173177
try {
174178
const groups = _.get(bulkMessage, 'recipients.groups')
175179
let flag = false // default
176-
const userGroupInfo = await getUserGroup(userId)
177180
if (groups.length > 0) {
178181
_.map(userGroupInfo, (o) => {
179182
// particular group only condition
@@ -199,12 +202,16 @@ async function checkUserGroup(userId, bulkMessage) {
199202
*
200203
* @param {Integer} userId
201204
* @param {Object} bulkMessage
205+
* @param {Object} memberInfo
206+
* @param {Object} userGroupInfo
207+
*
208+
* @return Promise
202209
*/
203-
async function checkBroadcastMessageForUser(userId, bulkMessage) {
210+
async function checkBroadcastMessageForUser(userId, bulkMessage, memberInfo, userGroupInfo) {
204211
return new Promise(function (resolve, reject) {
205212
Promise.all([
206-
checkUserSkillsAndTracks(userId, bulkMessage),
207-
checkUserGroup(userId, bulkMessage),
213+
checkUserSkillsAndTracks(userId, bulkMessage, memberInfo),
214+
checkUserGroup(userId, bulkMessage, userGroupInfo),
208215
]).then((results) => {
209216
let flag = true // TODO need to be sure about default value
210217
_.map(results, (r) => {
@@ -224,4 +231,6 @@ async function checkBroadcastMessageForUser(userId, bulkMessage) {
224231

225232
module.exports = {
226233
checkBroadcastMessageForUser,
234+
getMemberInfo,
235+
getUserGroup,
227236
}

src/common/tcApiHelper.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ function filterChallengeUsers(usersInfo, filterOnRoles = [], filterOnUsers = [])
288288
}
289289
});
290290
logger.info(`Total roles available in this challenge are: ${rolesAvailable.join(',')}`);
291-
return users;
291+
return _.uniqBy(users, 'userId');
292292
}
293293

294294
/**

src/hooks/hookBulkMessage.js

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,14 @@ async function syncBulkMessageForUser(userId) {
6666
" FROM bulk_message_user_refs AS bmur WHERE bmur.user_id=$1)" +
6767
" AS b ON a.id=b.bulk_message_id WHERE b.refid IS NULL"
6868
models.sequelize.query(q, { bind: [userId] })
69-
.then(function (res) {
70-
Promise.all(res[0].map((r) => isBroadCastMessageForUser(userId, r)))
69+
.then(async function (res) {
70+
try {
71+
const memberInfo = await api.getMemberInfo(userId)
72+
const userGroupInfo = await getUserGroup(userId)
73+
} catch(e) {
74+
reject(`${logPrefix} Failed to get member/group info: ${e}`)
75+
}
76+
Promise.all(res[0].map((r) => isBroadCastMessageForUser(userId, r, memberInfo, userGroupInfo)))
7177
.then((results) => {
7278
Promise.all(results.map((o) => {
7379
if (o.result) {
@@ -94,9 +100,13 @@ async function syncBulkMessageForUser(userId) {
94100
* Check if current user in broadcast recipent group
95101
* @param {Integer} userId
96102
* @param {Object} bulkMessage
103+
* @param {Object} memberInfo
104+
* @param {Object} userGroupInfo
105+
*
106+
* @retun promise
97107
*/
98-
async function isBroadCastMessageForUser(userId, bulkMessage) {
99-
return api.checkBroadcastMessageForUser(userId, bulkMessage)
108+
async function isBroadCastMessageForUser(userId, bulkMessage, memberInfo, userGroupInfo) {
109+
return api.checkBroadcastMessageForUser(userId, bulkMessage, memberInfo, userGroupInfo)
100110
}
101111

102112
/**

0 commit comments

Comments
 (0)