Move request-related settings to workspace

This commit is contained in:
Gregory Schier
2024-01-15 11:52:36 -08:00
parent b01747299f
commit 34a8fc4e22
23 changed files with 207 additions and 148 deletions

View File

@@ -0,0 +1,35 @@
import { useEffect, useState } from 'react';
import type { Appearance } from '../lib/theme/window';
import {
setAppearanceOnDocument,
getPreferredAppearance,
subscribeToPreferredAppearanceChange,
} from '../lib/theme/window';
import { useSettings } from './useSettings';
export function useSyncAppearance() {
const [preferredAppearance, setPreferredAppearance] = useState<Appearance>(
getPreferredAppearance(),
);
const settings = useSettings();
// Set appearance when preferred theme changes
useEffect(() => {
return subscribeToPreferredAppearanceChange(setPreferredAppearance);
}, []);
const appearance =
settings == null || settings?.appearance === 'system'
? preferredAppearance
: settings.appearance;
useEffect(() => {
if (settings == null) {
return;
}
setAppearanceOnDocument(settings.appearance as Appearance);
}, [appearance, settings]);
return { appearance };
}