增加快速优选模式

This commit is contained in:
mtvpls
2026-04-28 16:08:09 +08:00
parent 46d53cd6ae
commit 6d9afd8072
2 changed files with 250 additions and 121 deletions
+47
View File
@@ -117,6 +117,7 @@ export const UserMenu: React.FC = () => {
const [defaultAggregateSearch, setDefaultAggregateSearch] = useState(true);
const [doubanProxyUrl, setDoubanProxyUrl] = useState('');
const [enableOptimization, setEnableOptimization] = useState(true);
const [preferStrategy, setPreferStrategy] = useState<'fast' | 'full'>('fast');
const [speedTestTimeout, setSpeedTestTimeout] = useState(4000); // 测速超时时间(毫秒)
const [fluidSearch, setFluidSearch] = useState(true);
const [tmdbBackdropDisabled, setTmdbBackdropDisabled] = useState(false);
@@ -534,6 +535,11 @@ export const UserMenu: React.FC = () => {
setEnableOptimization(JSON.parse(savedEnableOptimization));
}
const savedPreferStrategy = localStorage.getItem('preferStrategy');
if (savedPreferStrategy === 'fast' || savedPreferStrategy === 'full') {
setPreferStrategy(savedPreferStrategy);
}
const savedSpeedTestTimeout = localStorage.getItem('speedTestTimeout');
if (savedSpeedTestTimeout !== null) {
setSpeedTestTimeout(Number(savedSpeedTestTimeout));
@@ -1008,6 +1014,13 @@ export const UserMenu: React.FC = () => {
}
};
const handlePreferStrategyChange = (value: 'fast' | 'full') => {
setPreferStrategy(value);
if (typeof window !== 'undefined') {
localStorage.setItem('preferStrategy', value);
}
};
const handleSpeedTestTimeoutChange = (value: number) => {
setSpeedTestTimeout(value);
if (typeof window !== 'undefined') {
@@ -1356,6 +1369,7 @@ export const UserMenu: React.FC = () => {
setDefaultAggregateSearch(true);
setEnableOptimization(true);
setPreferStrategy('fast');
setFluidSearch(defaultFluidSearch);
setTmdbBackdropDisabled(false);
setEnableTrailers(false);
@@ -1384,6 +1398,7 @@ export const UserMenu: React.FC = () => {
if (typeof window !== 'undefined') {
localStorage.setItem('defaultAggregateSearch', JSON.stringify(true));
localStorage.setItem('enableOptimization', JSON.stringify(true));
localStorage.setItem('preferStrategy', 'fast');
localStorage.setItem('fluidSearch', JSON.stringify(defaultFluidSearch));
localStorage.setItem('liveDirectConnect', JSON.stringify(false));
localStorage.setItem('tmdb_backdrop_disabled', 'false');
@@ -2243,6 +2258,38 @@ export const UserMenu: React.FC = () => {
{/* 测速超时设置 */}
{enableOptimization && (
<div className='ml-4 mt-2 space-y-2'>
<div className='space-y-2'>
<div className='flex items-center justify-between gap-3'>
<span className='text-xs text-gray-600 dark:text-gray-400'>
</span>
<div className='inline-flex rounded-lg border border-gray-200 bg-gray-100 p-1 dark:border-gray-700 dark:bg-gray-800'>
<button
type='button'
onClick={() => handlePreferStrategyChange('fast')}
className={`rounded-md px-4 py-1.5 text-xs font-medium transition-all ${
preferStrategy === 'fast'
? 'bg-white text-green-600 shadow-sm dark:bg-gray-700 dark:text-green-400'
: 'text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'
}`}
>
</button>
<button
type='button'
onClick={() => handlePreferStrategyChange('full')}
className={`rounded-md px-4 py-1.5 text-xs font-medium transition-all ${
preferStrategy === 'full'
? 'bg-white text-green-600 shadow-sm dark:bg-gray-700 dark:text-green-400'
: 'text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-200'
}`}
>
</button>
</div>
</div>
</div>
<div className='flex items-center justify-between'>
<span className='text-xs text-gray-600 dark:text-gray-400'>