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

: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,6 +53,9 @@ module.exports = {
53 53
                 const user = await h.context.transaction(login)
54 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 59
                 return {
57 60
                     ok: true,
58 61
                     handler: pluginConfig.handlerType,

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

@@ -21,18 +21,16 @@ const validators = {
21 21
 
22 22
 module.exports = {
23 23
     method: 'get',
24
-    path: '/{id}',
24
+    path: '/{id}/status',
25 25
     options: {
26 26
         ...pluginConfig.docs.get,
27 27
         tags: ['api'],
28 28
         auth: 'default_jwt',
29 29
         handler: async function (request, h) {
30 30
             try {
31
-                // TODO write userService method to return a user's status given id
32 31
                 const { userService } = request.services()
33 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 35
                 return {
38 36
                     ok: true,

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

@@ -224,7 +224,7 @@ module.exports = class UserService extends Schmervice.Service {
224 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,6 +14,8 @@ exports.deployment = async ({ start } = {}) => {
14 14
         await Exiting.createManager(server).start()
15 15
         server.log(['start'], `Server started at ${server.info.uri}`)
16 16
         process.title = 'siimee_backend'
17
+        // manage logged in users to check against for online status
18
+        server.app.loggedInUsers = [] 
17 19
         return server
18 20
     }
19 21
 

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