in src/components/Firestore/DocumentEditor/utils.ts [129:168]
export function denormalize(
store: Store,
firestore?: firebase.firestore.Firestore
): FirestoreAny {
assertStoreHasRoot(store);
const field = store.fields[store.uuid];
if (isMapField(field)) {
return field.mapChildren.reduce((acc, curr) => {
acc[curr.name] = denormalize(
{
uuid: curr.valueId,
fields: store.fields,
},
firestore
);
return acc;
}, {} as any);
} else if (isArrayField(field)) {
return field.arrayChildren.reduce((acc, curr) => {
acc.push(
denormalize({ uuid: curr.valueId, fields: store.fields }, firestore)
);
return acc;
}, [] as any);
} else {
if (field.value instanceof DocumentPath) {
if (!firestore) {
// TODO: Trying to reference a Firestore Document without a Firestore instance.
return '';
}
try {
return firestore.doc(field.value.path);
} catch {
// TODO: The store does not always have a valid DocRef, reconsider.
return '';
}
}
return field.value;
}
}