ソースを参照

enh: token expiry buffer

Timothy Jaeryang Baek 4 ヶ月 前
コミット
cbe84d7139
1 ファイル変更6 行追加2 行削除
  1. 6 2
      src/routes/+layout.svelte

+ 6 - 2
src/routes/+layout.svelte

@@ -7,7 +7,7 @@
 		stiffness: 0.05
 	});
 
-	import { onMount, tick, setContext } from 'svelte';
+	import { onMount, tick, setContext, onDestroy } from 'svelte';
 	import {
 		config,
 		user,
@@ -454,6 +454,7 @@
 		}
 	};
 
+	const TOKEN_EXPIRY_BUFFER = 60; // seconds
 	const checkTokenExpiry = async () => {
 		const exp = $user?.expires_at; // token expiry time in unix timestamp
 		const now = Math.floor(Date.now() / 1000); // current time in unix timestamp
@@ -463,7 +464,7 @@
 			return;
 		}
 
-		if (now >= exp) {
+		if (now >= exp - TOKEN_EXPIRY_BUFFER) {
 			const res = await userSignOut();
 			user.set(null);
 			localStorage.removeItem('token');
@@ -508,6 +509,9 @@
 			if (document.visibilityState === 'visible') {
 				isLastActiveTab.set(true); // This tab is now the active tab
 				bc.postMessage('active'); // Notify other tabs that this tab is active
+
+				// Check token expiry when the tab becomes active
+				checkTokenExpiry();
 			}
 		};