From 8df7f2992d728d700e00399b51e412663f7dd3cf Mon Sep 17 00:00:00 2001 From: Ax333l Date: Wed, 1 Nov 2023 21:57:00 +0100 Subject: [PATCH] refactor(ui-components): deduplicate colors and move to settings folder --- .../manager/ui/component/NotificationCard.kt | 53 +++++++++++-------- .../ui/component/settings/BooleanItem.kt | 1 - .../{ => settings}/SettingsListItem.kt | 4 +- .../ui/screen/InstalledAppInfoScreen.kt | 2 +- .../manager/ui/screen/SettingsScreen.kt | 6 +-- .../ui/screen/settings/AboutSettingsScreen.kt | 3 +- .../screen/settings/AdvancedSettingsScreen.kt | 2 +- .../settings/DownloadsSettingsScreen.kt | 2 +- .../screen/settings/GeneralSettingsScreen.kt | 2 +- .../settings/ImportExportSettingsScreen.kt | 2 +- .../settings/update/UpdatesSettingsScreen.kt | 5 +- 11 files changed, 40 insertions(+), 42 deletions(-) rename app/src/main/java/app/revanced/manager/ui/component/{ => settings}/SettingsListItem.kt (96%) diff --git a/app/src/main/java/app/revanced/manager/ui/component/NotificationCard.kt b/app/src/main/java/app/revanced/manager/ui/component/NotificationCard.kt index e5d5074b..3b17de5d 100644 --- a/app/src/main/java/app/revanced/manager/ui/component/NotificationCard.kt +++ b/app/src/main/java/app/revanced/manager/ui/component/NotificationCard.kt @@ -33,6 +33,9 @@ fun NotificationCard( icon: ImageVector, actions: (@Composable () -> Unit)? ) { + val color = + if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + NotificationCardInstance(isWarning = isWarning) { Column( modifier = Modifier.padding(if (title != null) 20.dp else 16.dp), @@ -43,7 +46,7 @@ fun NotificationCard( modifier = Modifier.size(36.dp), imageVector = icon, contentDescription = null, - tint = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + tint = color, ) Column( verticalArrangement = Arrangement.spacedBy(6.dp) @@ -51,12 +54,12 @@ fun NotificationCard( Text( text = title, style = MaterialTheme.typography.titleLarge, - color = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + color = color, ) Text( text = text, style = MaterialTheme.typography.bodyMedium, - color = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + color = color, ) } } else { @@ -65,12 +68,12 @@ fun NotificationCard( modifier = Modifier.size(24.dp), imageVector = icon, contentDescription = null, - tint = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + tint = color, ) Text( text = text, style = MaterialTheme.typography.bodyMedium, - color = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + color = color, ) } } @@ -88,6 +91,9 @@ fun NotificationCard( onDismiss: (() -> Unit)? = null, primaryAction: (() -> Unit)? = null ) { + val color = + if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + NotificationCardInstance(isWarning = isWarning, onClick = primaryAction) { Row( modifier = Modifier @@ -100,7 +106,7 @@ fun NotificationCard( modifier = Modifier.size(if (title != null) 36.dp else 24.dp), imageVector = icon, contentDescription = null, - tint = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + tint = color, ) if (title != null) { Column( @@ -110,12 +116,12 @@ fun NotificationCard( Text( text = title, style = MaterialTheme.typography.titleLarge, - color = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + color = color, ) Text( text = text, style = MaterialTheme.typography.bodyMedium, - color = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + color = color, ) } } else { @@ -123,7 +129,7 @@ fun NotificationCard( modifier = Modifier.weight(1f), text = text, style = MaterialTheme.typography.bodyMedium, - color = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + color = color, ) } if (onDismiss != null) { @@ -131,7 +137,7 @@ fun NotificationCard( Icon( imageVector = Icons.Outlined.Close, contentDescription = stringResource(R.string.close), - tint = if (isWarning) MaterialTheme.colorScheme.onError else MaterialTheme.colorScheme.onPrimaryContainer + tint = color, ) } } @@ -144,28 +150,29 @@ fun NotificationCard( private fun NotificationCardInstance( isWarning: Boolean = false, onClick: (() -> Unit)? = null, - content: (@Composable () -> Unit), + content: @Composable () -> Unit, ) { + val colors = + CardDefaults.cardColors(containerColor = if (isWarning) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primaryContainer) + val modifier = Modifier + .fillMaxWidth() + .padding(16.dp) + .clip(RoundedCornerShape(24.dp)) + if (onClick != null) { Card( onClick = onClick, - colors = CardDefaults.cardColors(containerColor = (if (isWarning) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primaryContainer)), - modifier = Modifier - .fillMaxWidth() - .padding(16.dp) - .clip(RoundedCornerShape(24.dp)) + colors = colors, + modifier = modifier ) { - content.invoke() + content() } } else { Card( - colors = CardDefaults.cardColors(containerColor = (if (isWarning) MaterialTheme.colorScheme.error else MaterialTheme.colorScheme.primaryContainer)), - modifier = Modifier - .fillMaxWidth() - .padding(16.dp) - .clip(RoundedCornerShape(24.dp)) + colors = colors, + modifier = modifier, ) { - content.invoke() + content() } } } \ No newline at end of file diff --git a/app/src/main/java/app/revanced/manager/ui/component/settings/BooleanItem.kt b/app/src/main/java/app/revanced/manager/ui/component/settings/BooleanItem.kt index b12fc8fd..5df102a1 100644 --- a/app/src/main/java/app/revanced/manager/ui/component/settings/BooleanItem.kt +++ b/app/src/main/java/app/revanced/manager/ui/component/settings/BooleanItem.kt @@ -9,7 +9,6 @@ import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import app.revanced.manager.domain.manager.base.Preference -import app.revanced.manager.ui.component.SettingsListItem import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch diff --git a/app/src/main/java/app/revanced/manager/ui/component/SettingsListItem.kt b/app/src/main/java/app/revanced/manager/ui/component/settings/SettingsListItem.kt similarity index 96% rename from app/src/main/java/app/revanced/manager/ui/component/SettingsListItem.kt rename to app/src/main/java/app/revanced/manager/ui/component/settings/SettingsListItem.kt index cbae1282..2d40dda7 100644 --- a/app/src/main/java/app/revanced/manager/ui/component/SettingsListItem.kt +++ b/app/src/main/java/app/revanced/manager/ui/component/settings/SettingsListItem.kt @@ -1,4 +1,4 @@ -package app.revanced.manager.ui.component +package app.revanced.manager.ui.component.settings import androidx.compose.foundation.layout.padding import androidx.compose.material3.ListItemColors @@ -37,7 +37,7 @@ fun SettingsListItem( text = supportingContent, style = MaterialTheme.typography.bodyMedium, color = MaterialTheme.colorScheme.outline - ) else null + ) }, leadingContent = leadingContent, trailingContent = trailingContent, diff --git a/app/src/main/java/app/revanced/manager/ui/screen/InstalledAppInfoScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/InstalledAppInfoScreen.kt index 50d1a99a..fe29a9f3 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/InstalledAppInfoScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/InstalledAppInfoScreen.kt @@ -38,7 +38,7 @@ import app.revanced.manager.R import app.revanced.manager.data.room.apps.installed.InstallType import app.revanced.manager.ui.component.AppInfo import app.revanced.manager.ui.component.AppTopBar -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem import app.revanced.manager.ui.component.SegmentedButton import app.revanced.manager.ui.viewmodel.InstalledAppInfoViewModel import app.revanced.manager.util.PatchesSelection diff --git a/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt index dc57665a..0c2dd3d3 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/SettingsScreen.kt @@ -8,11 +8,8 @@ import android.os.PowerManager import android.provider.Settings import androidx.compose.animation.AnimatedVisibility import androidx.compose.foundation.clickable -import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column -import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -28,7 +25,6 @@ import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource -import androidx.compose.ui.unit.dp import app.revanced.manager.R import app.revanced.manager.ui.component.AppTopBar import app.revanced.manager.ui.component.NotificationCard @@ -40,7 +36,7 @@ import app.revanced.manager.ui.screen.settings.update.UpdatesSettingsScreen import app.revanced.manager.ui.viewmodel.SettingsViewModel import dev.olshevski.navigation.reimagined.* import org.koin.androidx.compose.getViewModel -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem @SuppressLint("BatteryLife") @OptIn(ExperimentalMaterial3Api::class) diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt index 63d8837d..60715e98 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/AboutSettingsScreen.kt @@ -3,7 +3,6 @@ package app.revanced.manager.ui.screen.settings import androidx.appcompat.content.res.AppCompatResources import androidx.compose.foundation.BorderStroke import androidx.compose.foundation.Image -import androidx.compose.foundation.border import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -39,7 +38,7 @@ import androidx.compose.ui.unit.dp import app.revanced.manager.BuildConfig import app.revanced.manager.R import app.revanced.manager.ui.component.AppTopBar -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem import app.revanced.manager.util.isDebuggable import app.revanced.manager.util.openUrl import com.google.accompanist.drawablepainter.rememberDrawablePainter diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/AdvancedSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/AdvancedSettingsScreen.kt index 4804d632..0923ce04 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/AdvancedSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/AdvancedSettingsScreen.kt @@ -35,7 +35,7 @@ import androidx.lifecycle.viewModelScope import app.revanced.manager.R import app.revanced.manager.ui.component.AppTopBar import app.revanced.manager.ui.component.GroupHeader -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem import app.revanced.manager.ui.component.settings.BooleanItem import app.revanced.manager.ui.viewmodel.AdvancedSettingsViewModel import org.koin.androidx.compose.getViewModel diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt index 5567470a..881c420b 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/DownloadsSettingsScreen.kt @@ -22,7 +22,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle import app.revanced.manager.R import app.revanced.manager.ui.component.AppTopBar import app.revanced.manager.ui.component.GroupHeader -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem import app.revanced.manager.ui.component.settings.BooleanItem import app.revanced.manager.ui.viewmodel.DownloadsViewModel import org.koin.androidx.compose.getViewModel diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt index b32dea91..1224bbe3 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/GeneralSettingsScreen.kt @@ -23,7 +23,7 @@ import app.revanced.manager.ui.component.settings.BooleanItem import app.revanced.manager.ui.theme.Theme import app.revanced.manager.ui.viewmodel.SettingsViewModel import org.koin.compose.koinInject -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt index 7ff29db2..627c174d 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/ImportExportSettingsScreen.kt @@ -39,7 +39,7 @@ import app.revanced.manager.ui.component.bundle.BundleSelector import app.revanced.manager.util.toast import kotlinx.coroutines.launch import org.koin.androidx.compose.getViewModel -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem @OptIn(ExperimentalMaterial3Api::class) @Composable diff --git a/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt b/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt index cac4acdd..88e094e0 100644 --- a/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt +++ b/app/src/main/java/app/revanced/manager/ui/screen/settings/update/UpdatesSettingsScreen.kt @@ -10,10 +10,7 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Update import androidx.compose.material3.ExperimentalMaterial3Api -import androidx.compose.material3.ListItem -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Scaffold -import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource @@ -21,7 +18,7 @@ import androidx.compose.ui.unit.dp import app.revanced.manager.R import app.revanced.manager.ui.component.AppTopBar import app.revanced.manager.ui.component.NotificationCard -import app.revanced.manager.ui.component.SettingsListItem +import app.revanced.manager.ui.component.settings.SettingsListItem @OptIn(ExperimentalMaterial3Api::class) @Composable