Просмотр исходного кода

:construction: runtime array to manage all logged in users + incrementing array + accessing array for search

user-online-status
juancarbajal98 3 лет назад
Родитель
Сommit
5b95b0f114

+ 3
- 0
backend/lib/routes/user/login.js Просмотреть файл

53
                 const user = await h.context.transaction(login)
53
                 const user = await h.context.transaction(login)
54
                 const token = userService.createToken(user)
54
                 const token = userService.createToken(user)
55
 
55
 
56
+                // insert new logged in user
57
+                request.server.app.loggedInUsers.push(login.user_id)
58
+
56
                 return {
59
                 return {
57
                     ok: true,
60
                     ok: true,
58
                     handler: pluginConfig.handlerType,
61
                     handler: pluginConfig.handlerType,

+ 2
- 4
backend/lib/routes/user/online-status.js Просмотреть файл

21
 
21
 
22
 module.exports = {
22
 module.exports = {
23
     method: 'get',
23
     method: 'get',
24
-    path: '/{id}',
24
+    path: '/{id}/status',
25
     options: {
25
     options: {
26
         ...pluginConfig.docs.get,
26
         ...pluginConfig.docs.get,
27
         tags: ['api'],
27
         tags: ['api'],
28
         auth: 'default_jwt',
28
         auth: 'default_jwt',
29
         handler: async function (request, h) {
29
         handler: async function (request, h) {
30
             try {
30
             try {
31
-                // TODO write userService method to return a user's status given id
32
                 const { userService } = request.services()
31
                 const { userService } = request.services()
33
                 const userId = request.params.userId
32
                 const userId = request.params.userId
34
-
35
-                const status = await userService.getStatus(userId)
33
+                const status = await userService.getStatus(userId, request.server.app.loggedInUsers)
36
 
34
 
37
                 return {
35
                 return {
38
                     ok: true,
36
                     ok: true,

+ 2
- 2
backend/lib/services/user.js Просмотреть файл

224
         return passwordRow ? passwordRow.token : null
224
         return passwordRow ? passwordRow.token : null
225
     }
225
     }
226
 
226
 
227
-    async getStatus(id){
228
-        // not sure how to write this part
227
+    async getStatus(id, loggedInUsers){
228
+        return loggedInUsers.find(user_id => user_id == id) ? 'online' : 'offline'
229
     }
229
     }
230
 }
230
 }

+ 2
- 0
backend/server/index.js Просмотреть файл

14
         await Exiting.createManager(server).start()
14
         await Exiting.createManager(server).start()
15
         server.log(['start'], `Server started at ${server.info.uri}`)
15
         server.log(['start'], `Server started at ${server.info.uri}`)
16
         process.title = 'siimee_backend'
16
         process.title = 'siimee_backend'
17
+        // manage logged in users to check against for online status
18
+        server.app.loggedInUsers = [] 
17
         return server
19
         return server
18
     }
20
     }
19
 
21
 

Загрузка…
Отмена
Сохранить