mirror of
https://github.com/revanced/revanced-manager
synced 2024-05-14 13:56:57 +02:00
106 lines
4.1 KiB
Kotlin
106 lines
4.1 KiB
Kotlin
package app.revanced.manager.ui.component.bundle
|
|
|
|
import androidx.compose.animation.AnimatedVisibility
|
|
import androidx.compose.foundation.layout.fillMaxWidth
|
|
import androidx.compose.foundation.layout.padding
|
|
import androidx.compose.foundation.lazy.LazyColumn
|
|
import androidx.compose.material.icons.Icons
|
|
import androidx.compose.material.icons.automirrored.filled.ArrowBack
|
|
import androidx.compose.material.icons.outlined.Lightbulb
|
|
import androidx.compose.material3.ExperimentalMaterial3Api
|
|
import androidx.compose.material3.HorizontalDivider
|
|
import androidx.compose.material3.Icon
|
|
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.runtime.getValue
|
|
import androidx.compose.runtime.mutableStateOf
|
|
import androidx.compose.runtime.remember
|
|
import androidx.compose.runtime.setValue
|
|
import androidx.compose.ui.Modifier
|
|
import androidx.compose.ui.res.stringResource
|
|
import androidx.compose.ui.unit.dp
|
|
import androidx.compose.ui.window.Dialog
|
|
import androidx.compose.ui.window.DialogProperties
|
|
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
|
import app.revanced.manager.R
|
|
import app.revanced.manager.domain.bundles.PatchBundleSource
|
|
import app.revanced.manager.ui.component.NotificationCard
|
|
|
|
@OptIn(ExperimentalMaterial3Api::class)
|
|
@Composable
|
|
fun BundlePatchesDialog(
|
|
onDismissRequest: () -> Unit,
|
|
bundle: PatchBundleSource,
|
|
) {
|
|
var informationCardVisible by remember { mutableStateOf(true) }
|
|
val state by bundle.state.collectAsStateWithLifecycle()
|
|
|
|
Dialog(
|
|
onDismissRequest = onDismissRequest,
|
|
properties = DialogProperties(
|
|
usePlatformDefaultWidth = false,
|
|
dismissOnBackPress = true
|
|
)
|
|
) {
|
|
Scaffold(
|
|
topBar = {
|
|
BundleTopBar(
|
|
title = stringResource(R.string.bundle_patches),
|
|
onBackClick = onDismissRequest,
|
|
onBackIcon = {
|
|
Icon(
|
|
imageVector = Icons.AutoMirrored.Filled.ArrowBack,
|
|
contentDescription = stringResource(R.string.back)
|
|
)
|
|
},
|
|
)
|
|
},
|
|
) { paddingValues ->
|
|
LazyColumn(
|
|
modifier = Modifier
|
|
.fillMaxWidth()
|
|
.padding(paddingValues)
|
|
.padding(16.dp)
|
|
) {
|
|
item {
|
|
AnimatedVisibility(visible = informationCardVisible) {
|
|
NotificationCard(
|
|
icon = Icons.Outlined.Lightbulb,
|
|
text = stringResource(R.string.tap_on_patches),
|
|
onDismiss = { informationCardVisible = false }
|
|
)
|
|
}
|
|
}
|
|
|
|
state.patchBundleOrNull()?.let { bundle ->
|
|
items(bundle.patches.size) { bundleIndex ->
|
|
val patch = bundle.patches[bundleIndex]
|
|
ListItem(
|
|
headlineContent = {
|
|
Text(
|
|
text = patch.name,
|
|
style = MaterialTheme.typography.bodyLarge,
|
|
color = MaterialTheme.colorScheme.onSurface
|
|
)
|
|
},
|
|
supportingContent = {
|
|
patch.description?.let {
|
|
Text(
|
|
text = it,
|
|
style = MaterialTheme.typography.bodyMedium,
|
|
color = MaterialTheme.colorScheme.onSurfaceVariant
|
|
)
|
|
}
|
|
}
|
|
)
|
|
HorizontalDivider()
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|