refactor(chat): not use transactions
gitea/salix/pipeline/head There was a failure building this commit
Details
gitea/salix/pipeline/head There was a failure building this commit
Details
This commit is contained in:
parent
9ec2f731ae
commit
f06fc92ae8
|
@ -42,9 +42,9 @@ module.exports = Self => {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Self.sendMessage(chat.senderFk, chat.recipient, chat.message);
|
await Self.sendMessage(chat.senderFk, chat.recipient, chat.message);
|
||||||
await updateChat(chat, 'sent');
|
await Self.updateChat(chat, 'sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await updateChat(chat, 'error', error);
|
await Self.updateChat(chat, 'error', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -24,24 +24,13 @@ module.exports = Self => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
Self.sendCheckingPresence = async(ctx, recipientId, message, options) => {
|
Self.sendCheckingPresence = async(ctx, recipientId, message) => {
|
||||||
if (!recipientId) return false;
|
if (!recipientId) return false;
|
||||||
|
|
||||||
let tx;
|
|
||||||
const myOptions = {};
|
|
||||||
|
|
||||||
if (typeof options == 'object')
|
|
||||||
Object.assign(myOptions, options);
|
|
||||||
|
|
||||||
if (!myOptions.transaction) {
|
|
||||||
tx = await Self.beginTransaction({});
|
|
||||||
myOptions.transaction = tx;
|
|
||||||
}
|
|
||||||
|
|
||||||
const models = Self.app.models;
|
const models = Self.app.models;
|
||||||
const userId = ctx.req.accessToken.userId;
|
const userId = ctx.req.accessToken.userId;
|
||||||
const sender = await models.Account.findById(userId);
|
const sender = await models.Account.findById(userId, {fields: ['id']});
|
||||||
const recipient = await models.Account.findById(recipientId, null, myOptions);
|
const recipient = await models.Account.findById(recipientId, null);
|
||||||
|
|
||||||
// Prevent sending messages to yourself
|
// Prevent sending messages to yourself
|
||||||
if (recipientId == userId) return false;
|
if (recipientId == userId) return false;
|
||||||
|
@ -57,35 +46,15 @@ module.exports = Self => {
|
||||||
message: message,
|
message: message,
|
||||||
status: 'sending',
|
status: 'sending',
|
||||||
attempts: 0
|
attempts: 0
|
||||||
}, myOptions);
|
});
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await Self.sendCheckingUserStatus(chat);
|
await Self.sendCheckingUserStatus(chat);
|
||||||
await updateChat(chat, 'sent', myOptions);
|
await Self.updateChat(chat, 'sent');
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
await updateChat(chat, 'error', error, myOptions);
|
await Self.updateChat(chat, 'error', error);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tx) await tx.commit();
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
|
||||||
* Update status and attempts of a chat
|
|
||||||
*
|
|
||||||
* @param {object} chat - The chat
|
|
||||||
* @param {string} status - The new status
|
|
||||||
* @param {string} error - The error
|
|
||||||
* @param {object} options - Query options
|
|
||||||
* @return {Promise} - The request promise
|
|
||||||
*/
|
|
||||||
|
|
||||||
async function updateChat(chat, status, error, options) {
|
|
||||||
return chat.updateAttributes({
|
|
||||||
status: status,
|
|
||||||
attempts: ++chat.attempts,
|
|
||||||
error: error
|
|
||||||
}, options);
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
|
@ -131,16 +131,17 @@ module.exports = Self => {
|
||||||
* @param {object} chat - The chat
|
* @param {object} chat - The chat
|
||||||
* @param {string} status - The new status
|
* @param {string} status - The new status
|
||||||
* @param {string} error - The error
|
* @param {string} error - The error
|
||||||
|
* @param {object} options - Query options
|
||||||
* @return {Promise} - The request promise
|
* @return {Promise} - The request promise
|
||||||
*/
|
*/
|
||||||
|
|
||||||
async function updateChat(chat, status, error) {
|
Self.updateChat = async(chat, status, error) => {
|
||||||
return chat.updateAttributes({
|
return chat.updateAttributes({
|
||||||
status: status,
|
status: status,
|
||||||
attempts: ++chat.attempts,
|
attempts: ++chat.attempts,
|
||||||
error: error
|
error: error
|
||||||
});
|
});
|
||||||
}
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the current user status on Rocketchat
|
* Returns the current user status on Rocketchat
|
||||||
|
|
Loading…
Reference in New Issue