@@ -16,11 +16,11 @@ if (!(globalThis as any as ReactFireGlobals)._reactFirePreloadedObservables) {
1616// Starts listening to an Observable.
1717// Call this once you know you're going to render a
1818// child that will consume the observable
19- export function preloadObservable < T > ( source : Observable < T > , id : string ) {
19+ export function preloadObservable < T > ( source : Observable < T > , id : string , suspenseEnabled = false ) {
2020 if ( preloadedObservables . has ( id ) ) {
2121 return preloadedObservables . get ( id ) as SuspenseSubject < T > ;
2222 } else {
23- const observable = new SuspenseSubject ( source , DEFAULT_TIMEOUT ) ;
23+ const observable = new SuspenseSubject ( source , DEFAULT_TIMEOUT , suspenseEnabled ) ;
2424 preloadedObservables . set ( id , observable ) ;
2525 return observable ;
2626 }
@@ -97,12 +97,13 @@ export function useObservable<T = unknown>(observableId: string, source: Observa
9797 if ( ! observableId ) {
9898 throw new Error ( 'cannot call useObservable without an observableId' ) ;
9999 }
100- const observable = preloadObservable ( source , observableId ) ;
100+ const suspenseEnabled = useSuspenseEnabledFromConfigAndContext ( config . suspense ) ;
101+
102+ const observable = preloadObservable ( source , observableId , suspenseEnabled ) ;
101103
102104 // Suspend if suspense is enabled and no initial data exists
103105 const hasInitialData = config . hasOwnProperty ( 'initialData' ) || config . hasOwnProperty ( 'startWithValue' ) ;
104106 const hasData = observable . hasValue || hasInitialData ;
105- const suspenseEnabled = useSuspenseEnabledFromConfigAndContext ( config . suspense ) ;
106107 if ( suspenseEnabled === true && ! hasData ) {
107108 throw observable . firstEmission ;
108109 }
0 commit comments