@@ -166,6 +166,7 @@ import PostsReportModal from '@/components/modals/posts/Report.vue'
166
166
import PostsDeleteModal from ' @/components/modals/posts/Delete.vue'
167
167
import PostsUndeleteModal from ' @/components/modals/posts/Undelete.vue'
168
168
import PostsPurgePostModal from ' @/components/modals/posts/PurgePost.vue'
169
+ import { isOnline } from ' @/composables/services/websocket'
169
170
170
171
export default {
171
172
name: ' Patrol' ,
@@ -175,14 +176,22 @@ export default {
175
176
limit: to .query .limit || localStoragePrefs ().data .posts_per_page ,
176
177
page: to .query .page || 1
177
178
}
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 (() => {}))
179
184
},
180
185
beforeRouteUpdate (to , from , next ) {
181
186
const query = {
182
187
limit: to .query .limit || localStoragePrefs ().data .posts_per_page ,
183
188
page: to .query .page || 1
184
189
}
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 (() => {})
186
195
next ()
187
196
},
188
197
setup () {
@@ -300,7 +309,11 @@ export default {
300
309
const refreshPosts = () => postsApi .byNewbie ({
301
310
limit: $route .query .limit || localStoragePrefs ().data .posts_per_page ,
302
311
page: $route .query .page || 1
303
- }).then (d => v .patrolData = d).catch (() => {})
312
+ })
313
+ .then (d => {
314
+ v .patrolData = d
315
+ checkUsersOnline ()
316
+ }).catch (() => {})
304
317
305
318
const lockPost = post => postsApi .lock (post .id )
306
319
.then (() => {
@@ -313,6 +326,23 @@ export default {
313
326
post .locked = false
314
327
})
315
328
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
+
316
346
const $auth = inject (AuthStore)
317
347
const $alertStore = inject (' $alertStore' )
318
348
const $route = useRoute ()
@@ -338,7 +368,7 @@ export default {
338
368
}
339
369
})
340
370
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 }
342
372
}
343
373
}
344
374
</script >
0 commit comments