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