From db46ccc3d82484cf671b19e95169bc558e091e24 Mon Sep 17 00:00:00 2001 From: Zhiyuan Zheng Date: Thu, 9 Jun 2022 23:25:01 +0200 Subject: [PATCH] Fix weird error reportings --- src/api/general.ts | 4 ++-- src/api/instance.ts | 4 ++-- src/api/tooot.ts | 6 +++--- src/components/Parse/HTML.tsx | 14 +++++++++----- src/components/Timeline/Shared/Actioned.tsx | 2 +- .../Timeline/Shared/HeaderShared/Account.tsx | 2 +- src/screens/Actions/Status.tsx | 2 +- src/utils/slices/instancesSlice.ts | 4 ++-- 8 files changed, 21 insertions(+), 17 deletions(-) diff --git a/src/api/general.ts b/src/api/general.ts index a39f815e..cbcc784f 100644 --- a/src/api/general.ts +++ b/src/api/general.ts @@ -68,8 +68,8 @@ const apiGeneral = async ({ error.response.data.error ) return Promise.reject({ - status: error.response.status, - message: error.response.data.error + status: error?.response.status, + message: error?.response.data.error }) } else if (error?.request) { // The request was made but no response was received diff --git a/src/api/instance.ts b/src/api/instance.ts index 86d9a367..883302e7 100644 --- a/src/api/instance.ts +++ b/src/api/instance.ts @@ -110,8 +110,8 @@ const apiInstance = async ({ error.response.data.error ) return Promise.reject({ - status: error.response.status, - message: error.response.data.error + status: error?.response.status, + message: error?.response.data.error }) } else if (error?.request) { // The request was made but no response was received diff --git a/src/api/tooot.ts b/src/api/tooot.ts index b4264a76..9c029b53 100644 --- a/src/api/tooot.ts +++ b/src/api/tooot.ts @@ -66,7 +66,7 @@ const apiTooot = async ({ }) }) .catch(error => { - if (sentry && Math.random() < 0.1) { + if (sentry) { Sentry.Native.setExtras({ API: 'tooot', ...(error?.response && { response: error.response }), @@ -85,8 +85,8 @@ const apiTooot = async ({ error.response.data.error ) return Promise.reject({ - status: error.response.status, - message: error.response.data.error + status: error?.response.status, + message: error?.response.data.error }) } else if (error?.request) { // The request was made but no response was received diff --git a/src/components/Parse/HTML.tsx b/src/components/Parse/HTML.tsx index c4c0ff62..3c1b26f4 100644 --- a/src/components/Parse/HTML.tsx +++ b/src/components/Parse/HTML.tsx @@ -49,7 +49,7 @@ const renderNode = ({ const href = node.attribs.href if (classes) { if (classes.includes('hashtag')) { - const tag = href.split(new RegExp(/\/tag\/(.*)|\/tags\/(.*)/)) + const tag = href?.split(new RegExp(/\/tag\/(.*)|\/tags\/(.*)/)) const differentTag = routeParams?.hashtag ? routeParams.hashtag !== tag[1] && routeParams.hashtag !== tag[2] : true @@ -107,7 +107,7 @@ const renderNode = ({ ) } } else { - const domain = href.split(new RegExp(/:\/\/(.[^\/]+)/)) + const domain = href?.split(new RegExp(/:\/\/(.[^\/]+)/)) // Need example here const content = node.children && node.children[0] && node.children[0].data @@ -124,11 +124,15 @@ const renderNode = ({ }} onPress={async () => { analytics('status_link_press') - !disableDetails && !shouldBeTag - ? await openLink(href, navigation) - : navigation.push('Tab-Shared-Hashtag', { + if (!disableDetails) { + if (shouldBeTag) { + navigation.push('Tab-Shared-Hashtag', { hashtag: content.substring(1) }) + } else { + await openLink(href, navigation) + } + } }} > {(content && content !== href && content) || diff --git a/src/components/Timeline/Shared/Actioned.tsx b/src/components/Timeline/Shared/Actioned.tsx index 0ff986e3..59db82b9 100644 --- a/src/components/Timeline/Shared/Actioned.tsx +++ b/src/components/Timeline/Shared/Actioned.tsx @@ -22,7 +22,7 @@ const TimelineActioned = React.memo( const { colors } = useTheme() const navigation = useNavigation>() - const name = account?.display_name || account.username + const name = account?.display_name || account?.username const iconColor = colors.primaryDefault const content = (content: string) => ( diff --git a/src/components/Timeline/Shared/HeaderShared/Account.tsx b/src/components/Timeline/Shared/HeaderShared/Account.tsx index a3a1f84d..5efe3bf9 100644 --- a/src/components/Timeline/Shared/HeaderShared/Account.tsx +++ b/src/components/Timeline/Shared/HeaderShared/Account.tsx @@ -27,7 +27,7 @@ const HeaderSharedAccount = React.memo( numberOfLines={1} > diff --git a/src/screens/Actions/Status.tsx b/src/screens/Actions/Status.tsx index da423c41..dcffd6bd 100644 --- a/src/screens/Actions/Status.tsx +++ b/src/screens/Actions/Status.tsx @@ -49,7 +49,7 @@ const ActionsStatus: React.FC = ({ message: t('common:message.error.message', { function: t(`shared.header.actions.status.${theFunction}.function`) }), - ...(err.status && + ...(err?.status && typeof err.status === 'number' && err.data && err.data.error && diff --git a/src/utils/slices/instancesSlice.ts b/src/utils/slices/instancesSlice.ts index d6693c7d..845a38b1 100644 --- a/src/utils/slices/instancesSlice.ts +++ b/src/utils/slices/instancesSlice.ts @@ -249,7 +249,7 @@ const instancesSlice = createSlice({ // Update Instance Configuration .addCase(updateConfiguration.fulfilled, (state, action) => { const activeIndex = findInstanceActive(state.instances) - state.instances[activeIndex].version = action.payload.version + state.instances[activeIndex].version = action.payload?.version || '0' state.instances[activeIndex].configuration = action.payload.configuration }) @@ -316,7 +316,7 @@ const instancesSlice = createSlice({ state.instances[activeIndex].frequentEmojis = state.instances[ activeIndex ].frequentEmojis?.filter(emoji => { - return action.payload.find( + return action.payload?.find( e => e.shortcode === emoji.emoji.shortcode && e.url === emoji.emoji.url )