attempt to fix lastChecked getting overwritten

This commit is contained in:
keyan 2024-04-06 18:28:23 -05:00
parent 1f466970b3
commit 1d154ec9b5
2 changed files with 10 additions and 6 deletions

View File

@ -516,8 +516,15 @@ export default function Notifications ({ ssrData }) {
const router = useRouter()
const dat = useData(data, ssrData)
const { notifications: { notifications, lastChecked, cursor } } = useMemo(() => {
return dat || { notifications: {} }
const { notifications, lastChecked, cursor } = useMemo(() => {
if (!dat?.notifications) return {}
// make sure we're using the oldest lastChecked we've seen
const retDat = { ...dat.notifications }
if (ssrData?.notifications?.lastChecked < retDat.lastChecked) {
retDat.lastChecked = ssrData.notifications.lastChecked
}
return retDat
}, [dat])
useEffect(() => {

View File

@ -29,10 +29,6 @@ function getClient (uri) {
return new ApolloClient({
link: new HttpLink({ uri }),
ssrMode: SSR,
// we need to delay the cache-first check to wait for the cache to rehydrate from ssr
// occasionally, for queries like notifications, the cache is not populated when useQuery
// is called causing an additional network request
ssrForceFetchDelay: 250,
connectToDevTools: process.env.NODE_ENV !== 'production',
cache: new InMemoryCache({
freezeResults: true,
@ -224,6 +220,7 @@ function getClient (uri) {
}
}),
assumeImmutableResults: true,
queryDeduplication: true,
defaultOptions: {
watchQuery: {
initialFetchPolicy: defaultFetchPolicy,