react-native-firebase-compiled
Version:
A well tested, feature rich Firebase implementation for React Native, supporting iOS & Android. Individual module support for Admob, Analytics, Auth, Crash Reporting, Cloud Firestore, Database, Dynamic Links, Functions, Messaging (FCM), Remote Config, Sto
81 lines (55 loc) • 1.99 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _DocumentReference = _interopRequireDefault(require("./DocumentReference"));
var _FieldPath = _interopRequireDefault(require("./FieldPath"));
var _Path = _interopRequireDefault(require("./Path"));
var _utils = require("../../utils");
var _serialize = require("./utils/serialize");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
const extractFieldPathData = (data, segments) => {
if (!data || !(0, _utils.isObject)(data)) {
return undefined;
}
const pathValue = data[segments[0]];
if (segments.length === 1) {
return pathValue;
}
return extractFieldPathData(pathValue, segments.slice(1));
};
/**
* @class DocumentSnapshot
*/
class DocumentSnapshot {
constructor(firestore, nativeData) {
_defineProperty(this, "_data", void 0);
_defineProperty(this, "_metadata", void 0);
_defineProperty(this, "_ref", void 0);
_defineProperty(this, "data", () => this._data);
_defineProperty(this, "get", fieldPath => {
if (fieldPath instanceof _FieldPath.default) {
return extractFieldPathData(this._data, fieldPath._segments);
}
return (0, _utils.deepGet)(this._data, fieldPath, '.');
});
this._data = (0, _serialize.parseNativeMap)(firestore, nativeData.data);
this._metadata = nativeData.metadata;
this._ref = new _DocumentReference.default(firestore, _Path.default.fromName(nativeData.path));
}
get exists() {
return this._data !== undefined;
}
get id() {
return this._ref.id;
}
get metadata() {
return this._metadata;
}
get ref() {
return this._ref;
}
}
exports.default = DocumentSnapshot;