From f288d44682c6aa29e7213b11c7b1ea8dceaf3eac Mon Sep 17 00:00:00 2001 From: Fabian DEVEL Date: Wed, 5 Feb 2025 13:13:50 +0100 Subject: [PATCH] refactor(MyKSuiteChip): Use an enum to chose which chip display --- .../myksuite/ui/components/MyKSuiteChips.kt | 21 ++++++++++++------- .../ui/screens/MyKSuiteDashboardScreen.kt | 5 ++--- .../myksuite/ui/views/BaseMyKSuiteChipView.kt | 6 +++--- .../lib/myksuite/ui/views/MyKSuiteChipView.kt | 3 ++- .../myksuite/ui/views/MyKSuitePlusChipView.kt | 3 ++- 5 files changed, 22 insertions(+), 16 deletions(-) diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt index 0f5fa46b..7a96e91a 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/components/MyKSuiteChips.kt @@ -19,12 +19,13 @@ package com.infomaniak.lib.myksuite.ui.components import android.content.res.Configuration import androidx.annotation.DrawableRes +import androidx.annotation.StringRes import androidx.compose.foundation.Image import androidx.compose.foundation.background import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.padding -import androidx.compose.foundation.shape.RoundedCornerShape +import androidx.compose.foundation.shape.CircleShape import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier @@ -33,24 +34,28 @@ import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.vectorResource import androidx.compose.ui.tooling.preview.Preview import com.infomaniak.lib.myksuite.R -import com.infomaniak.lib.myksuite.ui.theme.Dimens import com.infomaniak.lib.myksuite.ui.theme.Margin import com.infomaniak.lib.myksuite.ui.theme.MyKSuiteTheme @Composable -fun MyKSuiteChip(modifier: Modifier = Modifier, @DrawableRes imageRes: Int) { +fun MyKSuiteChip(modifier: Modifier = Modifier, tier: MyKSuiteTier) { Image( modifier = modifier .background( color = MyKSuiteTheme.colors.chipBackground, - shape = RoundedCornerShape(Dimens.largeCornerRadius), + shape = CircleShape, ) .padding(horizontal = Margin.Mini, vertical = Margin.Micro), - imageVector = ImageVector.vectorResource(imageRes), - contentDescription = stringResource(R.string.myKSuiteName), + imageVector = ImageVector.vectorResource(tier.iconRes), + contentDescription = stringResource(tier.descriptionName), ) } +enum class MyKSuiteTier(@DrawableRes val iconRes: Int, @StringRes val descriptionName: Int) { + Free(iconRes = R.drawable.ic_logo_my_ksuite, descriptionName = R.string.myKSuiteName), + Plus(iconRes = R.drawable.ic_logo_my_ksuite_plus, descriptionName = R.string.myKSuitePlusName), +} + @Preview(name = "(1) Light") @Preview(name = "(2) Dark", uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL) @Composable @@ -58,8 +63,8 @@ private fun Preview() { MyKSuiteTheme { Surface { Column(verticalArrangement = Arrangement.spacedBy(Margin.Micro)) { - MyKSuiteChip(imageRes = R.drawable.ic_logo_my_ksuite) - MyKSuiteChip(imageRes = R.drawable.ic_logo_my_ksuite_plus) + MyKSuiteChip(tier = MyKSuiteTier.Free) + MyKSuiteChip(tier = MyKSuiteTier.Plus) } } } diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt index 38749ab7..c7df3868 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/screens/MyKSuiteDashboardScreen.kt @@ -34,9 +34,8 @@ import androidx.compose.ui.text.style.TextOverflow import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import com.infomaniak.lib.myksuite.R -import com.infomaniak.lib.myksuite.ui.components.MyKSuiteChip +import com.infomaniak.lib.myksuite.ui.components.* import com.infomaniak.lib.myksuite.ui.components.MyKSuitePrimaryButton -import com.infomaniak.lib.myksuite.ui.components.WeightOneSpacer import com.infomaniak.lib.myksuite.ui.components.myKSuiteGradient import com.infomaniak.lib.myksuite.ui.screens.components.* import com.infomaniak.lib.myksuite.ui.theme.Dimens @@ -135,7 +134,7 @@ private fun SubscriptionInfoCard( maxLines = 1, overflow = TextOverflow.Ellipsis, ) - MyKSuiteChip(imageRes = R.drawable.ic_logo_my_ksuite) + MyKSuiteChip(tier = MyKSuiteTier.Free) } PaddedDivider(paddedModifier) AppStorageQuotas(paddedModifier) diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt index 2f3b4df3..da619cff 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/BaseMyKSuiteChipView.kt @@ -21,18 +21,18 @@ import android.content.Context import android.util.AttributeSet import androidx.compose.runtime.Composable import androidx.compose.ui.platform.AbstractComposeView -import com.infomaniak.lib.myksuite.R import com.infomaniak.lib.myksuite.ui.components.MyKSuiteChip +import com.infomaniak.lib.myksuite.ui.components.MyKSuiteTier abstract class BaseMyKSuiteChipView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, - val isMyKSuitePlus: Boolean, + val tier: MyKSuiteTier, ) : AbstractComposeView(context, attrs, defStyleAttr) { @Composable override fun Content() { - MyKSuiteChip(imageRes = if (isMyKSuitePlus) R.drawable.ic_logo_my_ksuite_plus else R.drawable.ic_logo_my_ksuite) + MyKSuiteChip(tier = tier) } } diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt index 3c259e4a..206c98a9 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuiteChipView.kt @@ -19,9 +19,10 @@ package com.infomaniak.lib.myksuite.ui.views import android.content.Context import android.util.AttributeSet +import com.infomaniak.lib.myksuite.ui.components.MyKSuiteTier class MyKSuiteChipView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, -) : BaseMyKSuiteChipView(context, attrs, defStyleAttr, isMyKSuitePlus = false) +) : BaseMyKSuiteChipView(context, attrs, defStyleAttr, MyKSuiteTier.Free) diff --git a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt index 2d59958f..3a3be303 100644 --- a/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt +++ b/MykSuite/src/main/java/com/infomaniak/lib/myksuite/ui/views/MyKSuitePlusChipView.kt @@ -19,9 +19,10 @@ package com.infomaniak.lib.myksuite.ui.views import android.content.Context import android.util.AttributeSet +import com.infomaniak.lib.myksuite.ui.components.MyKSuiteTier class MyKSuitePlusChipView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, -) : BaseMyKSuiteChipView(context, attrs, defStyleAttr, isMyKSuitePlus = true) +) : BaseMyKSuiteChipView(context, attrs, defStyleAttr, tier = MyKSuiteTier.Plus)