@@ -4,6 +4,7 @@ import { onAuthStateChanged, User as FirebaseUser } from 'firebase/auth';
44import {
55 collection ,
66 doc ,
7+ getDoc ,
78 onSnapshot ,
89 orderBy ,
910 query ,
@@ -27,8 +28,12 @@ import {
2728import { upsertMealField } from './services/mealService' ;
2829import { HouseholdData , resolveOrCreateHousehold } from './services/householdService' ;
2930import { getAppCopy } from './i18n/copy' ;
31+ import firebaseConfig from '../firebase-applet-config.json' ;
3032import {
33+ buildUnknownQueueTargetFingerprint ,
34+ classifyHouseholdMembershipProbe ,
3135 getUnknownQueueLoadErrorMessage ,
36+ HouseholdMembershipProbeResult ,
3237 isFirestoreFailedPreconditionError ,
3338 sortUnknownIngredientQueueItemsByCreatedAt ,
3439 toFirestoreListenerErrorInfo ,
@@ -200,6 +205,36 @@ export default function App() {
200205 markInitialViewReady ( ) ;
201206 } ;
202207
208+ const unknownQueuePath = `households/${ resolved . householdId } /unknownIngredientQueue` ;
209+ const targetFingerprint = buildUnknownQueueTargetFingerprint ( {
210+ projectId : firebaseConfig . projectId ,
211+ databaseId : firebaseConfig . firestoreDatabaseId ,
212+ householdId : resolved . householdId ,
213+ } ) ;
214+
215+ const membershipProbeSnapshot = await getDoc ( doc ( db , 'households' , resolved . householdId ) ) ;
216+ const membershipProbeData = membershipProbeSnapshot . exists ( )
217+ ? ( membershipProbeSnapshot . data ( ) as HouseholdData )
218+ : null ;
219+ const membershipProbeResult : HouseholdMembershipProbeResult = classifyHouseholdMembershipProbe ( {
220+ householdExists : membershipProbeSnapshot . exists ( ) ,
221+ householdOwnerId : membershipProbeData ?. ownerId ?? null ,
222+ householdCookEmail : membershipProbeData ?. cookEmail ?? null ,
223+ userUid : user . uid ,
224+ userEmail : user . email ?? null ,
225+ } ) ;
226+
227+ console . info ( 'unknown_queue_runtime_target' , {
228+ projectId : firebaseConfig . projectId ,
229+ databaseId : firebaseConfig . firestoreDatabaseId ,
230+ householdId : resolved . householdId ,
231+ uid : user . uid ,
232+ email : user . email ?? null ,
233+ path : unknownQueuePath ,
234+ targetFingerprint,
235+ membershipProbeResult,
236+ } ) ;
237+
203238 const subscribeUnknownQueueFallback = ( ) : void => {
204239 if ( unknownQueueFallbackUnsub !== null ) {
205240 return ;
@@ -221,8 +256,15 @@ export default function App() {
221256 householdId : resolved . householdId ,
222257 code : parsedError . code ,
223258 message : parsedError . message ,
259+ projectId : firebaseConfig . projectId ,
260+ databaseId : firebaseConfig . firestoreDatabaseId ,
261+ uid : user . uid ,
262+ email : user . email ?? null ,
263+ path : unknownQueuePath ,
264+ targetFingerprint,
265+ membershipProbeResult,
224266 } ) ;
225- setUiFeedback ( { kind : 'error' , message : getUnknownQueueLoadErrorMessage ( parsedError ) } ) ;
267+ setUiFeedback ( { kind : 'error' , message : getUnknownQueueLoadErrorMessage ( parsedError , membershipProbeResult ) } ) ;
226268 hasLoadedUnknownQueue = true ;
227269 markInitialViewReady ( ) ;
228270 } ,
@@ -245,19 +287,26 @@ export default function App() {
245287 householdId : resolved . householdId ,
246288 code : parsedError . code ,
247289 message : parsedError . message ,
290+ projectId : firebaseConfig . projectId ,
291+ databaseId : firebaseConfig . firestoreDatabaseId ,
292+ uid : user . uid ,
293+ email : user . email ?? null ,
294+ path : unknownQueuePath ,
295+ targetFingerprint,
296+ membershipProbeResult,
248297 } ) ;
249298
250299 if ( isFirestoreFailedPreconditionError ( parsedError ) ) {
251300 if ( unknownQueueUnsub !== null ) {
252301 unknownQueueUnsub ( ) ;
253302 unknownQueueUnsub = null ;
254303 }
255- setUiFeedback ( { kind : 'error' , message : getUnknownQueueLoadErrorMessage ( parsedError ) } ) ;
304+ setUiFeedback ( { kind : 'error' , message : getUnknownQueueLoadErrorMessage ( parsedError , membershipProbeResult ) } ) ;
256305 subscribeUnknownQueueFallback ( ) ;
257306 return ;
258307 }
259308
260- setUiFeedback ( { kind : 'error' , message : getUnknownQueueLoadErrorMessage ( parsedError ) } ) ;
309+ setUiFeedback ( { kind : 'error' , message : getUnknownQueueLoadErrorMessage ( parsedError , membershipProbeResult ) } ) ;
261310 hasLoadedUnknownQueue = true ;
262311 markInitialViewReady ( ) ;
263312 } ,
0 commit comments