diff --git a/eslint-suppressions.json b/eslint-suppressions.json index acbd6f39cf..aa42e92b5b 100644 --- a/eslint-suppressions.json +++ b/eslint-suppressions.json @@ -688,11 +688,6 @@ "count": 1 } }, - "src/view/screens/DebugMod.tsx": { - "@typescript-eslint/no-explicit-any": { - "count": 1 - } - }, "src/view/shell/createNativeStackNavigatorWithAuth.tsx": { "@typescript-eslint/no-explicit-any": { "count": 1 diff --git a/src/view/screens/DebugMod.tsx b/src/view/screens/DebugMod.tsx index c409dc7bc1..c3fe8fba8e 100644 --- a/src/view/screens/DebugMod.tsx +++ b/src/view/screens/DebugMod.tsx @@ -1,5 +1,6 @@ import {useMemo, useState} from 'react' import {View} from 'react-native' +import {useSharedValue} from 'react-native-reanimated' import { type AppBskyActorDefs, type AppBskyFeedDefs, @@ -54,6 +55,7 @@ import * as ProfileCard from '#/components/ProfileCard' import {H1, H3, P, Text} from '#/components/Typography' import {ScreenHider} from '../../components/moderation/ScreenHider' import {NotificationFeedItem} from '../com/notifications/NotificationFeedItem' +import {PagerHeaderProvider} from '../com/pager/PagerHeaderContext' import {PostFeedItem} from '../com/posts/PostFeedItem' const LABEL_VALUES: (keyof typeof LABELS)[] = Object.keys( @@ -272,325 +274,341 @@ export const DebugModScreen = ({}: NativeStackScreenProps< return moderatePost(post, modOpts) }, [post, modOpts]) + const sv = useSharedValue(0) + return ( - - - -

- Moderation states -

+ + + + +

+ Moderation states +

- - - - Label - - - Block - - - Mute - - + + + + Label + + + Block + + + Mute + + - {scenario[0] === 'label' && ( - <> - - - - {LABEL_VALUES.map(labelValue => { - let targetFixed = target[0] - if ( - targetFixed !== 'account' && - targetFixed !== 'profile' - ) { - targetFixed = 'content' - } - const disabled = - isSelfLabel && - LABELS[labelValue].flags.includes('no-self') - return ( - - - {labelValue} - - ) - })} - - - Custom label - - - - - {label[0] === 'custom' ? ( - - ) : ( - <> - - - - )} - - - - + {scenario[0] === 'label' && ( + <> + - - - - Target is me - - - - Following target - - - - Self label - - - - Adult disabled - - - - Signed out + type="radio" + values={label} + onChange={setLabel}> + + {LABEL_VALUES.map(labelValue => { + let targetFixed = target[0] + if ( + targetFixed !== 'account' && + targetFixed !== 'profile' + ) { + targetFixed = 'content' + } + const disabled = + isSelfLabel && + LABELS[labelValue].flags.includes('no-self') + return ( + + + {labelValue} + + ) + })} + + + Custom label - {LABELS[label[0] as keyof typeof LABELS]?.configurable !== - false && ( - - - Preference - - - + ) : ( + <> + + + + )} + + + + + + + + + Target is me + + + + + Following target + + + + + Self label + + + + Adult disabled + + + + Signed out + + + + + {LABELS[label[0] as keyof typeof LABELS]?.configurable !== + false && ( + + - + Preference + + + + + + Hide + + + + Warn + + + + Ignore + + + + + )} + + + + + + + Target + + + + + - Hide + Account - + - Warn + Profile - + - Ignore + Post + + + + Embed - )} - - - - - - - Target - - - - - - - Account - - - - Profile - - - - Post - - - - Embed - - - - - - )} - - - - - - - - Post - - - Notifications - - - Account - - - Data - - - - - {view[0] === 'post' && ( - <> - - - - - - - - )} - {view[0] === 'notifications' && ( - <> - - - - - - - )} + - {view[0] === 'account' && ( - <> - - + - - - - )} + + + Post + + + + Notifications + + + + Account + + + Data + + - {view[0] === 'data' && ( - <> - - - - - - - )} - + + {view[0] === 'post' && ( + <> + + - -
-
-
+ + + + + + + )} + + {view[0] === 'notifications' && ( + <> + + + + + + + )} + + {view[0] === 'account' && ( + <> + + + + + + + )} + + {view[0] === 'data' && ( + <> + + + + + + + )} + + + +
+
+
+
) } @@ -760,7 +778,7 @@ function SmallToggler({ ) } -function DataView({label, data}: {label: string; data: any}) { +function DataView({label, data}: {label: string; data: unknown}) { return (