diff --git a/src/api/general.ts b/src/api/general.ts index 57298d47..20849953 100644 --- a/src/api/general.ts +++ b/src/api/general.ts @@ -58,9 +58,9 @@ const apiGeneral = async ({ }) }) .catch(error => { - if (sentry && Math.random() < 0.001) { + if (sentry && Math.random() < 0.01) { Sentry.Native.setExtras({ - API: 'instance', + API: 'general', ...(error.response && { response: error.response }), ...(error.request && { request: error.request }) }) diff --git a/src/api/tooot.ts b/src/api/tooot.ts index a199915f..8017944a 100644 --- a/src/api/tooot.ts +++ b/src/api/tooot.ts @@ -61,7 +61,7 @@ const apiTooot = async ({ }) }) .catch(error => { - if (sentry && Math.random() < 0.005) { + if (sentry && Math.random() < 0.01) { Sentry.Native.setExtras({ API: 'tooot', ...(error.response && { response: error.response }), diff --git a/src/screens/Tabs/Shared/Toot.tsx b/src/screens/Tabs/Shared/Toot.tsx index 3a4c7ab2..904582aa 100644 --- a/src/screens/Tabs/Shared/Toot.tsx +++ b/src/screens/Tabs/Shared/Toot.tsx @@ -7,6 +7,7 @@ import { findIndex } from 'lodash' import React, { useCallback, useEffect, useRef, useState } from 'react' import { FlatList } from 'react-native' import { InfiniteQueryObserver, useQueryClient } from 'react-query' +import * as Sentry from 'sentry-expo' const TabSharedToot: React.FC> = ({ route: { @@ -40,30 +41,56 @@ const TabSharedToot: React.FC> = ({ if (!scrolled.current) { scrolled.current = true const pointer = findIndex(flattenData, ['id', toot.id]) - pointer < flattenData.length && - setTimeout(() => { - flRef.current?.scrollToIndex({ + try { + pointer < flattenData.length && + setTimeout(() => { + flRef.current?.scrollToIndex({ + index: pointer, + viewOffset: 100 + }) + }, 500) + } catch (err) { + if (Math.random() < 0.1) { + Sentry.Native.setExtras({ + type: 'original', index: pointer, - viewOffset: 100 + itemsLength: flattenData.length, + flattenData }) - }, 500) + Sentry.Native.captureException(err) + } + } } } }) return () => unsubscribe() - }, []) + }, [scrolled.current]) // Toot page auto scroll to selected toot const onScrollToIndexFailed = useCallback( error => { const offset = error.averageItemLength * error.index flRef.current?.scrollToOffset({ offset }) - setTimeout( - () => - error.index < itemsLength && - flRef.current?.scrollToIndex({ index: error.index, viewOffset: 100 }), - 500 - ) + try { + error.index < itemsLength && + setTimeout( + () => + flRef.current?.scrollToIndex({ + index: error.index, + viewOffset: 100 + }), + 500 + ) + } catch (err) { + if (Math.random() < 0.1) { + Sentry.Native.setExtras({ + type: 'onScrollToIndexFailed', + index: error.index, + itemsLength + }) + Sentry.Native.captureException(err) + } + } }, [itemsLength] )