'use client'; import { AddSourceModal } from '@/components/settings/AddSourceModal'; import { ExportModal } from '@/components/settings/ExportModal'; import { ImportModal } from '@/components/settings/ImportModal'; import { ConfirmDialog } from '@/components/ui/ConfirmDialog'; import { SourceSettings } from '@/components/settings/SourceSettings'; import { SortSettings } from '@/components/settings/SortSettings'; import { DataSettings } from '@/components/settings/DataSettings'; import { AccountSettings } from '@/components/settings/AccountSettings'; import { DisplaySettings } from '@/components/settings/DisplaySettings'; import { PlayerSettings } from '@/components/settings/PlayerSettings'; import { SettingsHeader } from '@/components/settings/SettingsHeader'; import { UserSourceSettings } from '@/components/settings/UserSourceSettings'; import { UserDanmakuSettings } from '@/components/settings/UserDanmakuSettings'; import { PermissionGate } from '@/components/PermissionGate'; import { hasPermission } from '@/lib/store/auth-store'; import { useSettingsPage } from './hooks/useSettingsPage'; export default function SettingsPage() { const { sources, sortBy, realtimeLatency, searchDisplayMode, fullscreenType, isAddModalOpen, isExportModalOpen, isImportModalOpen, isResetDialogOpen, isRestoreDefaultsDialogOpen, setIsAddModalOpen, setIsExportModalOpen, setIsImportModalOpen, setIsResetDialogOpen, setIsRestoreDefaultsDialogOpen, handleSourcesChange, handleAddSource, handleSortChange, handleExport, handleImportFile, handleImportLink, subscriptions, handleAddSubscription, handleRemoveSubscription, handleRefreshSubscription, handleRestoreDefaults, handleResetAll, editingSource, handleEditSource, setEditingSource, handleRealtimeLatencyChange, handleSearchDisplayModeChange, handleFullscreenTypeChange, proxyMode, handleProxyModeChange, rememberScrollPosition, handleRememberScrollPositionChange, locale, handleLocaleChange, danmakuApiUrl, handleDanmakuApiUrlChange, danmakuOpacity, handleDanmakuOpacityChange, danmakuFontSize, handleDanmakuFontSizeChange, danmakuDisplayArea, handleDanmakuDisplayAreaChange, } = useSettingsPage(); return (
{/* Header */} {/* Account Settings */} {/* Player Settings */} {/* Display Settings */} {/* Per-User Source Settings (visible to all logged-in users) */} {/* Per-User Danmaku Settings (visible to all logged-in users) */} {/* Source Management */} setIsRestoreDefaultsDialogOpen(true)} onAddSource={() => { setEditingSource(null); setIsAddModalOpen(true); }} onEditSource={handleEditSource} /> {/* Sort Options */} {/* Data Management */} setIsExportModalOpen(true)} onImport={() => setIsImportModalOpen(true)} onReset={() => setIsResetDialogOpen(true)} />
{/* Modals */} { setIsAddModalOpen(false); setEditingSource(null); }} onAdd={handleAddSource} existingIds={sources.map(s => s.id)} initialValues={editingSource} /> setIsExportModalOpen(false)} onExport={handleExport} /> setIsImportModalOpen(false)} onImportFile={handleImportFile} onImportLink={handleImportLink} subscriptions={subscriptions} onAddSubscription={handleAddSubscription} onRemoveSubscription={handleRemoveSubscription} onRefreshSubscription={handleRefreshSubscription} /> setIsRestoreDefaultsDialogOpen(false)} /> setIsResetDialogOpen(false)} dangerous />
); }