Skip to content

Commit

Permalink
refactor(MyKSuite): Extract UpgradeFeature component to its own file
Browse files Browse the repository at this point in the history
  • Loading branch information
FabianDevel committed Jan 28, 2025
1 parent 51e8fc8 commit e31fae9
Show file tree
Hide file tree
Showing 2 changed files with 86 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.text.style.TextAlign
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.screens.components.ButtonType
import com.infomaniak.lib.myksuite.ui.screens.components.UpgradeFeature
import com.infomaniak.lib.myksuite.ui.theme.Dimens
import com.infomaniak.lib.myksuite.ui.theme.Margin
import com.infomaniak.lib.myksuite.ui.theme.MyKSuiteTheme
Expand Down Expand Up @@ -90,32 +90,7 @@ private fun BottomSheetContent(
color = MyKSuiteTheme.colors.secondaryTextColor,
)
Spacer(Modifier.height(Margin.Medium))

customFeatures?.let {
(it() + MyKSuiteUpgradeFeatures.MoreFeatures).forEach { customFeature ->
Row(
modifier = paddedModifier
.padding(vertical = Margin.Mini)
.align(Alignment.Start),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
modifier = Modifier.size(Dimens.iconSize),
imageVector = ImageVector.vectorResource(customFeature.icon),
contentDescription = null,
tint = MyKSuiteTheme.colors.iconColor,
)
Spacer(Modifier.width(Margin.Mini))
Text(
text = stringResource(customFeature.title),
style = MyKSuiteTheme.typography.bodyRegular,
color = MyKSuiteTheme.colors.secondaryTextColor,
)
}
}
Spacer(Modifier.height(Margin.Large))
}

UpgradeFeatures(customFeatures, paddedModifier)
Text(
modifier = paddedModifier,
text = stringResource(R.string.myKSuiteUpgradeDetails),
Expand All @@ -137,6 +112,18 @@ private fun BottomSheetContent(
}
}

@Composable
private fun ColumnScope.UpgradeFeatures(
customFeatures: @Composable (() -> List<MyKSuiteUpgradeFeatures>)?,
modifier: Modifier,
) {
customFeatures?.let {
it().forEach { UpgradeFeature(it, modifier) }
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures, modifier)
Spacer(Modifier.height(Margin.Large))
}
}

@OptIn(ExperimentalMaterial3Api::class)
@Preview(name = "(1) Light")
@Preview(name = "(2) Dark", uiMode = Configuration.UI_MODE_NIGHT_YES or Configuration.UI_MODE_TYPE_NORMAL)
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
/*
* Infomaniak Core - Android
* Copyright (C) 2025 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 <http://www.gnu.org/licenses/>.
*/
package com.infomaniak.lib.myksuite.ui.screens.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.graphics.vector.ImageVector
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.res.vectorResource
import androidx.compose.ui.tooling.preview.Preview
import com.infomaniak.lib.myksuite.ui.screens.MyKSuiteUpgradeFeatures
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 ColumnScope.UpgradeFeature(customFeature: MyKSuiteUpgradeFeatures, modifier: Modifier = Modifier) {
Row(
modifier = modifier
.padding(vertical = Margin.Mini)
.align(Alignment.Start),
verticalAlignment = Alignment.CenterVertically,
) {
Icon(
modifier = Modifier.size(Dimens.iconSize),
imageVector = ImageVector.vectorResource(customFeature.icon),
contentDescription = null,
tint = MyKSuiteTheme.colors.iconColor,
)
Spacer(Modifier.width(Margin.Mini))
Text(
text = stringResource(customFeature.title),
style = MyKSuiteTheme.typography.bodyRegular,
color = MyKSuiteTheme.colors.secondaryTextColor,
)
}
}

@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 {
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures)
UpgradeFeature(MyKSuiteUpgradeFeatures.MoreFeatures)
}
}
}
}

0 comments on commit e31fae9

Please sign in to comment.