You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Here's a new Rx operator I made for a specific use case, but I've seen myself using it for more use cases so I guess it was a good candidate for this repository.
Basically, flatScan is a scan operator that returns an Observable<T> instead of just T and flatten the result. It's declined in flatScanFirst and flatScanLatest versions that works the same as their flatMap counterparts.
The most useful use case is when working with paginated content when you want to make a new API request with an "offset" and append your new results to current local results. Something like that:
I know I should have discussed this operator in an issue first but the code was already existing in my project but without unit tests (😱) and working on a PR directly encouraged me to write unit tests for it. If you feel like this operator doesn't fit in this repository I wouldn't mind closing this PR. At least I'll be able to add the tests to my project 😇
PS: In the second commit I fixed swift lint issues unrelated to the flatScan operator. Feel free to focus your review on the first commit 7332d10 😉
This is a great way to handle the very common use case of paginated data coming from a server. The basic flatScan is probably never what you want though, since you run the risk of loosing data if your inputs fire while your requests are in flight, I think that would surprise developers with less experienced with the Rx ecosystem. I have copied the code into one of my projects already and look forward to this being approved.
The basic flatScan is probably never what you want though
@danielt1263 How do you think it differs from this same issue but with flatMap? Because I almost never use the default flatMat. Most of the time I use flatMapLatest and sometimes flatMapFirst.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Hi community!
Here's a new Rx operator I made for a specific use case, but I've seen myself using it for more use cases so I guess it was a good candidate for this repository.
Basically,
flatScanis ascanoperator that returns anObservable<T>instead of justTand flatten the result. It's declined inflatScanFirstandflatScanLatestversions that works the same as theirflatMapcounterparts.The most useful use case is when working with paginated content when you want to make a new API request with an "offset" and append your new results to current local results. Something like that:
loadMoreTrigger .withLatestFrom(searchQuery) .flatScan(SearchResults()) { previous, query in searchResults( for: query, start: previous.elements.count, count: 20 ) .map(previous.merging) }I know I should have discussed this operator in an issue first but the code was already existing in my project but without unit tests (😱) and working on a PR directly encouraged me to write unit tests for it. If you feel like this operator doesn't fit in this repository I wouldn't mind closing this PR. At least I'll be able to add the tests to my project 😇
PS: In the second commit I fixed swift lint issues unrelated to the
flatScanoperator. Feel free to focus your review on the first commit 7332d10 😉