Skip to content

Commit

Permalink
refactor(MyKSuiteChip): Use an enum to chose which chip display
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianDevel committed Feb 5, 2025
1 parent db0528e commit f288d44
Show file tree
Hide file tree
Showing 5 changed files with 22 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -33,33 +34,37 @@ 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
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)
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Original file line number Diff line number Diff line change
Expand Up @@ -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)

0 comments on commit f288d44

Please sign in to comment.