mirror of
https://github.com/Ocelot-Social-Community/Ocelot-Social.git
synced 2025-12-13 07:46:06 +00:00
client
This commit is contained in:
parent
316c12bd35
commit
21f9feb516
7
webapp/graphql/updateOnlineStatus.js
Normal file
7
webapp/graphql/updateOnlineStatus.js
Normal file
@ -0,0 +1,7 @@
|
||||
import gql from 'graphql-tag'
|
||||
|
||||
export const updateOnlineStatus = gql`
|
||||
mutation ($status: OnlineStatus!) {
|
||||
updateOnlineStatus(status: $status)
|
||||
}
|
||||
`
|
||||
@ -130,6 +130,7 @@ export default {
|
||||
{ src: '~/plugins/vue-observe-visibility.js', ssr: false },
|
||||
{ src: '~/plugins/v-mapbox.js', mode: 'client' },
|
||||
{ src: '~/plugins/vue-advanced-chat.js', mode: 'client' },
|
||||
{ src: '~/plugins/onlineStatus.js', mode: 'client' },
|
||||
],
|
||||
|
||||
router: {
|
||||
|
||||
30
webapp/plugins/onlineStatus.js
Normal file
30
webapp/plugins/onlineStatus.js
Normal file
@ -0,0 +1,30 @@
|
||||
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 },
|
||||
})
|
||||
|
||||
// TODO
|
||||
console.log(`call home as ${status} at ${new Date().toUTCString()}`)
|
||||
}
|
||||
|
||||
export default ({ app }) => {
|
||||
_app = app
|
||||
if (process.client) {
|
||||
window.addEventListener('visibilitychange', updateOnlineStatus)
|
||||
setInterval(updateOnlineStatus, 30000)
|
||||
updateOnlineStatus()
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user