dark mode PDF filter init (#5994)

Co-authored-by: a <a>
This commit is contained in:
Anthony Stirling
2026-03-25 15:38:42 +00:00
committed by GitHub
co-authored by a <a>
parent 28613caf8a
commit bb43e9dcdf
7 changed files with 108 additions and 53 deletions
@@ -7,6 +7,7 @@ import React, {
useCallback,
} from 'react';
import { useNavigation } from '@app/contexts/NavigationContext';
import { preferencesService, type PdfRenderMode } from '@app/services/preferencesService';
import {
createViewerActions,
ScrollActions,
@@ -170,6 +171,10 @@ export interface ViewerContextType {
// Save changes function - registered by EmbedPdfViewer
applyChanges: (() => Promise<void>) | null;
setApplyChanges: (fn: (() => Promise<void>) | null) => void;
// PDF page color rendering mode (viewer-only, never modifies the PDF)
pdfRenderMode: PdfRenderMode;
cyclePdfRenderMode: () => void;
}
export const ViewerContext = createContext<ViewerContextType | null>(null);
@@ -194,6 +199,9 @@ export const ViewerProvider: React.FC<ViewerProviderProps> = ({ children }) => {
const [isAnnotationsVisible, setIsAnnotationsVisible] = useState(true);
const [isAnnotationMode, setIsAnnotationModeState] = useState(false);
const [activeFileIndex, setActiveFileIndex] = useState(0);
const [pdfRenderMode, setPdfRenderModeState] = useState<PdfRenderMode>(
() => preferencesService.getPreference('pdfRenderMode')
);
// Get current navigation state to check if we're in sign mode
useNavigation();
@@ -320,6 +328,15 @@ export const ViewerProvider: React.FC<ViewerProviderProps> = ({ children }) => {
setIsAnnotationModeState(enabled);
};
const cyclePdfRenderMode = useCallback(() => {
setPdfRenderModeState(prev => {
const next: PdfRenderMode =
prev === 'normal' ? 'dark' : prev === 'dark' ? 'sepia' : 'normal';
preferencesService.setPreference('pdfRenderMode', next);
return next;
});
}, []);
// State getters - read from bridge refs
const getScrollState = (): ScrollState => {
return bridgeRefs.current.scroll?.state || { currentPage: 1, totalPages: 0 };
@@ -504,6 +521,10 @@ export const ViewerProvider: React.FC<ViewerProviderProps> = ({ children }) => {
// Apply changes
applyChanges,
setApplyChanges,
// PDF page rendering mode
pdfRenderMode,
cyclePdfRenderMode,
};
return (