Fix infinite query reloading behavior (reset, not invalidate) (#2031)
* Reset, not invalidate, notification queries * Reset, not invalidate, feed querieszio/stable
parent
9239efac9c
commit
4b3ec54add
|
@ -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
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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])
|
||||||
|
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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, () => ({
|
||||||
|
|
|
@ -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])
|
||||||
|
|
||||||
|
|
|
@ -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, () => ({
|
||||||
|
|
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
|
@ -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(),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue