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:
adlee-was-taken
2026-04-27 15:44:13 -04:00
parent 86621f075f
commit 101f0093a4
2 changed files with 9 additions and 7 deletions

View File

@@ -1,8 +1,8 @@
/// Thin service-worker entry: loads WASM, constructs the router state, and
/// forwards every message into router/index.route().
import type { Request, Response } from '../shared/messages';
import type { SessionTimeoutConfig } from '../shared/messages';
import type { Request, Response, SessionTimeoutConfig } from '../shared/messages';
import { CONTENT_CALLABLE_TYPES } from '../shared/messages';
import type { RouterState } from './router/index';
import { route } from './router/index';
import * as vault from './vault';
@@ -58,16 +58,18 @@ sessionTimer.onExpired(() => {
});
// Restore saved session config from chrome.storage.local on SW startup.
chrome.storage.local.get('sessionTimeoutConfig').then((r) => {
if (r.sessionTimeoutConfig) {
sessionTimer.setConfig(r.sessionTimeoutConfig as SessionTimeoutConfig);
chrome.storage.local.get('session_timeout').then((r) => {
if (r.session_timeout) {
sessionTimer.setConfig(r.session_timeout as SessionTimeoutConfig);
}
}).catch(() => {});
chrome.runtime.onMessage.addListener(
(request: Request, sender: chrome.runtime.MessageSender, sendResponse: (r: Response) => void) => {
(async () => {
sessionTimer.resetTimer();
if (!CONTENT_CALLABLE_TYPES.has(request.type as never)) {
sessionTimer.resetTimer();
}
if (!state.wasm) {
// eslint-disable-next-line no-console
console.log('[relicario sw] initializing WASM on first message');

View File

@@ -361,7 +361,7 @@ export async function handle(
case 'update_session_config': {
sessionTimer.setConfig(msg.config);
sessionTimer.resetTimer();
await chrome.storage.local.set({ sessionTimeoutConfig: msg.config });
await chrome.storage.local.set({ session_timeout: msg.config });
return { ok: true };
}
}