From 2afbc73bd40ee9b117910724f91d3f778bcb866f Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Sat, 10 Sep 2022 02:11:27 +0530 Subject: [PATCH] refactor(android): leverage assisted inject for `LobstersPagingSource` --- .../claw/android/paging/LobstersPagingSource.kt | 17 ++++++++++++++--- .../claw/android/viewmodel/ClawViewModel.kt | 7 +++---- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt index d246eae6..e50cf193 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/paging/LobstersPagingSource.kt @@ -2,13 +2,19 @@ package dev.msfjarvis.claw.android.paging import androidx.paging.PagingSource import androidx.paging.PagingState +import dagger.assisted.Assisted +import dagger.assisted.AssistedFactory +import dagger.assisted.AssistedInject +import dev.msfjarvis.claw.android.injection.IODispatcher import dev.msfjarvis.claw.model.LobstersPost import kotlinx.coroutines.CoroutineDispatcher import kotlinx.coroutines.withContext -class LobstersPagingSource( - private val getMorePosts: suspend (Int) -> List, - private val ioDispatcher: CoroutineDispatcher, +class LobstersPagingSource +@AssistedInject +constructor( + @Assisted private val getMorePosts: suspend (Int) -> List, + @IODispatcher private val ioDispatcher: CoroutineDispatcher, ) : PagingSource() { override suspend fun load(params: LoadParams): LoadResult { @@ -29,4 +35,9 @@ class LobstersPagingSource( override fun getRefreshKey(state: PagingState): Int { return state.pages.size + 1 } + + @AssistedFactory + interface Factory { + fun create(getMorePosts: suspend (Int) -> List): LobstersPagingSource + } } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt index ce237457..e3a1a6cf 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/viewmodel/ClawViewModel.kt @@ -25,19 +25,18 @@ constructor( private val api: LobstersApi, private val savedPostsRepository: SavedPostsRepository, private val postDetailsRepository: PostDetailsRepository, + private val pagingSourceFactory: LobstersPagingSource.Factory, @IODispatcher private val ioDispatcher: CoroutineDispatcher, ) : ViewModel() { private var hottestPostsPagingSource: LobstersPagingSource? = null private var newestPostsPagingSource: LobstersPagingSource? = null private val hottestPostsPager = Pager(PagingConfig(20)) { - LobstersPagingSource(api::getHottestPosts, ioDispatcher).also { - hottestPostsPagingSource = it - } + pagingSourceFactory.create(api::getHottestPosts).also { hottestPostsPagingSource = it } } private val newestPostsPager = Pager(PagingConfig(20)) { - LobstersPagingSource(api::getNewestPosts, ioDispatcher).also { newestPostsPagingSource = it } + pagingSourceFactory.create(api::getHottestPosts).also { newestPostsPagingSource = it } } val hottestPosts