tmdb轮播新增预告片显示

This commit is contained in:
mtvpls
2026-01-02 01:50:16 +08:00
parent 0edd224b5d
commit 1c2b1b3c4a
4 changed files with 173 additions and 10 deletions

View File

@@ -91,6 +91,7 @@ export const UserMenu: React.FC = () => {
const [liveDirectConnect, setLiveDirectConnect] = useState(false);
const [danmakuHeatmapDisabled, setDanmakuHeatmapDisabled] = useState(false);
const [tmdbBackdropDisabled, setTmdbBackdropDisabled] = useState(false);
const [enableTrailers, setEnableTrailers] = useState(false);
const [doubanDataSource, setDoubanDataSource] = useState('cmliussss-cdn-tencent');
const [doubanImageProxyType, setDoubanImageProxyType] = useState('cmliussss-cdn-tencent');
const [doubanImageProxyUrl, setDoubanImageProxyUrl] = useState('');
@@ -327,6 +328,11 @@ export const UserMenu: React.FC = () => {
setTmdbBackdropDisabled(savedTmdbBackdropDisabled === 'true');
}
const savedEnableTrailers = localStorage.getItem('enableTrailers');
if (savedEnableTrailers !== null) {
setEnableTrailers(savedEnableTrailers === 'true');
}
const savedBufferStrategy = localStorage.getItem('bufferStrategy');
if (savedBufferStrategy !== null) {
setBufferStrategy(savedBufferStrategy);
@@ -564,6 +570,13 @@ export const UserMenu: React.FC = () => {
}
};
const handleEnableTrailersToggle = (value: boolean) => {
setEnableTrailers(value);
if (typeof window !== 'undefined') {
localStorage.setItem('enableTrailers', String(value));
}
};
const handleDoubanDataSourceChange = (value: string) => {
setDoubanDataSource(value);
if (typeof window !== 'undefined') {
@@ -635,6 +648,8 @@ export const UserMenu: React.FC = () => {
setFluidSearch(defaultFluidSearch);
setLiveDirectConnect(false);
setDanmakuHeatmapDisabled(false);
setTmdbBackdropDisabled(false);
setEnableTrailers(false);
setDoubanProxyUrl(defaultDoubanProxy);
setDoubanDataSource(defaultDoubanProxyType);
setDoubanImageProxyType(defaultDoubanImageProxyType);
@@ -648,6 +663,8 @@ export const UserMenu: React.FC = () => {
localStorage.setItem('fluidSearch', JSON.stringify(defaultFluidSearch));
localStorage.setItem('liveDirectConnect', JSON.stringify(false));
localStorage.setItem('danmaku_heatmap_disabled', 'false');
localStorage.setItem('tmdb_backdrop_disabled', 'false');
localStorage.setItem('enableTrailers', 'false');
localStorage.setItem('doubanProxyUrl', defaultDoubanProxy);
localStorage.setItem('doubanDataSource', defaultDoubanProxyType);
localStorage.setItem('doubanImageProxyType', defaultDoubanImageProxyType);
@@ -1297,6 +1314,30 @@ export const UserMenu: React.FC = () => {
</label>
</div>
{/* 启用预告片 */}
<div className='flex items-center justify-between'>
<div>
<h4 className='text-sm font-medium text-gray-700 dark:text-gray-300'>
</h4>
<p className='text-xs text-gray-500 dark:text-gray-400 mt-1'>
</p>
</div>
<label className='flex items-center cursor-pointer'>
<div className='relative'>
<input
type='checkbox'
className='sr-only peer'
checked={enableTrailers}
onChange={(e) => handleEnableTrailersToggle(e.target.checked)}
/>
<div className='w-11 h-6 bg-gray-300 rounded-full peer-checked:bg-green-500 transition-colors dark:bg-gray-600'></div>
<div className='absolute top-0.5 left-0.5 w-5 h-5 bg-white rounded-full transition-transform peer-checked:translate-x-5'></div>
</div>
</label>
</div>
{/* 分割线 */}
<div className='border-t border-gray-200 dark:border-gray-700'></div>