diff options
author | Jaz <ericvolp12@gmail.com> | 2023-05-16 21:36:43 -0700 |
---|---|---|
committer | Jaz <ericvolp12@gmail.com> | 2023-05-16 21:36:43 -0700 |
commit | da0ed7e002c926f2a3a342d8d420304b10aa8663 (patch) | |
tree | 56a59e5257b5bf1405d9fd453adf119e9d186830 /src/view/shell/Drawer.tsx | |
parent | 404b2f043c2243961cf5b101a0134f2db3610769 (diff) | |
download | voidsky-da0ed7e002c926f2a3a342d8d420304b10aa8663.tar.zst |
Feat: Use system default color mode, but allow user override
Diffstat (limited to 'src/view/shell/Drawer.tsx')
-rw-r--r-- | src/view/shell/Drawer.tsx | 29 |
1 files changed, 19 insertions, 10 deletions
diff --git a/src/view/shell/Drawer.tsx b/src/view/shell/Drawer.tsx index d595bc524..ea2153789 100644 --- a/src/view/shell/Drawer.tsx +++ b/src/view/shell/Drawer.tsx @@ -53,6 +53,19 @@ export const DrawerContent = observer(() => { const {notifications} = store.me + const colorModes = ['light', 'dark', 'system'] + const modeAccessibilityText = { + light: 'Sets display to light mode', + dark: 'Sets display to dark mode', + system: 'Sets display to system default', + } + + const nextColorMode = () => { + return colorModes[ + (colorModes.indexOf(store.shell.colorMode) + 1) % colorModes.length + ] + } + // events // = @@ -112,9 +125,9 @@ export const DrawerContent = observer(() => { Linking.openURL(FEEDBACK_FORM_URL) }, [track]) - const onDarkmodePress = React.useCallback(() => { - track('Menu:ItemClicked', {url: '#darkmode'}) - store.shell.setDarkMode(!store.shell.darkMode) + const onColorModePress = React.useCallback(() => { + track('Menu:ItemClicked', {url: '#cycleColorMode'}) + store.shell.setColorMode(nextColorMode()) }, [track, store]) // rendering @@ -280,13 +293,9 @@ export const DrawerContent = observer(() => { {!isWeb && ( <TouchableOpacity accessibilityRole="button" - accessibilityLabel="Toggle dark mode" - accessibilityHint={ - theme.colorScheme === 'dark' - ? 'Sets display to light mode' - : 'Sets display to dark mode' - } - onPress={onDarkmodePress} + accessibilityLabel="Cycle color mode" + accessibilityHint={modeAccessibilityText[store.shell.colorMode]} + onPress={onColorModePress} style={[ styles.footerBtn, theme.colorScheme === 'light' |