-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathsession.js
More file actions
41 lines (33 loc) · 1.25 KB
/
session.js
File metadata and controls
41 lines (33 loc) · 1.25 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import { window } from 'src/utils/1.variables.js';
import eventManager from 'src/utils/eventManager.js';
import { global } from 'src/utils/global.js';
export const sessionId = window.crypto?.randomUUID() || Math.random().toString();
function login(id, username) {
eventManager.singleton.emit('login', id, username);
}
if (sessionStorage.getItem('UserID')) {
login(sessionStorage.getItem('UserID'), sessionStorage.getItem('Username') ?? undefined);
}
eventManager.on('Chat:Connected', () => {
const sessID = sessionStorage.getItem('UserID');
const selfId = global('selfId');
const username = global('selfUsername');
if (sessID && sessID === selfId) return;
login(selfId, username);
sessionStorage.setItem('UserID', selfId);
sessionStorage.setItem('Username', username);
});
eventManager.on('logout', () => {
sessionStorage.removeItem('UserID');
sessionStorage.removeItem('Username');
});
export function isActive() {
return localStorage.getItem('underscript.session') === sessionId;
}
export function updateIfActive() {
if (document.hidden || isActive()) return;
localStorage.setItem('underscript.session', sessionId);
eventManager.emit('window:active');
}
document.addEventListener('visibilitychange', updateIfActive);
updateIfActive();