From 60c88613ec8fb2be60f068eb10a8d1784b765450 Mon Sep 17 00:00:00 2001 From: Gibran Chevalley Date: Fri, 20 Sep 2024 12:36:52 +0200 Subject: [PATCH 1/2] Hide discovery message when transfer list has at least one item --- .../ui/screen/main/received/ReceivedScreen.kt | 25 ++++++++-- .../received/components/ReceivedEmptyFab.kt | 49 ++++++++++--------- 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt index 15e182688..541a8c564 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt @@ -21,22 +21,39 @@ import androidx.compose.foundation.layout.padding import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface import androidx.compose.runtime.Composable +import androidx.compose.runtime.derivedStateOf +import androidx.compose.runtime.getValue +import androidx.compose.runtime.remember import androidx.compose.ui.Modifier +import androidx.hilt.navigation.compose.hiltViewModel +import androidx.lifecycle.compose.collectAsStateWithLifecycle import com.infomaniak.swisstransfer.R import com.infomaniak.swisstransfer.ui.components.BrandTobAppBar import com.infomaniak.swisstransfer.ui.components.EmptyState import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus import com.infomaniak.swisstransfer.ui.images.illus.MascotSearching import com.infomaniak.swisstransfer.ui.screen.main.received.components.ReceivedEmptyFab +import com.infomaniak.swisstransfer.ui.screen.main.sent.SentViewModel import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme import com.infomaniak.swisstransfer.ui.utils.PreviewMobile import com.infomaniak.swisstransfer.ui.utils.PreviewTablet @Composable -fun ReceivedScreen(navigateToDetails: (transferId: Int) -> Unit) { +fun ReceivedScreen( + navigateToDetails: (transferId: Int) -> Unit, + sentViewModel: SentViewModel = hiltViewModel(), +) { + val transfers by sentViewModel.transfers.collectAsStateWithLifecycle() + val areTransfersEmpty by remember { derivedStateOf { transfers?.isEmpty() == true } } + + ReceivedScreen { areTransfersEmpty } +} + +@Composable +private fun ReceivedScreen(areTransfersEmpty: () -> Boolean) { Scaffold( topBar = { BrandTobAppBar() }, - floatingActionButton = { ReceivedEmptyFab() }, + floatingActionButton = { ReceivedEmptyFab(areTransfersEmpty) }, ) { contentPadding -> EmptyState( icon = AppIllus.MascotSearching, @@ -52,7 +69,7 @@ fun ReceivedScreen(navigateToDetails: (transferId: Int) -> Unit) { private fun ReceivedScreenMobilePreview() { SwissTransferTheme { Surface { - ReceivedScreen {} + ReceivedScreen { true } } } } @@ -62,7 +79,7 @@ private fun ReceivedScreenMobilePreview() { private fun ReceivedScreenTabletPreview() { SwissTransferTheme { Surface { - ReceivedScreen {} + ReceivedScreen { true } } } } diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt index 96e171fdb..a57b910c9 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt @@ -25,7 +25,6 @@ import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.constraintlayout.compose.ConstraintLayout @@ -38,32 +37,34 @@ import com.infomaniak.swisstransfer.ui.theme.Margin import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme @Composable -fun ReceivedEmptyFab() { +fun ReceivedEmptyFab(isMessageVisible: () -> Boolean) { ConstraintLayout { val (text, icon, fab) = createRefs() - Text( - text = stringResource(R.string.firstTransferDescription), - style = SwissTransferTheme.typography.bodyRegular, - color = SwissTransferTheme.colors.secondaryTextColor, - modifier = Modifier - .padding(PaddingValues(top = Margin.XLarge)) - .constrainAs(text) { - bottom.linkTo(icon.top, Margin.Small) - end.linkTo(icon.end, Margin.Small) - }, - ) + if (isMessageVisible()) { + Text( + text = stringResource(R.string.firstTransferDescription), + style = SwissTransferTheme.typography.bodyRegular, + color = SwissTransferTheme.colors.secondaryTextColor, + modifier = Modifier + .padding(PaddingValues(top = Margin.XLarge)) + .constrainAs(text) { + bottom.linkTo(icon.top, Margin.Small) + end.linkTo(icon.end, Margin.Small) + }, + ) - Icon( - modifier = Modifier - .constrainAs(icon) { - top.linkTo(fab.top) - bottom.linkTo(fab.bottom, Margin.Small) - end.linkTo(fab.start, Margin.Medium) - }, - imageVector = AppIllus.ArrowRightCurved, - contentDescription = null, - ) + Icon( + modifier = Modifier + .constrainAs(icon) { + top.linkTo(fab.top) + bottom.linkTo(fab.bottom, Margin.Small) + end.linkTo(fab.start, Margin.Medium) + }, + imageVector = AppIllus.ArrowRightCurved, + contentDescription = null, + ) + } NewTransferFab( modifier = Modifier.constrainAs(fab) { }, @@ -79,7 +80,7 @@ private fun ReceivedEmptyFabPreview() { SwissTransferTheme { Surface { Row(Modifier.fillMaxSize(), horizontalArrangement = Arrangement.End, verticalAlignment = Alignment.Bottom) { - ReceivedEmptyFab() + ReceivedEmptyFab { true } } } } From 3f4158e1bab976cb43c3006f361978c0e5ddcdec Mon Sep 17 00:00:00 2001 From: Gibran Chevalley Date: Mon, 23 Sep 2024 08:26:47 +0200 Subject: [PATCH 2/2] Apply suggestions from code review --- .../swisstransfer/ui/screen/main/received/ReceivedScreen.kt | 4 ++-- .../ui/screen/main/received/components/ReceivedEmptyFab.kt | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt index 541a8c564..7f3a84651 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/ReceivedScreen.kt @@ -69,7 +69,7 @@ private fun ReceivedScreen(areTransfersEmpty: () -> Boolean) { private fun ReceivedScreenMobilePreview() { SwissTransferTheme { Surface { - ReceivedScreen { true } + ReceivedScreen(areTransfersEmpty = { true }) } } } @@ -79,7 +79,7 @@ private fun ReceivedScreenMobilePreview() { private fun ReceivedScreenTabletPreview() { SwissTransferTheme { Surface { - ReceivedScreen { true } + ReceivedScreen(areTransfersEmpty = { true }) } } } diff --git a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt index a57b910c9..2242fad21 100644 --- a/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt @@ -80,7 +80,7 @@ private fun ReceivedEmptyFabPreview() { SwissTransferTheme { Surface { Row(Modifier.fillMaxSize(), horizontalArrangement = Arrangement.End, verticalAlignment = Alignment.Bottom) { - ReceivedEmptyFab { true } + ReceivedEmptyFab(isMessageVisible = { true }) } } }