Skip to content
This repository was archived by the owner on Feb 4, 2026. It is now read-only.

Commit 63df911

Browse files
committed
Cleanup generic solution for pagination
1 parent 37fc7a6 commit 63df911

42 files changed

Lines changed: 138 additions & 155 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

app/src/main/java/com/sample/android/tmdb/data/paging/movie/MoviePageKeyRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ class MoviePageKeyRepository(
1313
sortType: SortType,
1414
retryExecutor: Executor,
1515
context: Context
16-
) : BasePageKeyRepository<Movie>(retryExecutor) {
16+
) : BasePageKeyRepository(retryExecutor) {
1717

18-
override val sourceFactory: BaseDataSourceFactory<Movie> =
18+
override val sourceFactory: BaseDataSourceFactory =
1919
MoviesDataSourceFactory(
2020
api = api,
2121
sortType = sortType,

app/src/main/java/com/sample/android/tmdb/data/paging/movie/MoviePageKeyedDataSource.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ package com.sample.android.tmdb.data.paging.movie
33
import android.content.Context
44
import com.sample.android.tmdb.data.network.MovieService
55
import com.sample.android.tmdb.data.response.asMovieDomainModel
6-
import com.sample.android.tmdb.domain.model.Movie
76
import com.sample.android.tmdb.domain.model.SortType
7+
import com.sample.android.tmdb.domain.model.TmdbItem
88
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
99
import io.reactivex.Observable
1010
import java.util.concurrent.Executor
@@ -14,9 +14,9 @@ class MoviePageKeyedDataSource(
1414
private val sortType: SortType,
1515
retryExecutor: Executor,
1616
context: Context
17-
) : BasePageKeyedDataSource<Movie>(retryExecutor, context) {
17+
) : BasePageKeyedDataSource(retryExecutor, context) {
1818

19-
override fun fetchItems(page: Int): Observable<List<Movie>> = when (sortType) {
19+
override fun fetchItems(page: Int): Observable<List<TmdbItem>> = when (sortType) {
2020
SortType.MOST_POPULAR -> api.popularMovies(page).map { it.items.asMovieDomainModel() }
2121
SortType.HIGHEST_RATED -> api.topRatedMovies(page).map { it.items.asMovieDomainModel() }
2222
SortType.UPCOMING -> api.upcomingMovies(page).map { it.items.asMovieDomainModel() }

app/src/main/java/com/sample/android/tmdb/data/paging/movie/MoviesDataSourceFactory.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package com.sample.android.tmdb.data.paging.movie
22

33
import android.content.Context
4-
import com.sample.android.tmdb.domain.model.Movie
54
import com.sample.android.tmdb.data.network.MovieService
5+
import com.sample.android.tmdb.domain.model.SortType
66
import com.sample.android.tmdb.domain.paging.BaseDataSourceFactory
77
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
8-
import com.sample.android.tmdb.domain.model.SortType
98
import java.util.concurrent.Executor
109

1110
class MoviesDataSourceFactory(
1211
private val api: MovieService,
1312
private val sortType: SortType,
1413
private val retryExecutor: Executor,
1514
private val context: Context
16-
) : BaseDataSourceFactory<Movie>() {
15+
) : BaseDataSourceFactory() {
1716

18-
override val dataSource: BasePageKeyedDataSource<Movie>
17+
override val dataSource: BasePageKeyedDataSource
1918
get() = MoviePageKeyedDataSource(
2019
api = api,
2120
sortType = sortType,

app/src/main/java/com/sample/android/tmdb/data/paging/search/movie/SearchMovieDataSourceFactory.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,19 @@
11
package com.sample.android.tmdb.data.paging.search.movie
22

33
import android.content.Context
4-
import com.sample.android.tmdb.domain.model.Movie
54
import com.sample.android.tmdb.data.network.MovieService
6-
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
75
import com.sample.android.tmdb.domain.paging.BaseDataSourceFactory
6+
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
87
import java.util.concurrent.Executor
98

109
class SearchMovieDataSourceFactory(
1110
private val api: MovieService,
1211
private val query: String,
1312
private val retryExecutor: Executor,
1413
private val context: Context
15-
) : BaseDataSourceFactory<Movie>() {
14+
) : BaseDataSourceFactory() {
1615

17-
override val dataSource: BasePageKeyedDataSource<Movie>
16+
override val dataSource: BasePageKeyedDataSource
1817
get() = SearchMoviePageKeyedDataSource(
1918
api = api,
2019
query = query,

app/src/main/java/com/sample/android/tmdb/data/paging/search/movie/SearchMoviePageKeyRepository.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sample.android.tmdb.data.paging.search.movie
22

33
import android.content.Context
4-
import com.sample.android.tmdb.domain.model.Movie
54
import com.sample.android.tmdb.data.network.MovieService
65
import com.sample.android.tmdb.domain.paging.BaseDataSourceFactory
76
import com.sample.android.tmdb.domain.paging.BasePageKeyRepository
@@ -12,9 +11,9 @@ class SearchMoviePageKeyRepository(
1211
query: String,
1312
retryExecutor: Executor,
1413
context: Context
15-
) : BasePageKeyRepository<Movie>(retryExecutor) {
14+
) : BasePageKeyRepository(retryExecutor) {
1615

17-
override val sourceFactory: BaseDataSourceFactory<Movie> =
16+
override val sourceFactory: BaseDataSourceFactory =
1817
SearchMovieDataSourceFactory(
1918
api = api,
2019
query = query,

app/src/main/java/com/sample/android/tmdb/data/paging/search/movie/SearchMoviePageKeyedDataSource.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.sample.android.tmdb.data.paging.search.movie
33
import android.content.Context
44
import com.sample.android.tmdb.data.network.MovieService
55
import com.sample.android.tmdb.data.response.asMovieDomainModel
6-
import com.sample.android.tmdb.domain.model.Movie
6+
import com.sample.android.tmdb.domain.model.TmdbItem
77
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
88
import io.reactivex.Observable
99
import java.util.concurrent.Executor
@@ -13,8 +13,8 @@ class SearchMoviePageKeyedDataSource(
1313
private val query: String,
1414
retryExecutor: Executor,
1515
context: Context
16-
) : BasePageKeyedDataSource<Movie>(retryExecutor, context) {
16+
) : BasePageKeyedDataSource(retryExecutor, context) {
1717

18-
override fun fetchItems(page: Int): Observable<List<Movie>> =
18+
override fun fetchItems(page: Int): Observable<List<TmdbItem>> =
1919
api.searchItems(page, query).map { it.items.asMovieDomainModel() }
2020
}

app/src/main/java/com/sample/android/tmdb/data/paging/search/tvshow/SearchTVShowDataSourceFactory.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sample.android.tmdb.data.paging.search.tvshow
22

33
import android.content.Context
4-
import com.sample.android.tmdb.domain.model.TVShow
54
import com.sample.android.tmdb.data.network.TVShowService
65
import com.sample.android.tmdb.domain.paging.BaseDataSourceFactory
76
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
@@ -12,9 +11,9 @@ class SearchTVShowDataSourceFactory(
1211
private val query: String,
1312
private val retryExecutor: Executor,
1413
private val context: Context
15-
) : BaseDataSourceFactory<TVShow>() {
14+
) : BaseDataSourceFactory() {
1615

17-
override val dataSource: BasePageKeyedDataSource<TVShow>
16+
override val dataSource: BasePageKeyedDataSource
1817
get() = SearchTVShowPageKeyedDataSource(
1918
api = api,
2019
query = query,

app/src/main/java/com/sample/android/tmdb/data/paging/search/tvshow/SearchTVShowPageKeyRepository.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.sample.android.tmdb.data.paging.search.tvshow
22

33
import android.content.Context
4-
import com.sample.android.tmdb.domain.model.TVShow
54
import com.sample.android.tmdb.data.network.TVShowService
65
import com.sample.android.tmdb.domain.paging.BaseDataSourceFactory
76
import com.sample.android.tmdb.domain.paging.BasePageKeyRepository
@@ -12,9 +11,9 @@ class SearchTVShowPageKeyRepository(
1211
query: String,
1312
retryExecutor: Executor,
1413
context: Context
15-
) : BasePageKeyRepository<TVShow>(retryExecutor) {
14+
) : BasePageKeyRepository(retryExecutor) {
1615

17-
override val sourceFactory: BaseDataSourceFactory<TVShow> =
16+
override val sourceFactory: BaseDataSourceFactory =
1817
SearchTVShowDataSourceFactory(
1918
api = api,
2019
query = query,

app/src/main/java/com/sample/android/tmdb/data/paging/search/tvshow/SearchTVShowPageKeyedDataSource.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.sample.android.tmdb.data.paging.search.tvshow
33
import android.content.Context
44
import com.sample.android.tmdb.data.network.TVShowService
55
import com.sample.android.tmdb.data.response.asTVShowDomainModel
6-
import com.sample.android.tmdb.domain.model.TVShow
6+
import com.sample.android.tmdb.domain.model.TmdbItem
77
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
88
import io.reactivex.Observable
99
import java.util.concurrent.Executor
@@ -13,8 +13,8 @@ class SearchTVShowPageKeyedDataSource(
1313
private val query: String,
1414
retryExecutor: Executor,
1515
context: Context
16-
) : BasePageKeyedDataSource<TVShow>(retryExecutor, context) {
16+
) : BasePageKeyedDataSource(retryExecutor, context) {
1717

18-
override fun fetchItems(page: Int): Observable<List<TVShow>> =
18+
override fun fetchItems(page: Int): Observable<List<TmdbItem>> =
1919
api.searchItems(page, query).map { it.items.asTVShowDomainModel() }
2020
}

app/src/main/java/com/sample/android/tmdb/data/paging/tvshow/TVShowsDataSourceFactory.kt

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,20 @@
11
package com.sample.android.tmdb.data.paging.tvshow
22

33
import android.content.Context
4-
import com.sample.android.tmdb.domain.model.TVShow
54
import com.sample.android.tmdb.data.network.TVShowService
5+
import com.sample.android.tmdb.domain.model.SortType
66
import com.sample.android.tmdb.domain.paging.BaseDataSourceFactory
77
import com.sample.android.tmdb.domain.paging.BasePageKeyedDataSource
8-
import com.sample.android.tmdb.domain.model.SortType
98
import java.util.concurrent.Executor
109

1110
class TVShowsDataSourceFactory(
1211
private val api: TVShowService,
1312
private val sortType: SortType,
1413
private val retryExecutor: Executor,
1514
private val context: Context
16-
) : BaseDataSourceFactory<TVShow>() {
15+
) : BaseDataSourceFactory() {
1716

18-
override val dataSource: BasePageKeyedDataSource<TVShow>
17+
override val dataSource: BasePageKeyedDataSource
1918
get() = TVShowsPageKeyedDataSource(
2019
api = api,
2120
sortType = sortType,

0 commit comments

Comments
 (0)