From ac9af1acd6016dacc1b150c3a304deb8947bcf5d Mon Sep 17 00:00:00 2001 From: jahooma Date: Sat, 29 Jan 2022 23:05:32 -0600 Subject: [PATCH] Don't load onSnapshot from cache in hook listen for contract (could help 404 errors?) --- web/lib/firebase/contracts.ts | 6 ++---- web/lib/firebase/utils.ts | 2 ++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/web/lib/firebase/contracts.ts b/web/lib/firebase/contracts.ts index 1f02a27f..b74564d4 100644 --- a/web/lib/firebase/contracts.ts +++ b/web/lib/firebase/contracts.ts @@ -17,7 +17,7 @@ import { import _ from 'lodash' import { app } from './init' -import { getValues, listenForValues } from './utils' +import { getValues, listenForValue, listenForValues } from './utils' import { Contract } from '../../../common/contract' import { getProbability } from '../../../common/calculate' import { createRNG, shuffle } from '../../../common/util/random' @@ -125,9 +125,7 @@ export function listenForContract( setContract: (contract: Contract | null) => void ) { const contractRef = doc(contractCollection, contractId) - return onSnapshot(contractRef, (contractSnap) => { - setContract((contractSnap.data() ?? null) as Contract | null) - }) + return listenForValue(contractRef, setContract) } function chooseRandomSubset(contracts: Contract[], count: number) { diff --git a/web/lib/firebase/utils.ts b/web/lib/firebase/utils.ts index fc516253..b6174d48 100644 --- a/web/lib/firebase/utils.ts +++ b/web/lib/firebase/utils.ts @@ -23,6 +23,8 @@ export function listenForValue( setValue: (value: T | null) => void ) { return onSnapshot(docRef, (snapshot) => { + if (snapshot.metadata.fromCache) return + const value = snapshot.exists() ? (snapshot.data() as T) : null setValue(value) })