|
1 | 1 | 'use strict'; |
2 | 2 |
|
3 | 3 | var _ = require('./lodash'); |
4 | | -var assert = require('assert'); |
5 | 4 | var Stream = require('stream'); |
6 | 5 | var Promise = require('rsvp').Promise; |
7 | | -var autoId = require('firebase-auto-ids'); |
8 | 6 | var QuerySnapshot = require('./firestore-query-snapshot'); |
9 | 7 | var Queue = require('./queue').Queue; |
10 | 8 | var utils = require('./utils'); |
11 | | -var validate = require('./validators'); |
12 | 9 |
|
13 | 10 | function MockFirestoreQuery(path, data, parent, name) { |
14 | 11 | this.errs = {}; |
@@ -68,8 +65,7 @@ MockFirestoreQuery.prototype.get = function () { |
68 | 65 | return new Promise(function (resolve, reject) { |
69 | 66 | self._defer('get', _.toArray(arguments), function () { |
70 | 67 | var results = self._results(); |
71 | | - var limit = 0; |
72 | | - |
| 68 | + |
73 | 69 | if (err === null) { |
74 | 70 | if (_.size(self.data) !== 0) { |
75 | 71 | resolve(new QuerySnapshot(self.parent === null ? self : self.parent.collection(self.id), results)); |
@@ -163,14 +159,22 @@ MockFirestoreQuery.prototype.onSnapshot = function (optionsOrObserverOrOnNext, o |
163 | 159 | // compare the current state to the one from when this function was created |
164 | 160 | // and send the data to the callback if different. |
165 | 161 | if (err === null) { |
166 | | - self.get().then(function (querySnapshot) { |
167 | | - var results = self._results(); |
168 | | - if (JSON.stringify(results) !== JSON.stringify(context.data) || includeMetadataChanges || forceTrigger) { |
| 162 | + if (forceTrigger) { |
| 163 | + const results = self._results(); |
| 164 | + if (_.size(self.data) !== 0) { |
169 | 165 | onNext(new QuerySnapshot(self.parent === null ? self : self.parent.collection(self.id), results)); |
170 | | - // onNext(new QuerySnapshot(self.id, self.ref, results)); |
171 | | - context.data = results; |
| 166 | + } else { |
| 167 | + onNext(new QuerySnapshot(self.parent === null ? self : self.parent.collection(self.id))); |
172 | 168 | } |
173 | | - }); |
| 169 | + } else { |
| 170 | + self.get().then(function (querySnapshot) { |
| 171 | + var results = self._results(); |
| 172 | + if (!_.isEqual(results, context.data) || includeMetadataChanges) { |
| 173 | + onNext(new QuerySnapshot(self.parent === null ? self : self.parent.collection(self.id), results)); |
| 174 | + context.data = results; |
| 175 | + } |
| 176 | + }); |
| 177 | + } |
174 | 178 | } else { |
175 | 179 | onError(err); |
176 | 180 | } |
|
0 commit comments