Untitled
unknown
plain_text
a year ago
3.1 kB
8
Indexable
const survivalsQueue = new Queue('survivalsQueue', redisConfig);
const survivalsCheckQueue = new Queue('survivalsCheckQueue', redisConfig);
survivalsQueue.process(async (job) => {
const {
internalMsgId,
updateSendStatus = false,
templateKey,
templateRaw,
options,
to
} = job.data;
if (!to || !internalMsgId || (!templateRaw && !templateKey)) return Promise.resolve();
const { userId, token, data, lang } = to
const isSurvivalActive = await UserService.getSurvivalStatus({ userId })
// Controllo se è ancora attiva
if (!isSurvivalActive) return
const template = { subject: null, text: null }
// Init template
if (templateRaw) {
template.subject = templateRaw.subject
template.text = templateRaw.body
} else {
const templateFromDb = await TemplateMessagesService.getByKey(templateKey)
if (!templateFromDb.subject || !templateFromDb.body) return Promise.resolve();
template.subject = templateFromDb.subject
template.text = templateFromDb.body
}
// --
// Send
if (!lang || !token) return
const message = {
token: token,
data: renderTemplate(lang.toLowerCase(), data)
}
try {
const response = await messaging().send(message)
console.log(response.successCount + ' messages were sent successfully')
// Check message confirm
survivalsCheckQueue.add({
to,
updateSendStatus,
templateKey,
templateRaw,
internalMsgId,
updateSendStatus
}, { delay: 5 * 60 * 1000 });
/* updateSendStatus && messagesService.updateStatusByUserIds({ id: internalMsgId, status: true }) */
} catch (error) {
console.error(error)
/* updateSendStatus && messagesService.updateStatusByUserIds({ id: internalMsgId, status: false, errorMsg: error }) */
}
return Promise.resolve();
});
// Block Survival Check
survivalsCheckQueue.process(async (job) => {
const {
internalMsgId,
updateSendStatus = false,
templateKey,
templateRaw,
options,
to
} = job.data;
if (!userId || !internalMsgId) return Promise.resolve();
const { userId } = to
const isSurvivalActive = await SurvivalService.getStatus({ userId })
// Controllo se è ancora attiva
if (!isSurvivalActive) return
// check if user sent confirm
const message = await messagesService.getByUserId({ userId })
// Check if message is confirmed. replyConfirm?! is the field?
if (message.replyConfirm === false) {
await Promise.all([
UserService.disableSurvivalModeById({ userId }),
AlarmService.create({ userId })
])
} else {
survivalsQueue.add({
internalMsgId,
updateSendStatus,
templateKey,
templateRaw,
options,
to
}, { delay: 60 * 60 * 1000 })
}
})Editor is loading...
Leave a Comment