Ocelot-Social/webapp/plugins/onlineStatus.js
Ulf Gebhardt 01027e42cc
feat(webapp): track online status (#8312)
* client

* backend

* tests

* also save awaySince timestamp

* remove console.log
2025-04-03 17:19:53 +02:00

28 lines
643 B
JavaScript

import { updateOnlineStatus as updateOnlineStatusMutation } from '~/graphql/updateOnlineStatus.js'
let _app = null
const updateOnlineStatus = async () => {
if (!_app.store.getters['auth/isAuthenticated']) {
return
}
const status = document.hidden ? 'away' : 'online'
const client = _app.apolloProvider.defaultClient
await client.mutate({
mutation: updateOnlineStatusMutation,
variables: { status },
})
}
export default ({ app }) => {
_app = app
if (process.client) {
window.addEventListener('visibilitychange', updateOnlineStatus)
setInterval(updateOnlineStatus, 30000)
updateOnlineStatus()
}
}