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..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 @@ -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(areTransfersEmpty = { true }) } } } @@ -62,7 +79,7 @@ private fun ReceivedScreenMobilePreview() { private fun ReceivedScreenTabletPreview() { SwissTransferTheme { Surface { - ReceivedScreen {} + 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 96e171fdb..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 @@ -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(isMessageVisible = { true }) } } }