refactor(ui): remove unused last-route restore helpers

This commit is contained in:
Tam Nhu Tran
2026-02-26 21:48:55 +07:00
parent c130e9a0cc
commit 766cc1b43e
2 changed files with 34 additions and 28 deletions
-28
View File
@@ -1,5 +1,4 @@
const LAST_ROUTE_STORAGE_KEY = 'ccs-dashboard:last-route';
const NON_RESTORABLE_PATHS = new Set(['/login']);
export function storeLastRoute(pathname: string, search = '', hash = ''): void {
try {
@@ -8,30 +7,3 @@ export function storeLastRoute(pathname: string, search = '', hash = ''): void {
// Ignore storage failures (private mode, quota, etc.)
}
}
export function getStoredLastRoute(): string | null {
try {
const route = localStorage.getItem(LAST_ROUTE_STORAGE_KEY);
if (!route || !route.startsWith('/')) {
return null;
}
const pathOnly = route.split(/[?#]/, 1)[0];
if (NON_RESTORABLE_PATHS.has(pathOnly)) {
return null;
}
return route;
} catch {
return null;
}
}
export function shouldRestoreRoute(route: string | null): route is string {
if (!route) {
return false;
}
const pathOnly = route.split(/[?#]/, 1)[0];
return pathOnly !== '/' && !NON_RESTORABLE_PATHS.has(pathOnly);
}
+34
View File
@@ -0,0 +1,34 @@
import { beforeEach, describe, expect, it, vi } from 'vitest';
import { storeLastRoute } from '@/lib/last-route';
const LAST_ROUTE_STORAGE_KEY = 'ccs-dashboard:last-route';
describe('storeLastRoute', () => {
beforeEach(() => {
vi.clearAllMocks();
});
it('writes pathname with search and hash', () => {
storeLastRoute('/accounts', '?tab=auth', '#matrix');
expect(localStorage.setItem).toHaveBeenCalledWith(
LAST_ROUTE_STORAGE_KEY,
'/accounts?tab=auth#matrix'
);
});
it('writes pathname when search and hash are omitted', () => {
storeLastRoute('/health');
expect(localStorage.setItem).toHaveBeenCalledWith(LAST_ROUTE_STORAGE_KEY, '/health');
});
it('does not throw when localStorage write fails', () => {
const setItemSpy = vi.spyOn(Storage.prototype, 'setItem').mockImplementation(() => {
throw new Error('quota exceeded');
});
expect(() => storeLastRoute('/providers')).not.toThrow();
setItemSpy.mockRestore();
});
});