fix(backend): fix potential leak in updateOnlineStatus (#8923)

Co-authored-by: Wolfgang Huß <wolle.huss@pjannto.com>
This commit is contained in:
Ulf Gebhardt 2025-09-27 14:37:12 +02:00 committed by GitHub
parent 33ca59343a
commit e4717e0d89
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -353,14 +353,11 @@ export default {
session.close()
}
},
updateOnlineStatus: async (_object, args, context, _resolveInfo) => {
updateOnlineStatus: async (_object, args, context: Context, _resolveInfo) => {
const { status } = args
const {
user: { id },
} = context
const CYPHER_AWAY = `
MATCH (user:User {id: $id})
MATCH (user:User {id: $user.id})
WITH user,
CASE user.lastOnlineStatus
WHEN 'away' THEN user.awaySince
@ -370,16 +367,14 @@ export default {
SET user.lastOnlineStatus = $status
`
const CYPHER_ONLINE = `
MATCH (user:User {id: $id})
MATCH (user:User {id: $user.id})
SET user.awaySince = null
SET user.lastOnlineStatus = $status
`
// Last Online Time is saved as `lastActiveAt`
const session = context.driver.session()
await session.writeTransaction((transaction) => {
// return transaction.run(status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, { id, status })
return transaction.run(status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE, { id, status })
await context.database.write({
query: status === 'away' ? CYPHER_AWAY : CYPHER_ONLINE,
variables: { user: context.user, status },
})
return true