Feat: Backtracing + NavPage Store

This commit is contained in:
Youwes09
2026-05-10 04:31:27 -05:00
parent f05f781b5b
commit 244447da9b
11 changed files with 88 additions and 29 deletions
+24 -12
View File
@@ -3,20 +3,32 @@ export type NavPage =
| "downloads" | "extensions" | "history" | "search" | "tracking";
class AppStore {
navPage: NavPage = $state("home");
settingsOpen: boolean = $state(false);
searchPrefill: string = $state("");
genreFilter: string = $state("");
navPage: NavPage = $state("home");
settingsOpen: boolean = $state(false);
searchPrefill: string = $state("");
searchQuery: string = $state("");
genreFilter: string = $state("");
scrollPositions: Map<string, number> = $state(new Map());
setNavPage(next: NavPage) { this.navPage = next; }
setSettingsOpen(next: boolean) { this.settingsOpen = next; }
setSearchPrefill(next: string) { this.searchPrefill = next; }
setGenreFilter(next: string) { this.genreFilter = next; }
setNavPage(next: NavPage) { this.navPage = next; }
setSettingsOpen(next: boolean) { this.settingsOpen = next; }
setSearchPrefill(next: string) { this.searchPrefill = next; }
setSearchQuery(next: string) { this.searchQuery = next; }
setGenreFilter(next: string) { this.genreFilter = next; }
saveScroll(key: string, top: number) {
const m = new Map(this.scrollPositions);
m.set(key, top);
this.scrollPositions = m;
}
getScroll(key: string): number { return this.scrollPositions.get(key) ?? 0; }
}
export const app = new AppStore();
export function setNavPage(next: NavPage) { app.setNavPage(next); }
export function setSettingsOpen(next: boolean) { app.setSettingsOpen(next); }
export function setSearchPrefill(next: string) { app.setSearchPrefill(next); }
export function setGenreFilter(next: string) { app.setGenreFilter(next); }
export function setNavPage(next: NavPage) { app.setNavPage(next); }
export function setSettingsOpen(next: boolean) { app.setSettingsOpen(next); }
export function setSearchPrefill(next: string) { app.setSearchPrefill(next); }
export function setSearchQuery(next: string) { app.setSearchQuery(next); }
export function setGenreFilter(next: string) { app.setGenreFilter(next); }
export function saveScroll(key: string, top: number) { app.saveScroll(key, top); }
export function getScroll(key: string): number { return app.getScroll(key); }