All files / packages/app/providers theme.tsx

90.9% Statements 10/11
75% Branches 3/4
100% Functions 3/3
90% Lines 9/10

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29                    332x 7907x       7907x 7907x     7907x 7907x 329x     329x   7907x    
import React from "react";
import { useColorScheme } from "react-native";
 
import { useColorModes } from "~app/hooks/use-color-modes";
import type { ColorMode } from "~app/utils/store/color-modes";
 
export const ThemeProvider: React.FC<
	React.PropsWithChildren<{
		applyColorMode: (colorMode: ColorMode) => void;
	}>
> = ({ children, applyColorMode }) => {
	const colorScheme = useColorScheme();
	const {
		selected: [selectedColorMode],
		system: [systemColorMode, setSystemColorMode],
	} = useColorModes();
	const colorMode = selectedColorMode || systemColorMode;
	// Should be `useEffectEvent` in next React
	// oxlint-disable-next-line react-hooks/exhaustive-deps
	React.useEffect(() => applyColorMode(colorMode), [colorMode]);
	React.useEffect(() => {
		Iif (colorScheme === "unspecified") {
			return;
		}
		setSystemColorMode(colorScheme);
	}, [colorScheme, setSystemColorMode]);
	return <>{children}</>;
};