feat: sendCheckingPresence debug #3349
|
@ -27,38 +27,47 @@ module.exports = Self => {
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.sendCheckingPresence = async(ctx, recipientId, message) => {
|
Self.sendCheckingPresence = async(ctx, recipientId, message) => {
|
||||||
if (!recipientId) return false;
|
|
||||||
const models = Self.app.models;
|
|
||||||
|
|
||||||
const userId = ctx.req.accessToken.userId;
|
const userId = ctx.req.accessToken.userId;
|
||||||
const sender = await models.VnUser.findById(userId, {fields: ['id']});
|
|
||||||
const recipient = await models.VnUser.findById(recipientId, null);
|
|
||||||
|
|
||||||
// Prevent sending messages to yourself
|
|
||||||
if (recipientId == userId) return false;
|
|
||||||
if (!recipient)
|
|
||||||
throw new Error(`Could not send message "${message}" to worker id ${recipientId} from user ${userId}`);
|
|
||||||
|
|
||||||
if (!isProduction())
|
|
||||||
message = `[Test:Environment to user ${userId}] ` + message;
|
|
||||||
|
|
||||||
const chat = await models.Chat.create({
|
|
||||||
senderFk: sender.id,
|
|
||||||
recipient: `@${recipient.name}`,
|
|
||||||
dated: Date.vnNew(),
|
|
||||||
checkUserStatus: 1,
|
|
||||||
message: message,
|
|
||||||
status: 'sending',
|
|
||||||
attempts: 0
|
|
||||||
});
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Self.sendCheckingUserStatus(chat);
|
const models = Self.app.models;
|
||||||
await Self.updateChat(chat, 'sent');
|
const sender = await models.VnUser.findById(userId, {fields: ['id']});
|
||||||
} catch (error) {
|
const error = `Could not send message from user ${userId}`;
|
||||||
await Self.updateChat(chat, 'error', error);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
if (!recipientId) throw new Error(error);
|
||||||
|
const recipient = await models.VnUser.findById(recipientId, null);
|
||||||
|
if (!recipient)
|
||||||
|
throw new Error(error);
|
||||||
|
|
||||||
|
// Prevent sending messages to yourself
|
||||||
|
if (recipientId == userId) return false;
|
||||||
|
|
||||||
|
if (!isProduction())
|
||||||
|
message = `[Test:Environment to user ${userId}] ` + message;
|
||||||
|
|
||||||
|
const chat = await models.Chat.create({
|
||||||
|
senderFk: sender.id,
|
||||||
|
recipient: `@${recipient.name}`,
|
||||||
|
dated: Date.vnNew(),
|
||||||
|
checkUserStatus: 1,
|
||||||
|
message: message,
|
||||||
|
status: 'sending',
|
||||||
|
attempts: 0
|
||||||
|
});
|
||||||
|
|
||||||
|
try {
|
||||||
|
await Self.sendCheckingUserStatus(chat);
|
||||||
|
await Self.updateChat(chat, 'sent');
|
||||||
|
} catch (error) {
|
||||||
|
await Self.updateChat(chat, 'error', error);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
} catch (e) {
|
||||||
|
await Self.rawSql(`
|
||||||
|
INSERT INTO util.debug (variable, value)
|
||||||
|
VALUES ('sendCheckingPresence_error', ?)
|
||||||
|
`, [`User: ${userId}, recipient: ${recipientId}, message: ${message}, error: ${e}`]);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue