From 4be20b68c142b9bed88f2fbc4270689dfe2c446e Mon Sep 17 00:00:00 2001 From: Anirudhgoud Date: Mon, 27 Mar 2023 20:22:25 +0530 Subject: [PATCH 01/10] Migration to latest PullRefresh by refreshing SwipeRefresh --- .../blueprints/todoapp/tasks/TasksScreen.kt | 4 +++- .../blueprints/todoapp/util/ComposeUtils.kt | 24 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt index 16cf81e86..52fa2a2a8 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt @@ -29,6 +29,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Checkbox import androidx.compose.material.FloatingActionButton import androidx.compose.material.Icon @@ -215,7 +217,7 @@ private fun TasksEmptyContent( modifier: Modifier = Modifier ) { Column( - modifier = modifier.fillMaxSize(), + modifier = modifier.fillMaxSize().verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt index 84d641712..84f68c6ba 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt @@ -16,7 +16,13 @@ package com.example.android.architecture.blueprints.todoapp.util +import androidx.compose.foundation.layout.Box +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.pullrefresh.PullRefreshIndicator +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import com.google.accompanist.swiperefresh.SwipeRefresh @@ -34,6 +40,7 @@ val primaryDarkColor: Color = Color(0xFF263238) * @param modifier the modifier to apply to this layout. * @param content (slot) the main content to show */ +@OptIn(ExperimentalMaterialApi::class) @Composable fun LoadingContent( loading: Boolean, @@ -43,14 +50,13 @@ fun LoadingContent( modifier: Modifier = Modifier, content: @Composable () -> Unit ) { - if (empty) { - emptyContent() - } else { - SwipeRefresh( - state = rememberSwipeRefreshState(loading), - onRefresh = onRefresh, - modifier = modifier, - content = content, - ) + val pullRefreshState = rememberPullRefreshState(loading, onRefresh) + Box(modifier = modifier.pullRefresh(pullRefreshState)) { + if (empty) { + emptyContent() + } else { + content() + } + PullRefreshIndicator(loading, pullRefreshState, Modifier.align(Alignment.TopCenter)) } } From 86f2afafa64f59bad6b3a828f8e3f0157e45d2b2 Mon Sep 17 00:00:00 2001 From: Anirudhgoud Date: Mon, 27 Mar 2023 20:24:41 +0530 Subject: [PATCH 02/10] Revert "Migration to latest PullRefresh by refreshing SwipeRefresh" This reverts commit 4be20b68c142b9bed88f2fbc4270689dfe2c446e. --- .../blueprints/todoapp/tasks/TasksScreen.kt | 4 +--- .../blueprints/todoapp/util/ComposeUtils.kt | 24 +++++++------------ 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt index 52fa2a2a8..16cf81e86 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt @@ -29,8 +29,6 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items -import androidx.compose.foundation.rememberScrollState -import androidx.compose.foundation.verticalScroll import androidx.compose.material.Checkbox import androidx.compose.material.FloatingActionButton import androidx.compose.material.Icon @@ -217,7 +215,7 @@ private fun TasksEmptyContent( modifier: Modifier = Modifier ) { Column( - modifier = modifier.fillMaxSize().verticalScroll(rememberScrollState()), + modifier = modifier.fillMaxSize(), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt index 84f68c6ba..84d641712 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt @@ -16,13 +16,7 @@ package com.example.android.architecture.blueprints.todoapp.util -import androidx.compose.foundation.layout.Box -import androidx.compose.material.ExperimentalMaterialApi -import androidx.compose.material.pullrefresh.PullRefreshIndicator -import androidx.compose.material.pullrefresh.pullRefresh -import androidx.compose.material.pullrefresh.rememberPullRefreshState import androidx.compose.runtime.Composable -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import com.google.accompanist.swiperefresh.SwipeRefresh @@ -40,7 +34,6 @@ val primaryDarkColor: Color = Color(0xFF263238) * @param modifier the modifier to apply to this layout. * @param content (slot) the main content to show */ -@OptIn(ExperimentalMaterialApi::class) @Composable fun LoadingContent( loading: Boolean, @@ -50,13 +43,14 @@ fun LoadingContent( modifier: Modifier = Modifier, content: @Composable () -> Unit ) { - val pullRefreshState = rememberPullRefreshState(loading, onRefresh) - Box(modifier = modifier.pullRefresh(pullRefreshState)) { - if (empty) { - emptyContent() - } else { - content() - } - PullRefreshIndicator(loading, pullRefreshState, Modifier.align(Alignment.TopCenter)) + if (empty) { + emptyContent() + } else { + SwipeRefresh( + state = rememberSwipeRefreshState(loading), + onRefresh = onRefresh, + modifier = modifier, + content = content, + ) } } From 1f90fb6af54d761fd1fc009ffc645fdb83d7a798 Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Mon, 27 Mar 2023 21:11:58 +0530 Subject: [PATCH 03/10] Migration of swipe refresh to PullRefresh and also resolving issues of showing a spinner loading when task list is empty --- .../blueprints/todoapp/tasks/TasksScreen.kt | 4 +++- .../blueprints/todoapp/util/ComposeUtils.kt | 24 ++++++++++++------- 2 files changed, 18 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt index 16cf81e86..52fa2a2a8 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/tasks/TasksScreen.kt @@ -29,6 +29,8 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items +import androidx.compose.foundation.rememberScrollState +import androidx.compose.foundation.verticalScroll import androidx.compose.material.Checkbox import androidx.compose.material.FloatingActionButton import androidx.compose.material.Icon @@ -215,7 +217,7 @@ private fun TasksEmptyContent( modifier: Modifier = Modifier ) { Column( - modifier = modifier.fillMaxSize(), + modifier = modifier.fillMaxSize().verticalScroll(rememberScrollState()), verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally ) { diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt index 84d641712..84f68c6ba 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt @@ -16,7 +16,13 @@ package com.example.android.architecture.blueprints.todoapp.util +import androidx.compose.foundation.layout.Box +import androidx.compose.material.ExperimentalMaterialApi +import androidx.compose.material.pullrefresh.PullRefreshIndicator +import androidx.compose.material.pullrefresh.pullRefresh +import androidx.compose.material.pullrefresh.rememberPullRefreshState import androidx.compose.runtime.Composable +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import com.google.accompanist.swiperefresh.SwipeRefresh @@ -34,6 +40,7 @@ val primaryDarkColor: Color = Color(0xFF263238) * @param modifier the modifier to apply to this layout. * @param content (slot) the main content to show */ +@OptIn(ExperimentalMaterialApi::class) @Composable fun LoadingContent( loading: Boolean, @@ -43,14 +50,13 @@ fun LoadingContent( modifier: Modifier = Modifier, content: @Composable () -> Unit ) { - if (empty) { - emptyContent() - } else { - SwipeRefresh( - state = rememberSwipeRefreshState(loading), - onRefresh = onRefresh, - modifier = modifier, - content = content, - ) + val pullRefreshState = rememberPullRefreshState(loading, onRefresh) + Box(modifier = modifier.pullRefresh(pullRefreshState)) { + if (empty) { + emptyContent() + } else { + content() + } + PullRefreshIndicator(loading, pullRefreshState, Modifier.align(Alignment.TopCenter)) } } From 5f04341b722e9c87a472b327d2ca48ecd6b13f1c Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Thu, 20 Apr 2023 16:02:44 +0530 Subject: [PATCH 04/10] minor code refactor and removed exisiting SwipeRefresh --- .../todoapp/addedittask/AddEditTaskScreen.kt | 14 +++++++++----- .../blueprints/todoapp/util/ComposeUtils.kt | 2 -- 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index 26e381546..3b56e415c 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -35,10 +35,13 @@ import androidx.compose.material.Text import androidx.compose.material.TextFieldDefaults import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Done +import androidx.compose.material.pullrefresh.PullRefreshIndicator +import androidx.compose.material.pullrefresh.rememberPullRefreshState import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue +import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.dimensionResource @@ -50,6 +53,7 @@ import androidx.lifecycle.compose.ExperimentalLifecycleComposeApi import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.example.android.architecture.blueprints.todoapp.R import com.example.android.architecture.blueprints.todoapp.util.AddEditTaskTopAppBar +import com.example.android.architecture.blueprints.todoapp.util.LoadingContent import com.google.accompanist.swiperefresh.SwipeRefresh import com.google.accompanist.swiperefresh.rememberSwipeRefreshState @@ -112,12 +116,12 @@ private fun AddEditTaskContent( modifier: Modifier = Modifier ) { if (loading) { - SwipeRefresh( - // Show the loading spinner—`loading` is `true` in this code path - state = rememberSwipeRefreshState(true), + LoadingContent( + loading = true, onRefresh = { /* DO NOTHING */ }, - content = { }, - ) + empty = false, + emptyContent = {/* DO NOTHING */ }, + content = {}) } else { Column( modifier diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt index 84f68c6ba..89b3e043f 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/util/ComposeUtils.kt @@ -25,8 +25,6 @@ import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color -import com.google.accompanist.swiperefresh.SwipeRefresh -import com.google.accompanist.swiperefresh.rememberSwipeRefreshState val primaryDarkColor: Color = Color(0xFF263238) From 6e1fc9e37e998e5f1e8fbe4c9af2d82550455a2e Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Thu, 20 Apr 2023 16:08:37 +0530 Subject: [PATCH 05/10] optimized imports --- .../blueprints/todoapp/addedittask/AddEditTaskScreen.kt | 5 ----- 1 file changed, 5 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index 3b56e415c..b7212ce3c 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -35,13 +35,10 @@ import androidx.compose.material.Text import androidx.compose.material.TextFieldDefaults import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Done -import androidx.compose.material.pullrefresh.PullRefreshIndicator -import androidx.compose.material.pullrefresh.rememberPullRefreshState import androidx.compose.material.rememberScaffoldState import androidx.compose.runtime.Composable import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.getValue -import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color import androidx.compose.ui.res.dimensionResource @@ -54,8 +51,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.example.android.architecture.blueprints.todoapp.R import com.example.android.architecture.blueprints.todoapp.util.AddEditTaskTopAppBar import com.example.android.architecture.blueprints.todoapp.util.LoadingContent -import com.google.accompanist.swiperefresh.SwipeRefresh -import com.google.accompanist.swiperefresh.rememberSwipeRefreshState @OptIn(ExperimentalLifecycleComposeApi::class) @Composable From 70a461affda668d8d31a556b1d5b3f2aab612c47 Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Thu, 20 Apr 2023 16:32:12 +0530 Subject: [PATCH 06/10] Formatted the code --- .../blueprints/todoapp/addedittask/AddEditTaskScreen.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index b7212ce3c..d0d434022 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -116,7 +116,8 @@ private fun AddEditTaskContent( onRefresh = { /* DO NOTHING */ }, empty = false, emptyContent = {/* DO NOTHING */ }, - content = {}) + content = {} + ) } else { Column( modifier From a6bc18c8e15d47641310af78319927f519a6b14e Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Fri, 21 Apr 2023 14:47:46 +0530 Subject: [PATCH 07/10] formatted code --- .../blueprints/todoapp/addedittask/AddEditTaskScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index d0d434022..d4cc4b697 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -113,9 +113,9 @@ private fun AddEditTaskContent( if (loading) { LoadingContent( loading = true, - onRefresh = { /* DO NOTHING */ }, + onRefresh = { /* DO NOTHING */}, empty = false, - emptyContent = {/* DO NOTHING */ }, + emptyContent = { /* DO NOTHING */}, content = {} ) } else { From e285e46aeb5c552f1b0db86d211a3f136e746e8f Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Mon, 8 May 2023 11:53:37 +0530 Subject: [PATCH 08/10] minor code format --- .../blueprints/todoapp/addedittask/AddEditTaskScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index d4cc4b697..e3ab9eabb 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -113,9 +113,9 @@ private fun AddEditTaskContent( if (loading) { LoadingContent( loading = true, - onRefresh = { /* DO NOTHING */}, + onRefresh = {/*DO NOTHING*/}, empty = false, - emptyContent = { /* DO NOTHING */}, + emptyContent = {/*DO NOTHING */}, content = {} ) } else { From df90d61aa803fa3a3b024577cf86f193bf325303 Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Mon, 8 May 2023 12:38:12 +0530 Subject: [PATCH 09/10] formatted according to spotless plugin --- .../blueprints/todoapp/addedittask/AddEditTaskScreen.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index e3ab9eabb..189034264 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -115,7 +115,7 @@ private fun AddEditTaskContent( loading = true, onRefresh = {/*DO NOTHING*/}, empty = false, - emptyContent = {/*DO NOTHING */}, + emptyContent = {/*DO NOTHING*/}, content = {} ) } else { From c540170d944ed08cfd103bbb82d7870c19566d87 Mon Sep 17 00:00:00 2001 From: AnirudhPudari Date: Fri, 23 Jun 2023 11:15:57 +0530 Subject: [PATCH 10/10] spotless format issue resolved --- .../blueprints/todoapp/addedittask/AddEditTaskScreen.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt index 189034264..51c902295 100644 --- a/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt +++ b/app/src/main/java/com/example/android/architecture/blueprints/todoapp/addedittask/AddEditTaskScreen.kt @@ -113,9 +113,9 @@ private fun AddEditTaskContent( if (loading) { LoadingContent( loading = true, - onRefresh = {/*DO NOTHING*/}, + onRefresh = { /* DO NOTHING */ }, empty = false, - emptyContent = {/*DO NOTHING*/}, + emptyContent = { /* DO NOTHING */ }, content = {} ) } else {