mirror of
https://github.com/tiennm99/ccs.git
synced 2026-10-11 03:13:12 +00:00
refactor(ui): remove unused last-route restore helpers
This commit is contained in:
1 parent
c130e9a0cc
commit
766cc1b43e
2 files changed
+34
-28
No files matched your search
@@ -1,5 +1,4 @@
|
|||||||
const LAST_ROUTE_STORAGE_KEY = 'ccs-dashboard:last-route';
|
const LAST_ROUTE_STORAGE_KEY = 'ccs-dashboard:last-route';
|
||||||
const NON_RESTORABLE_PATHS = new Set(['/login']);
|
|
||||||
|
|
||||||
export function storeLastRoute(pathname: string, search = '', hash = ''): void {
|
export function storeLastRoute(pathname: string, search = '', hash = ''): void {
|
||||||
try {
|
try {
|
||||||
@@ -8,30 +7,3 @@ export function storeLastRoute(pathname: string, search = '', hash = ''): void {
|
|||||||
// Ignore storage failures (private mode, quota, etc.)
|
// 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);
|
|
||||||
}
|
|
||||||
@@ -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();
|
||||||
|
});
|
||||||
|
});
|
||||||
Reference in new issue
Block a user