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

[fix]: update RxSwift bindings to observe on main thread #294

Merged
merged 1 commit into from
Aug 7, 2024

Conversation

jamieQ
Copy link
Contributor

@jamieQ jamieQ commented Aug 7, 2024

Resolves: #293

Checklist

  • Unit Tests

@@ -40,7 +40,7 @@ struct ObservableWorkflow<Value>: Workflow {
context.runSideEffect(key: "") { [observable] lifetime in
let disposable = observable
.map { AnyWorkflowAction(sendingOutput: $0) }
.subscribe(on: MainScheduler.asyncInstance)
.observe(on: MainScheduler.asyncInstance)
Copy link
Contributor Author

Choose a reason for hiding this comment

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

we could additionally leave the subscribe logic here... seems like it may not be necessary though if the 'subscription side effects' occur synchronously, since we'll be on the main thread when subscribe(onNext:) is executed.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

edit: decided to 'play it safe' and just leave the existing code too. not sure what may or may not depend on it.

Copy link
Collaborator

Choose a reason for hiding this comment

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

I'd vote for removing .subscribe(on: since it's just wrong but either way observe(on: is what we want here.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yeah... maybe it is. my only argument against that is if removing it changes something that was async to sync, causing other issues. although, i suppose you can make the case that this also changes behavior in a similar way... we're taking things that used to synchronously emit in whatever context they were in to ones that are (always?) queued async on the main thread.

@jamieQ jamieQ force-pushed the jquadri/fix-rx-observation branch from 5f3552d to 73c9e4a Compare August 7, 2024 19:01
@jamieQ jamieQ marked this pull request as ready for review August 7, 2024 19:18
@jamieQ jamieQ requested a review from a team as a code owner August 7, 2024 19:18
@loganmoseley
Copy link

Just to link to documentation: RxSwift/Documentation/Schedulers.md (permalink).

@jamieQ jamieQ merged commit 249a89c into main Aug 7, 2024
13 checks passed
@jamieQ jamieQ deleted the jquadri/fix-rx-observation branch August 7, 2024 20:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[bug]: RxSwift bindings should observe actions on the MainScheduler
4 participants