Handle nsfw feeds in public view (#2035)
* Handle nsfw feeds in public view * Translate * Refactor, new approach * Translate * Copy * Translate * Revert changes to Feed * Remove unused retry * Translate
This commit is contained in:
parent
005fc7cc38
commit
b83fa95793
12 changed files with 761 additions and 569 deletions
|
@ -17,28 +17,15 @@ import {EmptyState} from '../util/EmptyState'
|
|||
import {cleanError} from '#/lib/strings/errors'
|
||||
import {useRemoveFeedMutation} from '#/state/queries/preferences'
|
||||
|
||||
enum KnownError {
|
||||
Block,
|
||||
FeedgenDoesNotExist,
|
||||
FeedgenMisconfigured,
|
||||
FeedgenBadResponse,
|
||||
FeedgenOffline,
|
||||
FeedgenUnknown,
|
||||
Unknown,
|
||||
}
|
||||
|
||||
const MESSAGES = {
|
||||
[KnownError.Unknown]: '',
|
||||
[KnownError.Block]: '',
|
||||
[KnownError.FeedgenDoesNotExist]: `Hmmm, we're having trouble finding this feed. It may have been deleted.`,
|
||||
[KnownError.FeedgenMisconfigured]:
|
||||
'Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue.',
|
||||
[KnownError.FeedgenBadResponse]:
|
||||
'Hmm, the feed server gave a bad response. Please let the feed owner know about this issue.',
|
||||
[KnownError.FeedgenOffline]:
|
||||
'Hmm, the feed server appears to be offline. Please let the feed owner know about this issue.',
|
||||
[KnownError.FeedgenUnknown]:
|
||||
'Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue.',
|
||||
export enum KnownError {
|
||||
Block = 'Block',
|
||||
FeedgenDoesNotExist = 'FeedgenDoesNotExist',
|
||||
FeedgenMisconfigured = 'FeedgenMisconfigured',
|
||||
FeedgenBadResponse = 'FeedgenBadResponse',
|
||||
FeedgenOffline = 'FeedgenOffline',
|
||||
FeedgenUnknown = 'FeedgenUnknown',
|
||||
FeedNSFPublic = 'FeedNSFPublic',
|
||||
Unknown = 'Unknown',
|
||||
}
|
||||
|
||||
export function FeedErrorMessage({
|
||||
|
@ -90,7 +77,32 @@ function FeedgenErrorMessage({
|
|||
const pal = usePalette('default')
|
||||
const {_: _l} = useLingui()
|
||||
const navigation = useNavigation<NavigationProp>()
|
||||
const msg = MESSAGES[knownError]
|
||||
const msg = React.useMemo(
|
||||
() =>
|
||||
({
|
||||
[KnownError.Unknown]: '',
|
||||
[KnownError.Block]: '',
|
||||
[KnownError.FeedgenDoesNotExist]: _l(
|
||||
msgLingui`Hmmm, we're having trouble finding this feed. It may have been deleted.`,
|
||||
),
|
||||
[KnownError.FeedgenMisconfigured]: _l(
|
||||
msgLingui`Hmm, the feed server appears to be misconfigured. Please let the feed owner know about this issue.`,
|
||||
),
|
||||
[KnownError.FeedgenBadResponse]: _l(
|
||||
msgLingui`Hmm, the feed server gave a bad response. Please let the feed owner know about this issue.`,
|
||||
),
|
||||
[KnownError.FeedgenOffline]: _l(
|
||||
msgLingui`Hmm, the feed server appears to be offline. Please let the feed owner know about this issue.`,
|
||||
),
|
||||
[KnownError.FeedNSFPublic]: _l(
|
||||
msgLingui`We're sorry, but this content is not viewable without a Bluesky account.`,
|
||||
),
|
||||
[KnownError.FeedgenUnknown]: _l(
|
||||
msgLingui`Hmm, some kind of issue occured when contacting the feed server. Please let the feed owner know about this issue.`,
|
||||
),
|
||||
}[knownError]),
|
||||
[_l, knownError],
|
||||
)
|
||||
const [_, uri] = feedDesc.split('|')
|
||||
const [ownerDid] = safeParseFeedgenUri(uri)
|
||||
const {openModal, closeModal} = useModalControls()
|
||||
|
@ -121,6 +133,36 @@ function FeedgenErrorMessage({
|
|||
})
|
||||
}, [openModal, closeModal, uri, removeFeed, _l])
|
||||
|
||||
const cta = React.useMemo(() => {
|
||||
switch (knownError) {
|
||||
case KnownError.FeedNSFPublic: {
|
||||
return null
|
||||
}
|
||||
case KnownError.FeedgenDoesNotExist:
|
||||
case KnownError.FeedgenMisconfigured:
|
||||
case KnownError.FeedgenBadResponse:
|
||||
case KnownError.FeedgenOffline:
|
||||
case KnownError.FeedgenUnknown: {
|
||||
return (
|
||||
<View style={{flexDirection: 'row', alignItems: 'center', gap: 10}}>
|
||||
{knownError === KnownError.FeedgenDoesNotExist && (
|
||||
<Button
|
||||
type="inverted"
|
||||
label="Remove feed"
|
||||
onPress={onRemoveFeed}
|
||||
/>
|
||||
)}
|
||||
<Button
|
||||
type="default-light"
|
||||
label="View profile"
|
||||
onPress={onViewProfile}
|
||||
/>
|
||||
</View>
|
||||
)
|
||||
}
|
||||
}
|
||||
}, [knownError, onViewProfile, onRemoveFeed])
|
||||
|
||||
return (
|
||||
<View
|
||||
style={[
|
||||
|
@ -134,16 +176,7 @@ function FeedgenErrorMessage({
|
|||
},
|
||||
]}>
|
||||
<Text style={pal.text}>{msg}</Text>
|
||||
<View style={{flexDirection: 'row', alignItems: 'center', gap: 10}}>
|
||||
{knownError === KnownError.FeedgenDoesNotExist && (
|
||||
<Button type="inverted" label="Remove feed" onPress={onRemoveFeed} />
|
||||
)}
|
||||
<Button
|
||||
type="default-light"
|
||||
label="View profile"
|
||||
onPress={onViewProfile}
|
||||
/>
|
||||
</View>
|
||||
{cta}
|
||||
</View>
|
||||
)
|
||||
}
|
||||
|
@ -196,5 +229,8 @@ function detectKnownError(
|
|||
if (error.includes('feed provided an invalid response')) {
|
||||
return KnownError.FeedgenBadResponse
|
||||
}
|
||||
if (error.includes(KnownError.FeedNSFPublic)) {
|
||||
return KnownError.FeedNSFPublic
|
||||
}
|
||||
return KnownError.FeedgenUnknown
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue