From 6a049b9dd403225b55e9cbf2b2ab104e5a26449a Mon Sep 17 00:00:00 2001 From: Kevin Boulongne Date: Wed, 4 Sep 2024 11:04:51 +0200 Subject: [PATCH] Extract ReceivedEmptyFab to its own component file --- .../ui/screen/main/received/ReceivedScreen.kt | 44 +--------- .../received/components/ReceivedEmptyFab.kt | 85 +++++++++++++++++++ 2 files changed, 87 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt 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 e95669ec19..edf3aaea4e 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 @@ -17,27 +17,19 @@ */ package com.infomaniak.swisstransfer.ui.screen.main.received -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.padding -import androidx.compose.material3.Icon import androidx.compose.material3.Scaffold import androidx.compose.material3.Surface -import androidx.compose.material3.Text import androidx.compose.material3.adaptive.navigationsuite.NavigationSuiteType import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier -import androidx.compose.ui.platform.LocalContext -import androidx.constraintlayout.compose.ConstraintLayout import com.infomaniak.swisstransfer.R import com.infomaniak.swisstransfer.ui.components.BrandTobAppBar import com.infomaniak.swisstransfer.ui.components.EmptyState -import com.infomaniak.swisstransfer.ui.components.NewTransferFab -import com.infomaniak.swisstransfer.ui.components.NewTransferFabType import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus -import com.infomaniak.swisstransfer.ui.images.illus.ArrowRightCurved import com.infomaniak.swisstransfer.ui.images.illus.MascotSearching import com.infomaniak.swisstransfer.ui.screen.main.LocalNavType -import com.infomaniak.swisstransfer.ui.theme.Margin +import com.infomaniak.swisstransfer.ui.screen.main.received.components.ReceivedEmptyFab import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme import com.infomaniak.swisstransfer.ui.utils.PreviewMobile import com.infomaniak.swisstransfer.ui.utils.PreviewTablet @@ -53,39 +45,7 @@ fun ReceivedScreen(navigateToDetails: (transferId: Int) -> Unit) { private fun ReceivedScreen(navType: NavigationSuiteType) { Scaffold( topBar = { BrandTobAppBar() }, - floatingActionButton = { - ConstraintLayout { - val (text, icon, fab) = createRefs() - - Text( - text = LocalContext.current.getString(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, - ) - - NewTransferFab( - modifier = Modifier.constrainAs(fab) { }, - newTransferFabType = NewTransferFabType.BOTTOM_BAR, - ) - } - }, + floatingActionButton = { ReceivedEmptyFab() }, ) { contentPadding -> EmptyState( 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 new file mode 100644 index 0000000000..44979d5bdf --- /dev/null +++ b/app/src/main/java/com/infomaniak/swisstransfer/ui/screen/main/received/components/ReceivedEmptyFab.kt @@ -0,0 +1,85 @@ +/* + * Infomaniak SwissTransfer - Android + * Copyright (C) 2024 Infomaniak Network SA + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ +package com.infomaniak.swisstransfer.ui.screen.main.received.components + +import android.content.res.Configuration +import androidx.compose.foundation.layout.* +import androidx.compose.material3.Icon +import androidx.compose.material3.Surface +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.tooling.preview.Preview +import androidx.constraintlayout.compose.ConstraintLayout +import com.infomaniak.swisstransfer.R +import com.infomaniak.swisstransfer.ui.components.NewTransferFab +import com.infomaniak.swisstransfer.ui.components.NewTransferFabType +import com.infomaniak.swisstransfer.ui.images.AppImages.AppIllus +import com.infomaniak.swisstransfer.ui.images.illus.ArrowRightCurved +import com.infomaniak.swisstransfer.ui.theme.Margin +import com.infomaniak.swisstransfer.ui.theme.SwissTransferTheme + +@Composable +fun ReceivedEmptyFab() { + ConstraintLayout { + val (text, icon, fab) = createRefs() + + Text( + text = LocalContext.current.getString(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, + ) + + NewTransferFab( + modifier = Modifier.constrainAs(fab) { }, + newTransferFabType = NewTransferFabType.BOTTOM_BAR, + ) + } +} + +@Preview(name = "Light") +@Preview(name = "Dark", uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL) +@Composable +private fun ReceivedEmptyFabPreview() { + SwissTransferTheme { + Surface { + Row(Modifier.fillMaxSize(), horizontalArrangement = Arrangement.End, verticalAlignment = Alignment.Bottom) { + ReceivedEmptyFab() + } + } + } +}