function summarizeExp()

in src/components/Firestore/DocumentPreview/store.tsx [173:219]


function summarizeExp(value: ExpressionValue, maxLen: number): string {
  if ('nullValue' in value) {
    return 'null';
  } else if ('boolValue' in value) {
    return summarize(value.boolValue || false, maxLen);
  } else if ('intValue' in value) {
    return summarizeNumber(value.intValue);
  } else if ('floatValue' in value) {
    return summarizeNumber(value.floatValue);
  } else if ('stringValue' in value) {
    return summarize(value.stringValue || '', maxLen);
  } else if ('bytesValue' in value) {
    return summarize(
      firebase.firestore.Blob.fromBase64String(value.bytesValue || ''),
      maxLen
    );
  } else if ('durationValue' in value) {
    return value.durationValue || '0s';
  } else if ('timestampValue' in value) {
    const date = new Date(value.timestampValue || 0);
    return summarizeDate(date, maxLen);
  } else if ('latlngValue' in value) {
    return summarizeLatLng(
      value.latlngValue?.latitude || 0,
      value.latlngValue?.longitude || 0
    );
  } else if ('listValue' in value) {
    return summarizeArray(value.listValue?.values ?? [], maxLen, summarizeExp);
  } else if ('setValue' in value) {
    // TODO: Somehow make this look different than a list.
    return summarizeArray(value.setValue?.values ?? [], maxLen, summarizeExp);
  } else if ('mapValue' in value) {
    return summarizeMap(value.mapValue?.fields ?? {}, maxLen, summarizeExp);
  } else if ('pathValue' in value) {
    return '/' + summarizePath(value.pathValue, maxLen);
  } else if ('constraintValue' in value) {
    return '(Constraint)';
  } else if ('mapDiffValue' in value) {
    return '(MapDiff)'; // TODO
  } else if ('undefined' in value) {
    return `(Error: ${value.undefined?.causeMessage || 'unknown'})`; // TODO
  } else {
    const json = JSON.stringify(value);
    console.warn(`Unknown ExpressionValue type: ${json}`);
    return json;
  }
}