diff --git a/doc/user/ping.md b/doc/user/ping.md index 8051bf1..1e6dded 100644 --- a/doc/user/ping.md +++ b/doc/user/ping.md @@ -36,6 +36,6 @@ Can return: - 200 ```json { - "lastSeenTime": "" + "isLogged": "" } ``` diff --git a/src/api/user/gPing.js b/src/api/user/gPing.js index 2d2d018..b14f003 100644 --- a/src/api/user/gPing.js +++ b/src/api/user/gPing.js @@ -1,21 +1,28 @@ /** - * @param {import('fastify').FastifyRequest} request - * @param {import('fastify').FastifyReply} reply - * @param {import('fastify').FastifyInstance} fastify + * @param {import('fastify').FastifyRequest} request + * @param {import('fastify').FastifyReply} reply + * @param {import('fastify').FastifyInstance} fastify */ export async function gPing(request, reply, fastify, getActivityTime) { - try { - const user = request.params.userId; + try { + const user = request.params.userId; + const time = getActivityTime.get(user); - const time = getActivityTime.get(user); - console.log(time) + if (!time || !time.time) { + return reply.code(404).send({ error: "User not found or no activity time recorded" }); + } - return reply.code(200) - .send({ - lastSeenTime: time.time - }); - } catch (err) { - fastify.log.error(err); - return reply.code(500).send({ error: "Internal server error" }); - } + const lastSeenTime = new Date(time.time); + const now = new Date(); + const oneMinuteAgo = new Date(now.getTime() - 60000); // 60,000 ms = 1 minute + + const isActiveInLastMinute = lastSeenTime >= oneMinuteAgo; + + return reply.code(200).send({ + isLogged: isActiveInLastMinute + }); + } catch (err) { + fastify.log.error(err); + return reply.code(500).send({ error: "Internal server error" }); + } }