feat: Implement scroll position management with a new setting, add a back-to-top button, and extend search cache duration.

This commit is contained in:
kuekhaoyang
2026-01-25 15:42:21 +08:00
parent 7368582398
commit 30600e4d95
16 changed files with 289 additions and 18 deletions
+3
View File
@@ -46,6 +46,7 @@ export interface AppSettings {
episodeReverseOrder: boolean; // Persist episode list reverse state
fullscreenType: 'native' | 'window'; // Fullscreen mode preference
proxyMode: ProxyMode; // Proxy behavior: 'retry' | 'none' | 'always'
rememberScrollPosition: boolean; // Remember scroll position when navigating back or refreshing
}
import { exportSettings, importSettings, SEARCH_HISTORY_KEY, WATCH_HISTORY_KEY } from './settings-helpers';
@@ -119,6 +120,7 @@ function getDefaultAppSettings(): AppSettings {
episodeReverseOrder: false,
fullscreenType: 'native',
proxyMode: 'retry',
rememberScrollPosition: true,
};
}
@@ -196,6 +198,7 @@ export const settingsStore = {
episodeReverseOrder: parsed.episodeReverseOrder !== undefined ? parsed.episodeReverseOrder : false,
fullscreenType: parsed.fullscreenType === 'window' ? 'window' : 'native',
proxyMode: (parsed.proxyMode === 'retry' || parsed.proxyMode === 'none' || parsed.proxyMode === 'always') ? parsed.proxyMode : 'retry',
rememberScrollPosition: parsed.rememberScrollPosition !== undefined ? parsed.rememberScrollPosition : true,
};
} catch {
// Even if localStorage fails, we should return defaults + ENV subscriptions