Skip to content

Conversation

@jegnux
Copy link
Member

@jegnux jegnux commented Oct 12, 2020

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, 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:

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 flatScan operator. Feel free to focus your review on the first commit 7332d10 😉

@jegnux jegnux force-pushed the add_flatScan_operators branch from 4eb1d0b to 24487d9 Compare October 12, 2020 12:40
@jegnux jegnux requested a review from freak4pc October 13, 2020 08:15
@Pwyll28
Copy link

Pwyll28 commented Nov 2, 2020

This is awesome ! Is there any date for this PR to be merged ?

@jegnux
Copy link
Member Author

jegnux commented Nov 3, 2020

@RxSwiftCommunity/contributors Is anyone available to review this PR? 🙏

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.

4 participants