diff options
| author | syuilo <Syuilotan@yahoo.co.jp> | 2021-04-17 15:30:26 +0900 |
|---|---|---|
| committer | syuilo <Syuilotan@yahoo.co.jp> | 2021-04-17 15:30:26 +0900 |
| commit | 68571d8f577e0a9eb8679e8dd30e11d8b1709340 (patch) | |
| tree | 623ad0865b76cdb8a4551042530655ef7c22c754 /src/server | |
| parent | Improve client (diff) | |
| download | sharkey-68571d8f577e0a9eb8679e8dd30e11d8b1709340.tar.gz sharkey-68571d8f577e0a9eb8679e8dd30e11d8b1709340.tar.bz2 sharkey-68571d8f577e0a9eb8679e8dd30e11d8b1709340.zip | |
Implement user online status
Resolve #7422
Fix #7424
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/api/endpoints/get-online-users-count.ts | 19 | ||||
| -rw-r--r-- | src/server/api/endpoints/i/update.ts | 5 | ||||
| -rw-r--r-- | src/server/api/streaming.ts | 7 |
3 files changed, 22 insertions, 9 deletions
diff --git a/src/server/api/endpoints/get-online-users-count.ts b/src/server/api/endpoints/get-online-users-count.ts index 150ac9e365..a13363055f 100644 --- a/src/server/api/endpoints/get-online-users-count.ts +++ b/src/server/api/endpoints/get-online-users-count.ts @@ -1,6 +1,7 @@ +import { USER_ONLINE_THRESHOLD } from '@/const'; +import { Users } from '@/models'; +import { MoreThan } from 'typeorm'; import define from '../define'; -import { redisClient } from '../../../db/redis'; -import config from '@/config'; export const meta = { tags: ['meta'], @@ -11,12 +12,12 @@ export const meta = { } }; -export default define(meta, (ps, user) => { - return new Promise((res, rej) => { - redisClient.pubsub('numsub', config.host, (_, x) => { - res({ - count: x[1] - }); - }); +export default define(meta, async () => { + const count = await Users.count({ + lastActiveDate: MoreThan(new Date(Date.now() - USER_ONLINE_THRESHOLD)) }); + + return { + count + }; }); diff --git a/src/server/api/endpoints/i/update.ts b/src/server/api/endpoints/i/update.ts index c0ffd75e23..032dccd91a 100644 --- a/src/server/api/endpoints/i/update.ts +++ b/src/server/api/endpoints/i/update.ts @@ -96,6 +96,10 @@ export const meta = { validator: $.optional.bool, }, + hideOnlineStatus: { + validator: $.optional.bool, + }, + carefulBot: { validator: $.optional.bool, desc: { @@ -228,6 +232,7 @@ export default define(meta, async (ps, _user, token) => { if (ps.mutingNotificationTypes !== undefined) profileUpdates.mutingNotificationTypes = ps.mutingNotificationTypes as typeof notificationTypes[number][]; if (typeof ps.isLocked === 'boolean') updates.isLocked = ps.isLocked; if (typeof ps.isExplorable === 'boolean') updates.isExplorable = ps.isExplorable; + if (typeof ps.hideOnlineStatus === 'boolean') updates.hideOnlineStatus = ps.hideOnlineStatus; if (typeof ps.isBot === 'boolean') updates.isBot = ps.isBot; if (typeof ps.carefulBot === 'boolean') profileUpdates.carefulBot = ps.carefulBot; if (typeof ps.autoAcceptFollowed === 'boolean') profileUpdates.autoAcceptFollowed = ps.autoAcceptFollowed; diff --git a/src/server/api/streaming.ts b/src/server/api/streaming.ts index 81b83edcf5..7224c23570 100644 --- a/src/server/api/streaming.ts +++ b/src/server/api/streaming.ts @@ -6,6 +6,7 @@ import { ParsedUrlQuery } from 'querystring'; import authenticate from './authenticate'; import { EventEmitter } from 'events'; import { subsdcriber as redisClient } from '../../db/redis'; +import { Users } from '@/models'; module.exports = (server: http.Server) => { // Init websocket server @@ -45,5 +46,11 @@ module.exports = (server: http.Server) => { connection.send('pong'); } }); + + if (user) { + Users.update(user.id, { + lastActiveDate: new Date(), + }); + } }); }; |