Skip to content

Commit 2719991

Browse files
Anthony KinseyAnthony Kinsey
Anthony Kinsey
authored and
Anthony Kinsey
committed
feat: implement user online socket check for patrol page
1 parent 2eb0a56 commit 2719991

File tree

1 file changed

+34
-4
lines changed

1 file changed

+34
-4
lines changed

src/views/Patrol.vue

+34-4
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,7 @@ import PostsReportModal from '@/components/modals/posts/Report.vue'
166166
import PostsDeleteModal from '@/components/modals/posts/Delete.vue'
167167
import PostsUndeleteModal from '@/components/modals/posts/Undelete.vue'
168168
import PostsPurgePostModal from '@/components/modals/posts/PurgePost.vue'
169+
import { isOnline } from '@/composables/services/websocket'
169170
170171
export default {
171172
name: 'Patrol',
@@ -175,14 +176,22 @@ export default {
175176
limit: to.query.limit || localStoragePrefs().data.posts_per_page,
176177
page: to.query.page || 1
177178
}
178-
next(vm => postsApi.byNewbie(query).then(d => vm.patrolData = d).catch(() => {}))
179+
next(vm => postsApi.byNewbie(query)
180+
.then(d => {
181+
vm.patrolData = d
182+
vm.checkUsersOnline()
183+
}).catch(() => {}))
179184
},
180185
beforeRouteUpdate(to, from, next) {
181186
const query = {
182187
limit: to.query.limit || localStoragePrefs().data.posts_per_page,
183188
page: to.query.page || 1
184189
}
185-
postsApi.byNewbie(query).then(d => this.patrolData = d).catch(() => {})
190+
postsApi.byNewbie(query)
191+
.then(d => {
192+
this.patrolData = d
193+
this.checkUsersOnline()
194+
}).catch(() => {})
186195
next()
187196
},
188197
setup() {
@@ -300,7 +309,11 @@ export default {
300309
const refreshPosts = () => postsApi.byNewbie({
301310
limit: $route.query.limit || localStoragePrefs().data.posts_per_page,
302311
page: $route.query.page || 1
303-
}).then(d => v.patrolData = d).catch(() => {})
312+
})
313+
.then(d => {
314+
v.patrolData = d
315+
checkUsersOnline()
316+
}).catch(() => {})
304317
305318
const lockPost = post => postsApi.lock(post.id)
306319
.then(() => {
@@ -313,6 +326,23 @@ export default {
313326
post.locked = false
314327
})
315328
329+
const checkUsersOnline = () => {
330+
let uniqueUsers = {}
331+
v.patrolData.posts.forEach(post => uniqueUsers[post.user.id] = 'user')
332+
Object.keys(uniqueUsers).map(user => isOnline(user, setOnline))
333+
}
334+
335+
const setOnline = (err, data) => {
336+
if (err) console.log(err)
337+
else {
338+
v.patrolData.posts.map(post => {
339+
if (post.user.id === data.id) {
340+
post.user.online = data.online
341+
}
342+
})
343+
}
344+
}
345+
316346
const $auth = inject(AuthStore)
317347
const $alertStore = inject('$alertStore')
318348
const $route = useRoute()
@@ -338,7 +368,7 @@ export default {
338368
}
339369
})
340370
341-
return { ...toRefs(v), breadcrumbShim, showEditDate, canPurge, canDelete, canPostLock, canUpdate, pageResults, humanDate, userRoleHighlight, usernameHighlight, avatarHighlight, truncate, lockPost, unlockPost, refreshPosts }
371+
return { ...toRefs(v), breadcrumbShim, showEditDate, canPurge, canDelete, canPostLock, canUpdate, pageResults, humanDate, userRoleHighlight, usernameHighlight, avatarHighlight, truncate, lockPost, unlockPost, refreshPosts, checkUsersOnline }
342372
}
343373
}
344374
</script>

0 commit comments

Comments
 (0)