mirror of
https://github.com/binaricat/Netcatty.git
synced 2026-10-09 15:58:34 +00:00
1d1c509cbb
Introduces persistent view mode storage for hosts, keys, snippets, known hosts, and port forwarding by using dedicated storage keys and a reusable view mode hook. Improves user experience by remembering individual section preferences instead of defaulting to "grid" on each visit.
24 lines
717 B
TypeScript
24 lines
717 B
TypeScript
import { useEffect, useState } from "react";
|
|
import { localStorageAdapter } from "../../infrastructure/persistence/localStorageAdapter";
|
|
|
|
export type ViewMode = "grid" | "list";
|
|
|
|
const isViewMode = (value: string | null): value is ViewMode =>
|
|
value === "grid" || value === "list";
|
|
|
|
export const useStoredViewMode = (
|
|
storageKey: string,
|
|
fallback: ViewMode = "grid",
|
|
) => {
|
|
const [viewMode, setViewMode] = useState<ViewMode>(() => {
|
|
const stored = localStorageAdapter.readString(storageKey);
|
|
return isViewMode(stored) ? stored : fallback;
|
|
});
|
|
|
|
useEffect(() => {
|
|
localStorageAdapter.writeString(storageKey, viewMode);
|
|
}, [storageKey, viewMode]);
|
|
|
|
return [viewMode, setViewMode] as const;
|
|
};
|