Add automatic session timeout after 1 hour of inactivity

This commit is contained in:
goenning 2023-06-03 18:28:26 +01:00
parent aa75f78fbb
commit cc48275c37
4 changed files with 21 additions and 6 deletions

View file

@ -1,3 +1,7 @@
## 0.1.3
- Add automatic session timeout after 1 hour of inactivity
## 0.1.2 ## 0.1.2
- Added support for automatic segregation of Debug/Release events - Added support for automatic segregation of Debug/Release events

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "@aptabase/web", "name": "@aptabase/web",
"version": "0.1.2", "version": "0.1.3",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "@aptabase/web", "name": "@aptabase/web",
"version": "0.1.2", "version": "0.1.3",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@rollup/plugin-replace": "5.0.2", "@rollup/plugin-replace": "5.0.2",

View file

@ -1,6 +1,6 @@
{ {
"name": "@aptabase/web", "name": "@aptabase/web",
"version": "0.1.2", "version": "0.1.3",
"private": false, "private": false,
"type": "module", "type": "module",
"description": "JavaScript SDK for Aptabase: Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps", "description": "JavaScript SDK for Aptabase: Open Source, Privacy-First and Simple Analytics for Mobile, Desktop and Web Apps",

View file

@ -8,10 +8,13 @@ export type AptabaseOptions = {
appVersion?: string; appVersion?: string;
}; };
let _appKey = ""; // Session expires after 1 hour of inactivity
let _locale = ""; const SESSION_TIMEOUT = 1 * 60 * 60;
let _apiUrl = "";
let _sessionId = newSessionId(); let _sessionId = newSessionId();
let _lastTouched = new Date();
let _appKey = "";
let _apiUrl = "";
let _locale = "";
let _isDebug = false; let _isDebug = false;
let _options: AptabaseOptions | undefined; let _options: AptabaseOptions | undefined;
@ -72,6 +75,14 @@ export function trackEvent(
) { ) {
if (!_appKey || typeof window === "undefined" || !window.fetch) return; if (!_appKey || typeof window === "undefined" || !window.fetch) return;
let now = new Date();
const diffInMs = now.getTime() - _lastTouched.getTime();
const diffInSec = Math.floor(diffInMs / 1000);
if (diffInSec > SESSION_TIMEOUT) {
_sessionId = newSessionId();
}
_lastTouched = now;
const body = JSON.stringify({ const body = JSON.stringify({
timestamp: new Date().toISOString(), timestamp: new Date().toISOString(),
sessionId: _sessionId, sessionId: _sessionId,