diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ext/PaddingValuesExt.kt b/src/app/src/main/java/fr/iut/alldev/allin/ext/PaddingValuesExt.kt new file mode 100644 index 0000000..6d97fba --- /dev/null +++ b/src/app/src/main/java/fr/iut/alldev/allin/ext/PaddingValuesExt.kt @@ -0,0 +1,39 @@ +package fr.iut.alldev.allin.ext + +import androidx.compose.foundation.layout.PaddingValues +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.asPaddingValues +import androidx.compose.foundation.layout.calculateEndPadding +import androidx.compose.foundation.layout.calculateStartPadding +import androidx.compose.runtime.Composable +import androidx.compose.runtime.ReadOnlyComposable +import androidx.compose.ui.platform.LocalLayoutDirection +import androidx.compose.ui.unit.Dp +import androidx.compose.ui.unit.dp + +@ReadOnlyComposable +@Composable +operator fun PaddingValues.plus(paddingValues: PaddingValues): PaddingValues { + val direction = LocalLayoutDirection.current + return PaddingValues( + top = this.calculateTopPadding() + paddingValues.calculateTopPadding(), + bottom = this.calculateBottomPadding() + paddingValues.calculateBottomPadding(), + start = this.calculateStartPadding(direction) + paddingValues.calculateStartPadding(direction), + end = this.calculateEndPadding(direction) + paddingValues.calculateEndPadding(direction), + ) +} + +@ReadOnlyComposable +@Composable +fun WindowInsets.asPaddingValues(top: Dp = 0.dp, bottom: Dp = 0.dp, start: Dp = 0.dp, end: Dp = 0.dp): PaddingValues + = this.asPaddingValues() + PaddingValues(start, top, end, bottom) + +@ReadOnlyComposable +@Composable +fun WindowInsets.asPaddingValues(horizontal: Dp = 0.dp, vertical: Dp = 0.dp): PaddingValues + = this.asPaddingValues() + PaddingValues(horizontal, vertical) + +@ReadOnlyComposable +@Composable +fun WindowInsets.asPaddingValues(all: Dp = 0.dp): PaddingValues + = this.asPaddingValues() + PaddingValues(all) \ No newline at end of file diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ui/bet/BetScreen.kt b/src/app/src/main/java/fr/iut/alldev/allin/ui/bet/BetScreen.kt index e188387..ac83f61 100644 --- a/src/app/src/main/java/fr/iut/alldev/allin/ui/bet/BetScreen.kt +++ b/src/app/src/main/java/fr/iut/alldev/allin/ui/bet/BetScreen.kt @@ -7,9 +7,11 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets +import androidx.compose.foundation.layout.asPaddingValues import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height -import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyRow @@ -59,7 +61,8 @@ fun BetScreen( .pullRefresh(pullRefreshState) .padding(top = with(LocalDensity.current) { progressAnimation.toDp() - }) + }), + contentPadding = WindowInsets.navigationBars.asPaddingValues() ) { item { Box( @@ -122,10 +125,6 @@ fun BetScreen( Spacer(modifier = Modifier.height(24.dp)) } } - - item { - Spacer(modifier = Modifier.navigationBarsPadding()) - } } } diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ui/betHistory/components/GenericHistory.kt b/src/app/src/main/java/fr/iut/alldev/allin/ui/betHistory/components/GenericHistory.kt index 0f7431e..43a66f2 100644 --- a/src/app/src/main/java/fr/iut/alldev/allin/ui/betHistory/components/GenericHistory.kt +++ b/src/app/src/main/java/fr/iut/alldev/allin/ui/betHistory/components/GenericHistory.kt @@ -1,12 +1,10 @@ package fr.iut.alldev.allin.ui.betHistory.components import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.PaddingValues -import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBarsPadding -import androidx.compose.foundation.layout.width +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.material3.Text @@ -16,6 +14,7 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import fr.iut.alldev.allin.data.model.bet.BetStatus +import fr.iut.alldev.allin.ext.asPaddingValues import fr.iut.alldev.allin.theme.AllInTheme @Composable @@ -33,7 +32,7 @@ fun GenericHistory( ) { LazyColumn( modifier = Modifier.fillMaxSize(), - contentPadding = PaddingValues(horizontal = 24.dp, vertical = 18.dp), + contentPadding = WindowInsets.navigationBars.asPaddingValues(horizontal = 24.dp, vertical = 18.dp), verticalArrangement = Arrangement.spacedBy(18.dp), ) { item { @@ -59,9 +58,5 @@ fun GenericHistory( won = getWon(it) ) } - - item { - Spacer(modifier = Modifier.navigationBarsPadding()) - } } } \ No newline at end of file diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ui/betStatus/vo/BetStatusBottomSheetBetDisplayer.kt b/src/app/src/main/java/fr/iut/alldev/allin/ui/betStatus/vo/BetStatusBottomSheetBetDisplayer.kt index 1906d0c..36ab568 100644 --- a/src/app/src/main/java/fr/iut/alldev/allin/ui/betStatus/vo/BetStatusBottomSheetBetDisplayer.kt +++ b/src/app/src/main/java/fr/iut/alldev/allin/ui/betStatus/vo/BetStatusBottomSheetBetDisplayer.kt @@ -6,12 +6,13 @@ import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.IntrinsicSize -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxHeight import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size @@ -52,6 +53,7 @@ import fr.iut.alldev.allin.data.model.bet.MatchBet import fr.iut.alldev.allin.data.model.bet.NO_VALUE import fr.iut.alldev.allin.data.model.bet.YES_VALUE import fr.iut.alldev.allin.data.model.bet.vo.BetDetail +import fr.iut.alldev.allin.ext.asPaddingValues import fr.iut.alldev.allin.ext.formatToSimple import fr.iut.alldev.allin.ext.getDateEndLabelId import fr.iut.alldev.allin.ext.getDateStartLabelId @@ -137,7 +139,7 @@ class BetStatusBottomSheetBetDisplayer( source: NestedScrollSource ) = available.copy(x = 0f) }), - contentPadding = PaddingValues(horizontal = 20.dp) + contentPadding = WindowInsets.navigationBars.asPaddingValues(horizontal = 20.dp) ) { item { Spacer(modifier = Modifier.height(20.dp)) @@ -208,7 +210,6 @@ class BetStatusBottomSheetBetDisplayer( if (betDetail.bet.betStatus != BetStatus.FINISHED && betDetail.userParticipation == null) { Spacer(modifier = Modifier.height(75.dp)) } - Spacer(modifier = Modifier.navigationBarsPadding()) } } } diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ui/ranking/components/RankingScreenContent.kt b/src/app/src/main/java/fr/iut/alldev/allin/ui/ranking/components/RankingScreenContent.kt index ce19649..51cccd6 100644 --- a/src/app/src/main/java/fr/iut/alldev/allin/ui/ranking/components/RankingScreenContent.kt +++ b/src/app/src/main/java/fr/iut/alldev/allin/ui/ranking/components/RankingScreenContent.kt @@ -1,12 +1,11 @@ package fr.iut.alldev.allin.ui.ranking.components import androidx.compose.foundation.layout.Arrangement -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row -import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth -import androidx.compose.foundation.layout.navigationBarsPadding +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.itemsIndexed import androidx.compose.material3.Text @@ -20,15 +19,17 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import fr.iut.alldev.allin.R import fr.iut.alldev.allin.data.model.User +import fr.iut.alldev.allin.ext.asPaddingValues import fr.iut.alldev.allin.theme.AllInTheme @Composable fun RankingScreenContent( users: List ) { + LazyColumn( modifier = Modifier.fillMaxSize(), - contentPadding = PaddingValues(start = 24.dp, end = 24.dp, top = 18.dp), + contentPadding = WindowInsets.navigationBars.asPaddingValues(start = 24.dp, end = 24.dp, top = 18.dp), verticalArrangement = Arrangement.spacedBy(11.dp), ) { item { @@ -72,10 +73,6 @@ fun RankingScreenContent( coins = user.coins ) } - - item { - Spacer(modifier = Modifier.navigationBarsPadding()) - } } } diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ui/register/components/RegisterScreenContent.kt b/src/app/src/main/java/fr/iut/alldev/allin/ui/register/components/RegisterScreenContent.kt index 65f30f9..a06f476 100644 --- a/src/app/src/main/java/fr/iut/alldev/allin/ui/register/components/RegisterScreenContent.kt +++ b/src/app/src/main/java/fr/iut/alldev/allin/ui/register/components/RegisterScreenContent.kt @@ -4,12 +4,13 @@ import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.PaddingValues import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Spacer +import androidx.compose.foundation.layout.WindowInsets import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.navigationBars import androidx.compose.foundation.layout.navigationBarsPadding import androidx.compose.foundation.layout.padding import androidx.compose.foundation.lazy.LazyColumn @@ -32,6 +33,7 @@ import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import fr.iut.alldev.allin.R +import fr.iut.alldev.allin.ext.asPaddingValues import fr.iut.alldev.allin.theme.AllInTheme import fr.iut.alldev.allin.ui.core.AllInGradientButton import fr.iut.alldev.allin.ui.core.AllInLoading @@ -67,7 +69,7 @@ fun RegisterScreenContent( ) { LazyColumn( verticalArrangement = Arrangement.Center, - contentPadding = PaddingValues(40.dp) + contentPadding = WindowInsets.navigationBars.asPaddingValues(40.dp) ) { item { Text( @@ -145,7 +147,6 @@ fun RegisterScreenContent( ) } Spacer(modifier = Modifier.height(120.dp)) - Spacer(modifier = Modifier.navigationBarsPadding()) } } Column( diff --git a/src/app/src/main/java/fr/iut/alldev/allin/ui/splash/SplashScreenViewModel.kt b/src/app/src/main/java/fr/iut/alldev/allin/ui/splash/SplashScreenViewModel.kt index f5d9a8e..f7379ce 100644 --- a/src/app/src/main/java/fr/iut/alldev/allin/ui/splash/SplashScreenViewModel.kt +++ b/src/app/src/main/java/fr/iut/alldev/allin/ui/splash/SplashScreenViewModel.kt @@ -36,7 +36,7 @@ class SplashScreenViewModel @Inject constructor( emit(State.Loaded(false)) } } ?: emit(State.Loaded(false)) - + }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(), State.Loading) }