From 5443cc148643d2735cfdb55d524d2480f25b71cf Mon Sep 17 00:00:00 2001 From: Harsh Shandilya Date: Tue, 29 Nov 2022 01:25:20 +0530 Subject: [PATCH] refactor: simplify swipe to refresh --- .../msfjarvis/claw/android/ui/LobstersApp.kt | 2 -- .../claw/android/ui/lists/NetworkPosts.kt | 3 +-- .../claw/android/viewmodel/ClawViewModel.kt | 18 ++---------------- 3 files changed, 3 insertions(+), 20 deletions(-) diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt index c565e5a3..4c716a96 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/LobstersApp.kt @@ -174,7 +174,6 @@ fun LobstersApp( lazyPagingItems = hottestPosts, listState = hottestListState, isPostSaved = viewModel::isPostSaved, - reloadPosts = viewModel::refreshHottestPosts, postActions = postActions, ) } @@ -186,7 +185,6 @@ fun LobstersApp( lazyPagingItems = newestPosts, listState = newestListState, isPostSaved = viewModel::isPostSaved, - reloadPosts = viewModel::refreshNewestPosts, postActions = postActions, ) } diff --git a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt index 50fb74d9..8d383a4a 100644 --- a/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt +++ b/android/src/main/kotlin/dev/msfjarvis/claw/android/ui/lists/NetworkPosts.kt @@ -40,13 +40,12 @@ fun NetworkPosts( lazyPagingItems: LazyPagingItems, listState: LazyListState, isPostSaved: suspend (SavedPost) -> Boolean, - reloadPosts: () -> Unit, postActions: PostActions, modifier: Modifier = Modifier, ) { val refreshLoadState = lazyPagingItems.loadState.refresh val isRefreshing = refreshLoadState == LoadState.Loading - val pullRefreshState = rememberPullRefreshState(isRefreshing, reloadPosts) + val pullRefreshState = rememberPullRefreshState(isRefreshing, lazyPagingItems::refresh) Box(modifier = modifier.fillMaxSize().pullRefresh(pullRefreshState)) { if (lazyPagingItems.itemCount == 0 && refreshLoadState is LoadState.Error) { NetworkError( 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 2ca3f21e..cb6f5261 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 @@ -37,16 +37,10 @@ constructor( 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)) { - pagingSourceFactory.create(api::getHottestPosts).also { hottestPostsPagingSource = it } - } + Pager(PagingConfig(pageSize = 20)) { pagingSourceFactory.create(api::getHottestPosts) } private val newestPostsPager = - Pager(PagingConfig(20)) { - pagingSourceFactory.create(api::getHottestPosts).also { newestPostsPagingSource = it } - } + Pager(PagingConfig(pageSize = 20)) { pagingSourceFactory.create(api::getHottestPosts) } val hottestPosts get() = hottestPostsPager.flow @@ -104,12 +98,4 @@ constructor( is Failure.ApiFailure -> throw IOException("API returned an invalid response") } } - - fun refreshHottestPosts() { - hottestPostsPagingSource?.invalidate() - } - - fun refreshNewestPosts() { - newestPostsPagingSource?.invalidate() - } }