diff options
author | dan <dan.abramov@gmail.com> | 2024-04-05 15:09:35 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-04-05 15:09:35 +0100 |
commit | 46c112edfdcb40681a8997ec4f47b413a08fdd14 (patch) | |
tree | 8745de3a743f9231a5151296c2df4fd6e39404e7 /src/components | |
parent | 49266c355ea781cbd7a0b373e64143da7740c91e (diff) | |
download | voidsky-46c112edfdcb40681a8997ec4f47b413a08fdd14.tar.zst |
Enforce that text is wrapped in <Text>, remaining cases (#3421)
* Toggle.Button -> Toggle.ButtonWithText * Simplify Prompt.Cancel/Action * Move lines down for better diff * Remove ButtonWithText * Simplify types * Enforce Button/ButtonText nesting * Add suggested wrapper in linter error * Check <Trans> ancestry too * Also check literals * Rm ts-ignore
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/Button.tsx | 21 | ||||
-rw-r--r-- | src/components/Lists.tsx | 6 | ||||
-rw-r--r-- | src/components/moderation/LabelsOnMeDialog.tsx | 4 |
3 files changed, 13 insertions, 18 deletions
diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 12b3fe4cb..33d777971 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -12,7 +12,6 @@ import { ViewStyle, } from 'react-native' import {LinearGradient} from 'expo-linear-gradient' -import {Trans} from '@lingui/macro' import {android, atoms as a, flatten, tokens, useTheme} from '#/alf' import {Props as SVGIconProps} from '#/components/icons/common' @@ -59,6 +58,10 @@ export type ButtonState = { export type ButtonContext = VariantProps & ButtonState +type NonTextElements = + | React.ReactElement + | Iterable<React.ReactElement | null | undefined | boolean> + export type ButtonProps = Pick< PressableProps, 'disabled' | 'onPress' | 'testID' @@ -68,11 +71,9 @@ export type ButtonProps = Pick< testID?: string label: string style?: StyleProp<ViewStyle> - children: - | React.ReactNode - | string - | ((context: ButtonContext) => React.ReactNode | string) + children: NonTextElements | ((context: ButtonContext) => NonTextElements) } + export type ButtonTextProps = TextProps & VariantProps & {disabled?: boolean} const Context = React.createContext<VariantProps & ButtonState>({ @@ -404,15 +405,7 @@ export function Button({ </View> )} <Context.Provider value={context}> - {/* @ts-ignore */} - {typeof children === 'string' || children?.type === Trans ? ( - /* @ts-ignore */ - <ButtonText>{children}</ButtonText> - ) : typeof children === 'function' ? ( - children(context) - ) : ( - children - )} + {typeof children === 'function' ? children(context) : children} </Context.Provider> </Pressable> ) diff --git a/src/components/Lists.tsx b/src/components/Lists.tsx index 605626fef..89913b12b 100644 --- a/src/components/Lists.tsx +++ b/src/components/Lists.tsx @@ -6,7 +6,7 @@ import {useLingui} from '@lingui/react' import {cleanError} from 'lib/strings/errors' import {CenteredView} from 'view/com/util/Views' import {atoms as a, useBreakpoints, useTheme} from '#/alf' -import {Button} from '#/components/Button' +import {Button, ButtonText} from '#/components/Button' import {Error} from '#/components/Error' import {Loader} from '#/components/Loader' import {Text} from '#/components/Typography' @@ -87,7 +87,9 @@ function ListFooterMaybeError({ a.py_sm, ]} onPress={onRetry}> - <Trans>Retry</Trans> + <ButtonText> + <Trans>Retry</Trans> + </ButtonText> </Button> </View> </View> diff --git a/src/components/moderation/LabelsOnMeDialog.tsx b/src/components/moderation/LabelsOnMeDialog.tsx index 95e3d242b..5cf86644c 100644 --- a/src/components/moderation/LabelsOnMeDialog.tsx +++ b/src/components/moderation/LabelsOnMeDialog.tsx @@ -244,7 +244,7 @@ function AppealForm({ size="medium" onPress={onPressBack} label={_(msg`Back`)}> - {_(msg`Back`)} + <ButtonText>{_(msg`Back`)}</ButtonText> </Button> <Button testID="submitBtn" @@ -253,7 +253,7 @@ function AppealForm({ size="medium" onPress={onSubmit} label={_(msg`Submit`)}> - {_(msg`Submit`)} + <ButtonText>{_(msg`Submit`)}</ButtonText> </Button> </View> </> |