Skip to content
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

feat: Allow setting custom queue for handling offline operations via Parse.EventuallyQueue #2106

Merged

Conversation

mortenmo
Copy link
Contributor

EventuallyQueue behavior isn't always what I need. Was hoping to have a way to replace the default to change the behavior. Using CoreManager felt like the obvious way.

Issue

EventuallyQueue gives you no control over what happens if there are conflicts. For example, another client has changed the object, it just looks at updatedAt time and drops the local changes. Fine as a general rule, but sometimes I need some control over that in an often offline environment.

Approach

There were only 3 places that called EventuallyQueue directly. Just changed those to use CoreManager.getEventuallyQueue() following the patterns of most other things going through CoreManager.

Tasks

  • Fix tests if needed
  • [] Documentation??

… a way to replace the default to change the behavior. Using CoreManager felt like the obvious way.
Copy link

parse-github-assistant bot commented Apr 13, 2024

Thanks for opening this pull request!

  • ❌ Please link an issue that describes the reason for this pull request, otherwise your pull request will be closed. Make sure to write it as Closes: #123 in the PR description, so I can recognize it.

@dplewis
Copy link
Member

dplewis commented Apr 13, 2024

Looks good! I think you may have fixed a circular dependency as well.

Copy link

codecov bot commented Apr 13, 2024

Codecov Report

All modified and coverable lines are covered by tests ✅

Project coverage is 100.00%. Comparing base (72bc9ac) to head (7bd2a22).
Report is 13 commits behind head on alpha.

Additional details and impacted files
@@             Coverage Diff             @@
##            alpha     #2106      +/-   ##
===========================================
+ Coverage   99.98%   100.00%   +0.01%     
===========================================
  Files          61        64       +3     
  Lines        6185      6208      +23     
  Branches     1499      1503       +4     
===========================================
+ Hits         6184      6208      +24     
+ Misses          1         0       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

src/Parse.ts Show resolved Hide resolved
@dplewis dplewis requested review from mtrezza and a team April 14, 2024 01:48
@dplewis
Copy link
Member

dplewis commented Apr 14, 2024

@mtrezza This is ready for review. I'm not sure why the CI isn't running

src/Parse.ts Show resolved Hide resolved
@mortenmo mortenmo requested a review from dplewis April 16, 2024 20:26
@dplewis dplewis requested a review from a team April 19, 2024 15:02
@mtrezza mtrezza changed the title feat: EventuallyQueue changeable through CoreManager feat: Allow setting custom queue for saving offline objects via Parse.EventuallyQueue Apr 22, 2024
@mtrezza
Copy link
Member

mtrezza commented Apr 22, 2024

Does the PR title make sense?

@mtrezza mtrezza changed the title feat: Allow setting custom queue for saving offline objects via Parse.EventuallyQueue feat: Allow setting custom queue for handling offline operations via Parse.EventuallyQueue Apr 22, 2024
Copy link
Member

@mtrezza mtrezza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

CI fails

Copy link
Member

@mtrezza mtrezza left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, is this ready for merge?

@mortenmo
Copy link
Contributor Author

Yeah I believe so

@mtrezza mtrezza merged commit f92e4d4 into parse-community:alpha Apr 25, 2024
10 checks passed
parseplatformorg pushed a commit that referenced this pull request Apr 25, 2024
# [5.1.0-alpha.6](5.1.0-alpha.5...5.1.0-alpha.6) (2024-04-25)

### Features

* Allow setting custom queue for handling offline operations via `Parse.EventuallyQueue` ([#2106](#2106)) ([f92e4d4](f92e4d4))
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.1.0-alpha.6

@parseplatformorg parseplatformorg added the state:released-alpha Released as alpha version label Apr 25, 2024
parseplatformorg pushed a commit that referenced this pull request May 16, 2024
# [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))
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.1.0-beta.1

@parseplatformorg parseplatformorg added the state:released-beta Released as beta version label May 16, 2024
parseplatformorg pushed a commit that referenced this pull request May 16, 2024
# [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))
@parseplatformorg
Copy link
Contributor

🎉 This change has been released in version 5.1.0

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
state:released Released as stable version state:released-alpha Released as alpha version state:released-beta Released as beta version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants