Add modal state provider, replace usage except methods (#1833)

* Add modal state provider, replace usage except methods

* Replace easy spots

* Fix sticky spots

* Replace final usages

* Memorize context objects

* Add more warnings
This commit is contained in:
Eric Bailey 2023-11-08 12:34:10 -06:00 committed by GitHub
parent 5eadadffbf
commit f18b15241a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
70 changed files with 634 additions and 498 deletions

View file

@ -6,7 +6,7 @@ import {ModerationUI} from '@atproto/api'
import {Text} from '../text/Text'
import {ShieldExclamation} from 'lib/icons'
import {describeModerationCause} from 'lib/moderation'
import {useStores} from 'state/index'
import {useModalControls} from '#/state/modals'
export function ContentHider({
testID,
@ -22,10 +22,10 @@ export function ContentHider({
style?: StyleProp<ViewStyle>
childContainerStyle?: StyleProp<ViewStyle>
}>) {
const store = useStores()
const pal = usePalette('default')
const {isMobile} = useWebMediaQueries()
const [override, setOverride] = React.useState(false)
const {openModal} = useModalControls()
if (!moderation.blur || (ignoreMute && moderation.cause?.type === 'muted')) {
return (
@ -43,7 +43,7 @@ export function ContentHider({
if (!moderation.noOverride) {
setOverride(v => !v)
} else {
store.shell.openModal({
openModal({
name: 'moderation-details',
context: 'content',
moderation,
@ -62,7 +62,7 @@ export function ContentHider({
]}>
<Pressable
onPress={() => {
store.shell.openModal({
openModal({
name: 'moderation-details',
context: 'content',
moderation,

View file

@ -5,7 +5,7 @@ import {Text} from '../text/Text'
import {usePalette} from 'lib/hooks/usePalette'
import {ShieldExclamation} from 'lib/icons'
import {describeModerationCause} from 'lib/moderation'
import {useStores} from 'state/index'
import {useModalControls} from '#/state/modals'
export function PostAlerts({
moderation,
@ -15,8 +15,8 @@ export function PostAlerts({
includeMute?: boolean
style?: StyleProp<ViewStyle>
}) {
const store = useStores()
const pal = usePalette('default')
const {openModal} = useModalControls()
const shouldAlert = !!moderation.cause && moderation.alert
if (!shouldAlert) {
@ -27,7 +27,7 @@ export function PostAlerts({
return (
<Pressable
onPress={() => {
store.shell.openModal({
openModal({
name: 'moderation-details',
context: 'content',
moderation,

View file

@ -8,7 +8,7 @@ import {Text} from '../text/Text'
import {addStyle} from 'lib/styles'
import {describeModerationCause} from 'lib/moderation'
import {ShieldExclamation} from 'lib/icons'
import {useStores} from 'state/index'
import {useModalControls} from '#/state/modals'
interface Props extends ComponentProps<typeof Link> {
// testID?: string
@ -25,10 +25,10 @@ export function PostHider({
children,
...props
}: Props) {
const store = useStores()
const pal = usePalette('default')
const {isMobile} = useWebMediaQueries()
const [override, setOverride] = React.useState(false)
const {openModal} = useModalControls()
if (!moderation.blur) {
return (
@ -63,7 +63,7 @@ export function PostHider({
]}>
<Pressable
onPress={() => {
store.shell.openModal({
openModal({
name: 'moderation-details',
context: 'content',
moderation,

View file

@ -8,7 +8,7 @@ import {
describeModerationCause,
getProfileModerationCauses,
} from 'lib/moderation'
import {useStores} from 'state/index'
import {useModalControls} from '#/state/modals'
export function ProfileHeaderAlerts({
moderation,
@ -17,8 +17,8 @@ export function ProfileHeaderAlerts({
moderation: ProfileModeration
style?: StyleProp<ViewStyle>
}) {
const store = useStores()
const pal = usePalette('default')
const {openModal} = useModalControls()
const causes = getProfileModerationCauses(moderation)
if (!causes.length) {
@ -34,7 +34,7 @@ export function ProfileHeaderAlerts({
testID="profileHeaderAlert"
key={desc.name}
onPress={() => {
store.shell.openModal({
openModal({
name: 'moderation-details',
context: 'content',
moderation: {cause},

View file

@ -18,7 +18,7 @@ import {NavigationProp} from 'lib/routes/types'
import {Text} from '../text/Text'
import {Button} from '../forms/Button'
import {describeModerationCause} from 'lib/moderation'
import {useStores} from 'state/index'
import {useModalControls} from '#/state/modals'
export function ScreenHider({
testID,
@ -34,12 +34,12 @@ export function ScreenHider({
style?: StyleProp<ViewStyle>
containerStyle?: StyleProp<ViewStyle>
}>) {
const store = useStores()
const pal = usePalette('default')
const palInverted = usePalette('inverted')
const [override, setOverride] = React.useState(false)
const navigation = useNavigation<NavigationProp>()
const {isMobile} = useWebMediaQueries()
const {openModal} = useModalControls()
if (!moderation.blur || override) {
return (
@ -72,7 +72,7 @@ export function ScreenHider({
.{' '}
<TouchableWithoutFeedback
onPress={() => {
store.shell.openModal({
openModal({
name: 'moderation-details',
context: 'account',
moderation,