-
-
Notifications
You must be signed in to change notification settings - Fork 596
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: Live Query not working on Expo React Native #2109
Conversation
Thanks for opening this pull request! |
Codecov ReportAll modified and coverable lines are covered by tests ✅
Additional details and impacted files@@ Coverage Diff @@
## alpha #2109 +/- ##
===========================================
+ Coverage 99.98% 100.00% +0.01%
===========================================
Files 61 64 +3
Lines 6185 6196 +11
Branches 1499 1500 +1
===========================================
+ Hits 6184 6196 +12
+ Misses 1 0 -1 ☔ View full report in Codecov by Sentry. |
@mtrezza This has been tested by @martinpfannemueller #2081 (comment) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So this PR can be closed without merging?
This can be merged. This PR fixes the issue posted and has been tested by multiple developers using Expo / React-Native |
If it fixes an issue, could you add a test for the issue? |
@mtrezza I added a test, looks like codecov is broken again. |
Edit: Thanks for adding a test. |
# [5.1.0-alpha.4](5.1.0-alpha.3...5.1.0-alpha.4) (2024-04-15) ### Bug Fixes * Live Query not working on Expo React Native ([#2109](#2109)) ([7a89665](7a89665))
🎉 This change has been released in version 5.1.0-alpha.4 |
# [5.1.0-beta.1](5.0.0...5.1.0-beta.1) (2024-05-16) ### Bug Fixes * `Parse.GeoPoint.current` returns `undefined` ([#2127](#2127)) ([3860535](3860535)) * Chrome browser console warning about unsafe header `access-control-expose-headers` when calling Cloud Function ([#2095](#2095)) ([7b73c03](7b73c03)) * Live Query not working on Expo React Native ([#2109](#2109)) ([7a89665](7a89665)) * Local datastore throws error when `Parse.Query.notEqualTo` is set to `null` ([#2102](#2102)) ([6afd32a](6afd32a)) * Multiple object updates of nested keys overwrite each other ([#1451](#1451)) ([fa4341a](fa4341a)) * Pending updates to nested field causes `ParseObject.toJSON()` to return incorrect object ([#1453](#1453)) ([23cc573](23cc573)) * Remove circular dependencies ([#2125](#2125)) ([b415165](b415165)) ### Features * Add password validation for user with unverified email via `Parse.User.verifyPassword` using master key and option `ignoreEmailVerification: true` ([#2076](#2076)) ([b0adf7e](b0adf7e)) * Add support for setting `Parse.ACL` from json ([#2097](#2097)) ([72bc9ac](72bc9ac)) * Allow setting custom queue for handling offline operations via `Parse.EventuallyQueue` ([#2106](#2106)) ([f92e4d4](f92e4d4)) * Improve installation object `Parse.Installation.currentInstallation` to support web push notifications ([#2119](#2119)) ([4fc62ce](4fc62ce)) * Lazy load `Parse.CoreManager` controllers to add support for swappable `CryptoController`, `LocalDatastoreController`, `StorageController`, `WebSocketController`, `ParseLiveQuery` ([#2100](#2100)) ([fbd0ab1](fbd0ab1))
🎉 This change has been released in version 5.1.0-beta.1 |
# [5.1.0](5.0.0...5.1.0) (2024-05-16) ### Bug Fixes * `Parse.GeoPoint.current` returns `undefined` ([#2127](#2127)) ([3860535](3860535)) * Chrome browser console warning about unsafe header `access-control-expose-headers` when calling Cloud Function ([#2095](#2095)) ([7b73c03](7b73c03)) * Live Query not working on Expo React Native ([#2109](#2109)) ([7a89665](7a89665)) * Local datastore throws error when `Parse.Query.notEqualTo` is set to `null` ([#2102](#2102)) ([6afd32a](6afd32a)) * Multiple object updates of nested keys overwrite each other ([#1451](#1451)) ([fa4341a](fa4341a)) * Pending updates to nested field causes `ParseObject.toJSON()` to return incorrect object ([#1453](#1453)) ([23cc573](23cc573)) * Remove circular dependencies ([#2125](#2125)) ([b415165](b415165)) ### Features * Add password validation for user with unverified email via `Parse.User.verifyPassword` using master key and option `ignoreEmailVerification: true` ([#2076](#2076)) ([b0adf7e](b0adf7e)) * Add support for setting `Parse.ACL` from json ([#2097](#2097)) ([72bc9ac](72bc9ac)) * Allow setting custom queue for handling offline operations via `Parse.EventuallyQueue` ([#2106](#2106)) ([f92e4d4](f92e4d4)) * Improve installation object `Parse.Installation.currentInstallation` to support web push notifications ([#2119](#2119)) ([4fc62ce](4fc62ce)) * Lazy load `Parse.CoreManager` controllers to add support for swappable `CryptoController`, `LocalDatastoreController`, `StorageController`, `WebSocketController`, `ParseLiveQuery` ([#2100](#2100)) ([fbd0ab1](fbd0ab1))
🎉 This change has been released in version 5.1.0 |
Pull Request
Issue
#1999 introduced swappable custom EventEmitters for runtimes that didn't include Node's builtin EventEmitter or React-Native.
Fixed
The LiveQuery modules no longer extends from the EventEmitter (would break if EM doesn't exist) but copies
on
andemit
from the prototype chain in the constructor where EM could exist. RN: Use a Private Property in EventEmitter created a private property in theaddListener
(copied toon
). This breaks RN since we are trying to access a private property from a non-instance class (no longer extends so not an instance of EventEmitter therefore no access)TypeError: attempted to use private field on non-instance
Closes: #2082, #2081, #1766, #1522
Approach
Instead of inheriting from the EventEmitter just use a wrapper.
This has been tested on
Tasks