Surface raw server error if exists (#2096)
* Surface raw server error if exists * Update copy * Update translation files --------- Co-authored-by: Paul Frazee <pfrazee@gmail.com>
This commit is contained in:
parent
7f3324d4a4
commit
e6bda92b20
9 changed files with 602 additions and 463 deletions
|
@ -210,7 +210,7 @@ let Feed = ({
|
|||
return (
|
||||
<FeedErrorMessage
|
||||
feedDesc={feed}
|
||||
error={error}
|
||||
error={error ?? undefined}
|
||||
onPressTryAgain={onPressTryAgain}
|
||||
/>
|
||||
)
|
||||
|
|
|
@ -10,7 +10,7 @@ import {useNavigation} from '@react-navigation/native'
|
|||
import {NavigationProp} from 'lib/routes/types'
|
||||
import {logger} from '#/logger'
|
||||
import {useModalControls} from '#/state/modals'
|
||||
import {msg as msgLingui} from '@lingui/macro'
|
||||
import {msg as msgLingui, Trans} from '@lingui/macro'
|
||||
import {useLingui} from '@lingui/react'
|
||||
import {FeedDescriptor} from '#/state/queries/post-feed'
|
||||
import {EmptyState} from '../util/EmptyState'
|
||||
|
@ -35,7 +35,7 @@ export function FeedErrorMessage({
|
|||
onPressTryAgain,
|
||||
}: {
|
||||
feedDesc: FeedDescriptor
|
||||
error: any
|
||||
error?: Error
|
||||
onPressTryAgain: () => void
|
||||
}) {
|
||||
const knownError = React.useMemo(
|
||||
|
@ -47,7 +47,13 @@ export function FeedErrorMessage({
|
|||
knownError !== KnownError.Unknown &&
|
||||
feedDesc.startsWith('feedgen')
|
||||
) {
|
||||
return <FeedgenErrorMessage feedDesc={feedDesc} knownError={knownError} />
|
||||
return (
|
||||
<FeedgenErrorMessage
|
||||
feedDesc={feedDesc}
|
||||
knownError={knownError}
|
||||
rawError={error}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
if (knownError === KnownError.Block) {
|
||||
|
@ -71,9 +77,11 @@ export function FeedErrorMessage({
|
|||
function FeedgenErrorMessage({
|
||||
feedDesc,
|
||||
knownError,
|
||||
rawError,
|
||||
}: {
|
||||
feedDesc: FeedDescriptor
|
||||
knownError: KnownError
|
||||
rawError?: Error
|
||||
}) {
|
||||
const pal = usePalette('default')
|
||||
const {_: _l} = useLingui()
|
||||
|
@ -84,7 +92,7 @@ function FeedgenErrorMessage({
|
|||
[KnownError.Unknown]: '',
|
||||
[KnownError.Block]: '',
|
||||
[KnownError.FeedgenDoesNotExist]: _l(
|
||||
msgLingui`Hmmm, we're having trouble finding this feed. It may have been deleted.`,
|
||||
msgLingui`Hmm, 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.`,
|
||||
|
@ -96,13 +104,13 @@ function FeedgenErrorMessage({
|
|||
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.`,
|
||||
msgLingui`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.`,
|
||||
msgLingui`Hmm, some kind of issue occurred when contacting the feed server. Please let the feed owner know about this issue.`,
|
||||
),
|
||||
[KnownError.FeedTooManyRequests]: _l(
|
||||
msgLingui`We're sorry, but this feed is currently receiving high traffic and is temporarily unavailable. Please try again later.`,
|
||||
msgLingui`This feed is currently receiving high traffic and is temporarily unavailable. Please try again later.`,
|
||||
),
|
||||
}[knownError]),
|
||||
[_l, knownError],
|
||||
|
@ -180,6 +188,13 @@ function FeedgenErrorMessage({
|
|||
},
|
||||
]}>
|
||||
<Text style={pal.text}>{msg}</Text>
|
||||
|
||||
{rawError?.message && (
|
||||
<Text style={pal.textLight}>
|
||||
<Trans>Message from server</Trans>: {rawError.message}
|
||||
</Text>
|
||||
)}
|
||||
|
||||
{cta}
|
||||
</View>
|
||||
)
|
||||
|
|
|
@ -136,7 +136,7 @@ export function ProfileFeedScreen(props: Props) {
|
|||
function ProfileFeedScreenIntermediate({feedUri}: {feedUri: string}) {
|
||||
const {data: preferences} = usePreferencesQuery()
|
||||
const {data: info} = useFeedSourceInfoQuery({uri: feedUri})
|
||||
const {isLoading: isPublicStatusLoading, data: isPublic} =
|
||||
const {isLoading: isPublicStatusLoading, data: isPublicResponse} =
|
||||
useIsFeedPublicQuery({uri: feedUri})
|
||||
|
||||
if (!preferences || !info || isPublicStatusLoading) {
|
||||
|
@ -153,7 +153,7 @@ function ProfileFeedScreenIntermediate({feedUri}: {feedUri: string}) {
|
|||
<ProfileFeedScreenInner
|
||||
preferences={preferences}
|
||||
feedInfo={info as FeedSourceFeedInfo}
|
||||
isPublic={Boolean(isPublic)}
|
||||
isPublicResponse={isPublicResponse}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
@ -161,11 +161,11 @@ function ProfileFeedScreenIntermediate({feedUri}: {feedUri: string}) {
|
|||
export function ProfileFeedScreenInner({
|
||||
preferences,
|
||||
feedInfo,
|
||||
isPublic,
|
||||
isPublicResponse,
|
||||
}: {
|
||||
preferences: UsePreferencesQueryResponse
|
||||
feedInfo: FeedSourceFeedInfo
|
||||
isPublic: boolean
|
||||
isPublicResponse: ReturnType<typeof useIsFeedPublicQuery>['data']
|
||||
}) {
|
||||
const {_} = useLingui()
|
||||
const pal = usePalette('default')
|
||||
|
@ -403,7 +403,7 @@ export function ProfileFeedScreenInner({
|
|||
renderHeader={renderHeader}
|
||||
onCurrentPageSelected={onCurrentPageSelected}>
|
||||
{({onScroll, headerHeight, isScrolledDown, scrollElRef, isFocused}) =>
|
||||
isPublic ? (
|
||||
isPublicResponse?.isPublic ? (
|
||||
<FeedSection
|
||||
ref={feedSectionRef}
|
||||
feed={`feedgen|${feedInfo.uri}`}
|
||||
|
@ -417,7 +417,7 @@ export function ProfileFeedScreenInner({
|
|||
/>
|
||||
) : (
|
||||
<CenteredView sideBorders style={[{paddingTop: headerHeight}]}>
|
||||
<NonPublicFeedMessage />
|
||||
<NonPublicFeedMessage rawError={isPublicResponse?.error} />
|
||||
</CenteredView>
|
||||
)
|
||||
}
|
||||
|
@ -455,7 +455,7 @@ export function ProfileFeedScreenInner({
|
|||
)
|
||||
}
|
||||
|
||||
function NonPublicFeedMessage() {
|
||||
function NonPublicFeedMessage({rawError}: {rawError?: Error}) {
|
||||
const pal = usePalette('default')
|
||||
|
||||
return (
|
||||
|
@ -474,6 +474,7 @@ function NonPublicFeedMessage() {
|
|||
{
|
||||
padding: 12,
|
||||
borderRadius: 8,
|
||||
gap: 12,
|
||||
},
|
||||
]}>
|
||||
<Text style={[pal.text]}>
|
||||
|
@ -482,6 +483,12 @@ function NonPublicFeedMessage() {
|
|||
account. Please sign up or sign in to view this feed!
|
||||
</Trans>
|
||||
</Text>
|
||||
|
||||
{rawError?.message && (
|
||||
<Text style={pal.textLight}>
|
||||
<Trans>Message from server</Trans>: {rawError.message}
|
||||
</Text>
|
||||
)}
|
||||
</View>
|
||||
</View>
|
||||
)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue