export function denormalize()

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;
  }
}