geofire-js icon indicating copy to clipboard operation
geofire-js copied to clipboard

'ready' callback fires prematurely when updateCriteria() is called again before its previous invocation has been completed

Open crocodile opened this issue 4 years ago • 0 comments

Prerequisites: Test with no network connectivity

Steps: 1.) Start a location update for a specific location 2.) Follow up with an update criteria call. (This has to happen before step 1, hence the no network connectivity scenario being simulated)

Note that in my case, there are ~30 geofire keys to be returned when there is network connectivity.

Actual: A 'ready' event is falsely fired for the second call, even though the db was not queried yet. The code is ignoring the current queries ongoing for the second call, and thinks that there are no outstanding queries when the second call is invoked because of this line that I replaced: this._outstandingGeohashReadyEvents = geohashesToQuery.slice();

Expected: (After this change) The 'ready' event is only fired when all existing queries have been returned.

See my fix: https://github.com/crocodile/geofire-js/blob/829bc49c04800b09df198cb81be03e11405caaef/src/GeoQuery.ts#L406-L411

crocodile avatar Apr 19 '20 15:04 crocodile