Ocelot-Social/webapp/plugins/onlineStatus.js
2025-04-02 16:35:10 +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()
}
}