fix(ext/sw): review fixes — storage key, timer reset scope, imports
- Rename storage key sessionTimeoutConfig → session_timeout (plan spec) - Only call resetTimer() for non-content-script message types so content script polling cannot keep the session alive - Collapse two same-module imports into one line; add CONTENT_CALLABLE_TYPES Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,8 +1,8 @@
|
|||||||
/// Thin service-worker entry: loads WASM, constructs the router state, and
|
/// Thin service-worker entry: loads WASM, constructs the router state, and
|
||||||
/// forwards every message into router/index.route().
|
/// forwards every message into router/index.route().
|
||||||
|
|
||||||
import type { Request, Response } from '../shared/messages';
|
import type { Request, Response, SessionTimeoutConfig } from '../shared/messages';
|
||||||
import type { SessionTimeoutConfig } from '../shared/messages';
|
import { CONTENT_CALLABLE_TYPES } from '../shared/messages';
|
||||||
import type { RouterState } from './router/index';
|
import type { RouterState } from './router/index';
|
||||||
import { route } from './router/index';
|
import { route } from './router/index';
|
||||||
import * as vault from './vault';
|
import * as vault from './vault';
|
||||||
@@ -58,16 +58,18 @@ sessionTimer.onExpired(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Restore saved session config from chrome.storage.local on SW startup.
|
// Restore saved session config from chrome.storage.local on SW startup.
|
||||||
chrome.storage.local.get('sessionTimeoutConfig').then((r) => {
|
chrome.storage.local.get('session_timeout').then((r) => {
|
||||||
if (r.sessionTimeoutConfig) {
|
if (r.session_timeout) {
|
||||||
sessionTimer.setConfig(r.sessionTimeoutConfig as SessionTimeoutConfig);
|
sessionTimer.setConfig(r.session_timeout as SessionTimeoutConfig);
|
||||||
}
|
}
|
||||||
}).catch(() => {});
|
}).catch(() => {});
|
||||||
|
|
||||||
chrome.runtime.onMessage.addListener(
|
chrome.runtime.onMessage.addListener(
|
||||||
(request: Request, sender: chrome.runtime.MessageSender, sendResponse: (r: Response) => void) => {
|
(request: Request, sender: chrome.runtime.MessageSender, sendResponse: (r: Response) => void) => {
|
||||||
(async () => {
|
(async () => {
|
||||||
sessionTimer.resetTimer();
|
if (!CONTENT_CALLABLE_TYPES.has(request.type as never)) {
|
||||||
|
sessionTimer.resetTimer();
|
||||||
|
}
|
||||||
if (!state.wasm) {
|
if (!state.wasm) {
|
||||||
// eslint-disable-next-line no-console
|
// eslint-disable-next-line no-console
|
||||||
console.log('[relicario sw] initializing WASM on first message');
|
console.log('[relicario sw] initializing WASM on first message');
|
||||||
|
|||||||
@@ -361,7 +361,7 @@ export async function handle(
|
|||||||
case 'update_session_config': {
|
case 'update_session_config': {
|
||||||
sessionTimer.setConfig(msg.config);
|
sessionTimer.setConfig(msg.config);
|
||||||
sessionTimer.resetTimer();
|
sessionTimer.resetTimer();
|
||||||
await chrome.storage.local.set({ sessionTimeoutConfig: msg.config });
|
await chrome.storage.local.set({ session_timeout: msg.config });
|
||||||
return { ok: true };
|
return { ok: true };
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user