Add PlatformInfo module (#4877)

This commit is contained in:
Hailey 2024-08-05 12:21:34 -07:00 committed by GitHub
parent fb278384c6
commit 18b423396b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
13 changed files with 92 additions and 38 deletions

View file

@ -1,5 +1,4 @@
import {Platform} from 'react-native'
import {isReducedMotion} from 'react-native-reanimated'
import {getLocales} from 'expo-localization'
import {fixLegacyLanguageCode} from '#/locale/helpers'
@ -21,5 +20,3 @@ export const deviceLocales = dedupArray(
.map?.(locale => fixLegacyLanguageCode(locale.languageCode))
.filter(code => typeof code === 'string'),
) as string[]
export const prefersReducedMotion = isReducedMotion()

View file

@ -1,8 +1,8 @@
import React from 'react'
import {AccessibilityInfo} from 'react-native'
import {isReducedMotion} from 'react-native-reanimated'
import {isWeb} from '#/platform/detection'
import {PlatformInfo} from '../../modules/expo-bluesky-swiss-army'
const Context = React.createContext({
reduceMotionEnabled: false,
@ -15,7 +15,7 @@ export function useA11y() {
export function Provider({children}: React.PropsWithChildren<{}>) {
const [reduceMotionEnabled, setReduceMotionEnabled] = React.useState(() =>
isReducedMotion(),
PlatformInfo.getIsReducedMotionEnabled(),
)
const [screenReaderEnabled, setScreenReaderEnabled] = React.useState(false)

View file

@ -1,6 +1,7 @@
import {z} from 'zod'
import {deviceLocales, prefersReducedMotion} from '#/platform/detection'
import {deviceLocales} from '#/platform/detection'
import {PlatformInfo} from '../../../modules/expo-bluesky-swiss-army'
const externalEmbedOptions = ['show', 'hide'] as const
@ -128,7 +129,7 @@ export const defaults: Schema = {
lastSelectedHomeFeed: undefined,
pdsAddressHistory: [],
disableHaptics: false,
disableAutoplay: prefersReducedMotion,
disableAutoplay: PlatformInfo.getIsReducedMotionEnabled(),
kawaii: false,
hasCheckedForStarterPack: false,
}

View file

@ -9,6 +9,7 @@ import {Button, ButtonText} from '#/components/Button'
import * as Dialog from '#/components/Dialog'
import * as Prompt from '#/components/Prompt'
import {H3, P, Text} from '#/components/Typography'
import {PlatformInfo} from '../../../../modules/expo-bluesky-swiss-army'
export function Dialogs() {
const scrollable = Dialog.useDialogControl()
@ -17,6 +18,8 @@ export function Dialogs() {
const testDialog = Dialog.useDialogControl()
const {closeAllDialogs} = useDialogStateControlContext()
const unmountTestDialog = Dialog.useDialogControl()
const [reducedMotionEnabled, setReducedMotionEnabled] =
React.useState<boolean>()
const [shouldRenderUnmountTest, setShouldRenderUnmountTest] =
React.useState(false)
const unmountTestInterval = React.useRef<number>()
@ -147,6 +150,22 @@ export function Dialogs() {
<ButtonText>Open Shared Prefs Tester</ButtonText>
</Button>
<Button
variant="solid"
color="primary"
size="small"
onPress={() => {
const isReducedMotionEnabled =
PlatformInfo.getIsReducedMotionEnabled()
setReducedMotionEnabled(isReducedMotionEnabled)
}}
label="two">
<ButtonText>
Is reduced motion enabled?: (
{reducedMotionEnabled?.toString() || 'undefined'})
</ButtonText>
</Button>
<Prompt.Outer control={prompt}>
<Prompt.TitleText>This is a prompt</Prompt.TitleText>
<Prompt.DescriptionText>