Bluesky app fork with some witchin' additions 💫 witchsky.app
bluesky fork client

Remove `moderatePost_wrapped` (#7188)

* rm `moderatePost_wrapped`

* Handle display in app

---------

Co-authored-by: Eric Bailey <git@esb.lol>

authored by samuel.fm

Eric Bailey and committed by
GitHub
0d1373bb cc8369e8

+19 -55
-14
.eslintrc.js
··· 80 ], 81 'simple-import-sort/exports': 'error', 82 'react-compiler/react-compiler': 'warn', 83 - 'no-restricted-imports': [ 84 - 'error', 85 - { 86 - paths: [ 87 - { 88 - name: '@atproto/api', 89 - importNames: ['moderatePost'], 90 - message: 91 - 'Please use `moderatePost_wrapped` from `#/lib/moderatePost_wrapped` instead.', 92 - }, 93 - ], 94 - }, 95 - ], 96 - '@typescript-eslint/ban-ts-comment': 'warn', 97 }, 98 ignorePatterns: [ 99 '**/__mocks__/*.ts',
··· 80 ], 81 'simple-import-sort/exports': 'error', 82 'react-compiler/react-compiler': 'warn', 83 }, 84 ignorePatterns: [ 85 '**/__mocks__/*.ts',
+1
bskyembed/src/labels.ts
··· 13 return 'Adult Content' 14 case 'nudity': 15 return 'Non-sexual Nudity' 16 case 'graphic-media': 17 return 'Graphic Media' 18 default:
··· 13 return 'Adult Content' 14 case 'nudity': 15 return 'Non-sexual Nudity' 16 + case 'gore': 17 case 'graphic-media': 18 return 'Graphic Media' 19 default:
+1
bskyogcard/src/routes/starter-pack.tsx
··· 97 'nudity', 98 'sexual-figurative', 99 'graphic-media', 100 'self-harm', 101 'sensitive', 102 'security',
··· 97 'nudity', 98 'sexual-figurative', 99 'graphic-media', 100 + 'gore', 101 'self-harm', 102 'sensitive', 103 'security',
-31
src/lib/moderatePost_wrapped.ts
··· 1 - /* eslint-disable-next-line no-restricted-imports */ 2 - import {BSKY_LABELER_DID, moderatePost} from '@atproto/api' 3 - 4 - type ModeratePost = typeof moderatePost 5 - type Options = Parameters<ModeratePost>[1] 6 - 7 - export function moderatePost_wrapped( 8 - subject: Parameters<ModeratePost>[0], 9 - opts: Options, 10 - ) { 11 - // HACK 12 - // temporarily translate 'gore' into 'graphic-media' during the transition period 13 - // can remove this in a few months 14 - // -prf 15 - translateOldLabels(subject) 16 - 17 - return moderatePost(subject, opts) 18 - } 19 - 20 - function translateOldLabels(subject: Parameters<ModeratePost>[0]) { 21 - if (subject.labels) { 22 - for (const label of subject.labels) { 23 - if ( 24 - label.val === 'gore' && 25 - (!label.src || label.src === BSKY_LABELER_DID) 26 - ) { 27 - label.val = 'graphic-media' 28 - } 29 - } 30 - } 31 - }
···
+4
src/lib/moderation/useGlobalLabelStrings.ts
··· 46 name: _(msg`Graphic Media`), 47 description: _(msg`Explicit or potentially disturbing media.`), 48 }, 49 }), 50 [_], 51 )
··· 46 name: _(msg`Graphic Media`), 47 description: _(msg`Explicit or potentially disturbing media.`), 48 }, 49 + gore: { 50 + name: _(msg`Graphic Media`), 51 + description: _(msg`Explicit or potentially disturbing media.`), 52 + }, 53 }), 54 [_], 55 )
+1 -1
src/screens/Messages/components/MessageInputEmbed.tsx
··· 4 AppBskyFeedPost, 5 AppBskyRichtextFacet, 6 AtUri, 7 RichText as RichTextAPI, 8 } from '@atproto/api' 9 import {msg} from '@lingui/macro' 10 import {useLingui} from '@lingui/react' 11 import {RouteProp, useNavigation, useRoute} from '@react-navigation/native' 12 13 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 14 import {makeProfileLink} from '#/lib/routes/links' 15 import {CommonNavigatorParams, NavigationProp} from '#/lib/routes/types' 16 import {
··· 4 AppBskyFeedPost, 5 AppBskyRichtextFacet, 6 AtUri, 7 + moderatePost, 8 RichText as RichTextAPI, 9 } from '@atproto/api' 10 import {msg} from '@lingui/macro' 11 import {useLingui} from '@lingui/react' 12 import {RouteProp, useNavigation, useRoute} from '@react-navigation/native' 13 14 import {makeProfileLink} from '#/lib/routes/links' 15 import {CommonNavigatorParams, NavigationProp} from '#/lib/routes/types' 16 import {
+1 -1
src/state/queries/notifications/feed.ts
··· 22 AppBskyFeedDefs, 23 AppBskyFeedPost, 24 AtUri, 25 } from '@atproto/api' 26 import { 27 InfiniteData, ··· 31 useQueryClient, 32 } from '@tanstack/react-query' 33 34 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 35 import {useAgent} from '#/state/session' 36 import {useThreadgateHiddenReplyUris} from '#/state/threadgate-hidden-replies' 37 import {useModerationOpts} from '../../preferences/moderation-opts'
··· 22 AppBskyFeedDefs, 23 AppBskyFeedPost, 24 AtUri, 25 + moderatePost, 26 } from '@atproto/api' 27 import { 28 InfiniteData, ··· 32 useQueryClient, 33 } from '@tanstack/react-query' 34 35 import {useAgent} from '#/state/session' 36 import {useThreadgateHiddenReplyUris} from '#/state/threadgate-hidden-replies' 37 import {useModerationOpts} from '../../preferences/moderation-opts'
+1 -1
src/state/queries/post-feed.ts
··· 6 AppBskyFeedPost, 7 AtUri, 8 BskyAgent, 9 ModerationDecision, 10 } from '@atproto/api' 11 import { ··· 27 import {FeedTuner, FeedTunerFn} from '#/lib/api/feed-manip' 28 import {DISCOVER_FEED_URI} from '#/lib/constants' 29 import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants' 30 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 31 import {logger} from '#/logger' 32 import {STALE} from '#/state/queries' 33 import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const'
··· 6 AppBskyFeedPost, 7 AtUri, 8 BskyAgent, 9 + moderatePost, 10 ModerationDecision, 11 } from '@atproto/api' 12 import { ··· 28 import {FeedTuner, FeedTunerFn} from '#/lib/api/feed-manip' 29 import {DISCOVER_FEED_URI} from '#/lib/constants' 30 import {BSKY_FEED_OWNER_DIDS} from '#/lib/constants' 31 import {logger} from '#/logger' 32 import {STALE} from '#/state/queries' 33 import {DEFAULT_LOGGED_OUT_PREFERENCES} from '#/state/queries/preferences/const'
+1 -1
src/state/queries/post-thread.ts
··· 5 AppBskyFeedGetPostThread, 6 AppBskyFeedPost, 7 AtUri, 8 ModerationDecision, 9 ModerationOpts, 10 } from '@atproto/api' 11 import {QueryClient, useQuery, useQueryClient} from '@tanstack/react-query' 12 13 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 14 import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from '#/state/queries/post-quotes' 15 import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' 16 import {
··· 5 AppBskyFeedGetPostThread, 6 AppBskyFeedPost, 7 AtUri, 8 + moderatePost, 9 ModerationDecision, 10 ModerationOpts, 11 } from '@atproto/api' 12 import {QueryClient, useQuery, useQueryClient} from '@tanstack/react-query' 13 14 import {findAllPostsInQueryData as findAllPostsInQuoteQueryData} from '#/state/queries/post-quotes' 15 import {UsePreferencesQueryResponse} from '#/state/queries/preferences/types' 16 import {
+1 -1
src/state/queries/search-posts.ts
··· 4 AppBskyFeedDefs, 5 AppBskyFeedSearchPosts, 6 AtUri, 7 } from '@atproto/api' 8 import { 9 InfiniteData, ··· 12 useInfiniteQuery, 13 } from '@tanstack/react-query' 14 15 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 16 import {useModerationOpts} from '#/state/preferences/moderation-opts' 17 import {useAgent} from '#/state/session' 18 import {
··· 4 AppBskyFeedDefs, 5 AppBskyFeedSearchPosts, 6 AtUri, 7 + moderatePost, 8 } from '@atproto/api' 9 import { 10 InfiniteData, ··· 13 useInfiniteQuery, 14 } from '@tanstack/react-query' 15 16 import {useModerationOpts} from '#/state/preferences/moderation-opts' 17 import {useAgent} from '#/state/session' 18 import {
+1 -1
src/view/com/post-thread/PostQuotes.tsx
··· 2 import { 3 AppBskyFeedDefs, 4 AppBskyFeedPost, 5 ModerationDecision, 6 } from '@atproto/api' 7 import {msg} from '@lingui/macro' 8 import {useLingui} from '@lingui/react' 9 10 import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 11 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 12 import {cleanError} from '#/lib/strings/errors' 13 import {logger} from '#/logger' 14 import {useModerationOpts} from '#/state/preferences/moderation-opts'
··· 2 import { 3 AppBskyFeedDefs, 4 AppBskyFeedPost, 5 + moderatePost, 6 ModerationDecision, 7 } from '@atproto/api' 8 import {msg} from '@lingui/macro' 9 import {useLingui} from '@lingui/react' 10 11 import {useInitialNumToRender} from '#/lib/hooks/useInitialNumToRender' 12 import {cleanError} from '#/lib/strings/errors' 13 import {logger} from '#/logger' 14 import {useModerationOpts} from '#/state/preferences/moderation-opts'
+5 -2
src/view/com/post-thread/PostThread.tsx
··· 3 import {runOnJS} from 'react-native-reanimated' 4 import Animated from 'react-native-reanimated' 5 import {useSafeAreaInsets} from 'react-native-safe-area-context' 6 - import {AppBskyFeedDefs, AppBskyFeedThreadgate} from '@atproto/api' 7 import {msg, Trans} from '@lingui/macro' 8 import {useLingui} from '@lingui/react' 9 ··· 12 import {useMinimalShellFabTransform} from '#/lib/hooks/useMinimalShellTransform' 13 import {useSetTitle} from '#/lib/hooks/useSetTitle' 14 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 15 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 16 import {clamp} from '#/lib/numbers' 17 import {ScrollProvider} from '#/lib/ScrollContext' 18 import {sanitizeDisplayName} from '#/lib/strings/display-names'
··· 3 import {runOnJS} from 'react-native-reanimated' 4 import Animated from 'react-native-reanimated' 5 import {useSafeAreaInsets} from 'react-native-safe-area-context' 6 + import { 7 + AppBskyFeedDefs, 8 + AppBskyFeedThreadgate, 9 + moderatePost, 10 + } from '@atproto/api' 11 import {msg, Trans} from '@lingui/macro' 12 import {useLingui} from '@lingui/react' 13 ··· 16 import {useMinimalShellFabTransform} from '#/lib/hooks/useMinimalShellTransform' 17 import {useSetTitle} from '#/lib/hooks/useSetTitle' 18 import {useWebMediaQueries} from '#/lib/hooks/useWebMediaQueries' 19 import {clamp} from '#/lib/numbers' 20 import {ScrollProvider} from '#/lib/ScrollContext' 21 import {sanitizeDisplayName} from '#/lib/strings/display-names'
+1 -1
src/view/com/post/Post.tsx
··· 4 AppBskyFeedDefs, 5 AppBskyFeedPost, 6 AtUri, 7 ModerationDecision, 8 RichText as RichTextAPI, 9 } from '@atproto/api' ··· 14 15 import {MAX_POST_LINES} from '#/lib/constants' 16 import {usePalette} from '#/lib/hooks/usePalette' 17 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 18 import {makeProfileLink} from '#/lib/routes/links' 19 import {countLines} from '#/lib/strings/helpers' 20 import {colors, s} from '#/lib/styles'
··· 4 AppBskyFeedDefs, 5 AppBskyFeedPost, 6 AtUri, 7 + moderatePost, 8 ModerationDecision, 9 RichText as RichTextAPI, 10 } from '@atproto/api' ··· 15 16 import {MAX_POST_LINES} from '#/lib/constants' 17 import {usePalette} from '#/lib/hooks/usePalette' 18 import {makeProfileLink} from '#/lib/routes/links' 19 import {countLines} from '#/lib/strings/helpers' 20 import {colors, s} from '#/lib/styles'
+1 -1
src/view/com/util/post-embeds/QuoteEmbed.tsx
··· 14 AppBskyEmbedVideo, 15 AppBskyFeedDefs, 16 AppBskyFeedPost, 17 ModerationDecision, 18 RichText as RichTextAPI, 19 } from '@atproto/api' ··· 26 import {HITSLOP_20} from '#/lib/constants' 27 import {usePalette} from '#/lib/hooks/usePalette' 28 import {InfoCircleIcon} from '#/lib/icons' 29 - import {moderatePost_wrapped as moderatePost} from '#/lib/moderatePost_wrapped' 30 import {makeProfileLink} from '#/lib/routes/links' 31 import {s} from '#/lib/styles' 32 import {useModerationOpts} from '#/state/preferences/moderation-opts'
··· 14 AppBskyEmbedVideo, 15 AppBskyFeedDefs, 16 AppBskyFeedPost, 17 + moderatePost, 18 ModerationDecision, 19 RichText as RichTextAPI, 20 } from '@atproto/api' ··· 27 import {HITSLOP_20} from '#/lib/constants' 28 import {usePalette} from '#/lib/hooks/usePalette' 29 import {InfoCircleIcon} from '#/lib/icons' 30 import {makeProfileLink} from '#/lib/routes/links' 31 import {s} from '#/lib/styles' 32 import {useModerationOpts} from '#/state/preferences/moderation-opts'