Fix infinite query reloading behavior (reset, not invalidate) (#2031)

* Reset, not invalidate, notification queries

* Reset, not invalidate, feed queries
zio/stable
Paul Frazee 2023-11-29 11:15:35 -08:00 committed by GitHub
parent 9239efac9c
commit 4b3ec54add
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 13 additions and 13 deletions

View File

@ -83,7 +83,7 @@ export function init(queryClient: QueryClient) {
) )
if (event.request.trigger.type === 'push') { if (event.request.trigger.type === 'push') {
// refresh notifications in the background // refresh notifications in the background
queryClient.invalidateQueries({queryKey: RQKEY_NOTIFS()}) queryClient.resetQueries({queryKey: RQKEY_NOTIFS()})
// handle payload-based deeplinks // handle payload-based deeplinks
let payload let payload
if (isIOS) { if (isIOS) {
@ -121,7 +121,7 @@ export function init(queryClient: QueryClient) {
logger.DebugContext.notifications, logger.DebugContext.notifications,
) )
track('Notificatons:OpenApp') track('Notificatons:OpenApp')
queryClient.invalidateQueries({queryKey: RQKEY_NOTIFS()}) queryClient.resetQueries({queryKey: RQKEY_NOTIFS()})
resetToTab('NotificationsTab') // open notifications tab resetToTab('NotificationsTab') // open notifications tab
} }
}, },

View File

@ -126,7 +126,7 @@ export function Provider({children}: React.PropsWithChildren<{}>) {
// update & broadcast // update & broadcast
setNumUnread(unreadCountStr) setNumUnread(unreadCountStr)
if (invalidate) { if (invalidate) {
queryClient.invalidateQueries({queryKey: RQKEY_NOTIFS()}) queryClient.resetQueries({queryKey: RQKEY_NOTIFS()})
} }
broadcast.postMessage({event: unreadCountStr}) broadcast.postMessage({event: unreadCountStr})
} catch (e) { } catch (e) {

View File

@ -62,7 +62,7 @@ export function FeedPage({
const onSoftReset = React.useCallback(() => { const onSoftReset = React.useCallback(() => {
if (isPageFocused) { if (isPageFocused) {
scrollToTop() scrollToTop()
queryClient.invalidateQueries({queryKey: FEED_RQKEY(feed)}) queryClient.resetQueries({queryKey: FEED_RQKEY(feed)})
setHasNew(false) setHasNew(false)
} }
}, [isPageFocused, scrollToTop, queryClient, feed, setHasNew]) }, [isPageFocused, scrollToTop, queryClient, feed, setHasNew])
@ -83,7 +83,7 @@ export function FeedPage({
const onPressLoadLatest = React.useCallback(() => { const onPressLoadLatest = React.useCallback(() => {
scrollToTop() scrollToTop()
queryClient.invalidateQueries({queryKey: FEED_RQKEY(feed)}) queryClient.resetQueries({queryKey: FEED_RQKEY(feed)})
setHasNew(false) setHasNew(false)
}, [scrollToTop, feed, queryClient, setHasNew]) }, [scrollToTop, feed, queryClient, setHasNew])

View File

@ -54,7 +54,7 @@ export function NotificationsScreen({}: Props) {
scrollToTop() scrollToTop()
if (hasNew) { if (hasNew) {
// render what we have now // render what we have now
queryClient.invalidateQueries({ queryClient.resetQueries({
queryKey: NOTIFS_RQKEY(), queryKey: NOTIFS_RQKEY(),
}) })
} else { } else {

View File

@ -403,7 +403,7 @@ const FeedSection = React.forwardRef<SectionRef, FeedSectionProps>(
const onScrollToTop = React.useCallback(() => { const onScrollToTop = React.useCallback(() => {
scrollElRef.current?.scrollToOffset({offset: -headerHeight}) scrollElRef.current?.scrollToOffset({offset: -headerHeight})
queryClient.invalidateQueries({queryKey: FEED_RQKEY(feed)}) queryClient.resetQueries({queryKey: FEED_RQKEY(feed)})
setHasNew(false) setHasNew(false)
}, [scrollElRef, headerHeight, queryClient, feed, setHasNew]) }, [scrollElRef, headerHeight, queryClient, feed, setHasNew])
React.useImperativeHandle(ref, () => ({ React.useImperativeHandle(ref, () => ({

View File

@ -501,7 +501,7 @@ const FeedSection = React.forwardRef<SectionRef, FeedSectionProps>(
const onScrollToTop = useCallback(() => { const onScrollToTop = useCallback(() => {
scrollElRef.current?.scrollToOffset({offset: -headerHeight}) scrollElRef.current?.scrollToOffset({offset: -headerHeight})
queryClient.invalidateQueries({queryKey: FEED_RQKEY(feed)}) queryClient.resetQueries({queryKey: FEED_RQKEY(feed)})
setHasNew(false) setHasNew(false)
}, [scrollElRef, headerHeight, queryClient, feed, setHasNew]) }, [scrollElRef, headerHeight, queryClient, feed, setHasNew])

View File

@ -127,7 +127,7 @@ function ProfileListScreenLoaded({
list, list,
onChange() { onChange() {
if (isCurateList) { if (isCurateList) {
queryClient.invalidateQueries({ queryClient.resetQueries({
// TODO(eric) should construct these strings with a fn too // TODO(eric) should construct these strings with a fn too
queryKey: FEED_RQKEY(`list|${list.uri}`), queryKey: FEED_RQKEY(`list|${list.uri}`),
}) })
@ -530,7 +530,7 @@ const FeedSection = React.forwardRef<SectionRef, FeedSectionProps>(
const onScrollToTop = useCallback(() => { const onScrollToTop = useCallback(() => {
scrollElRef.current?.scrollToOffset({offset: -headerHeight}) scrollElRef.current?.scrollToOffset({offset: -headerHeight})
queryClient.invalidateQueries({queryKey: FEED_RQKEY(feed)}) queryClient.resetQueries({queryKey: FEED_RQKEY(feed)})
setHasNew(false) setHasNew(false)
}, [scrollElRef, headerHeight, queryClient, feed, setHasNew]) }, [scrollElRef, headerHeight, queryClient, feed, setHasNew])
React.useImperativeHandle(ref, () => ({ React.useImperativeHandle(ref, () => ({

View File

@ -141,7 +141,7 @@ export function DrawerContent() {
} else { } else {
if (tab === 'Notifications') { if (tab === 'Notifications') {
// fetch new notifs on view // fetch new notifs on view
queryClient.invalidateQueries({ queryClient.resetQueries({
queryKey: NOTIFS_RQKEY(), queryKey: NOTIFS_RQKEY(),
}) })
} }

View File

@ -62,7 +62,7 @@ export function BottomBar({navigation}: BottomTabBarProps) {
} else { } else {
if (tab === 'Notifications') { if (tab === 'Notifications') {
// fetch new notifs on view // fetch new notifs on view
queryClient.invalidateQueries({ queryClient.resetQueries({
queryKey: NOTIFS_RQKEY(), queryKey: NOTIFS_RQKEY(),
}) })
} }

View File

@ -150,7 +150,7 @@ function NavItem({count, href, icon, iconFilled, label}: NavItemProps) {
} else { } else {
if (href === '/notifications') { if (href === '/notifications') {
// fetch new notifs on view // fetch new notifs on view
queryClient.invalidateQueries({ queryClient.resetQueries({
queryKey: NOTIFS_RQKEY(), queryKey: NOTIFS_RQKEY(),
}) })
} }