summary refs log tree commit diff
path: root/src/gateway/util/SessionUtils.ts
diff options
context:
space:
mode:
Diffstat (limited to 'src/gateway/util/SessionUtils.ts')
-rw-r--r--src/gateway/util/SessionUtils.ts18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/gateway/util/SessionUtils.ts b/src/gateway/util/SessionUtils.ts

index 843341cc..f84304c6 100644 --- a/src/gateway/util/SessionUtils.ts +++ b/src/gateway/util/SessionUtils.ts
@@ -16,6 +16,8 @@ along with this program. If not, see <https://www.gnu.org/licenses/>. */ +import { getDatabase, Member, Session } from "@spacebar/util"; + export function genSessionId() { return genRanHex(32); } @@ -27,3 +29,19 @@ export function genVoiceToken() { function genRanHex(size: number) { return [...Array(size)].map(() => Math.floor(Math.random() * 16).toString(16)).join(""); } + +export function getMostRelevantSession(sessions: Session[]) { + const statusMap = { + online: 0, + idle: 1, + dnd: 2, + invisible: 3, + offline: 4, + }; + // sort sessions by relevance + sessions = sessions.sort((a, b) => { + return statusMap[a.status] - statusMap[b.status] + ((a.activities?.length ?? 0) - (b.activities?.length ?? 0)) * 2; + }); + + return sessions[0]; +}