ktlint: Format all compose code

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-12-30 15:33:40 +08:00
parent 5d1f604460
commit a084a57619
45 changed files with 195 additions and 159 deletions

View File

@@ -8,3 +8,4 @@ root = true
[*.{kt,kts}] [*.{kt,kts}]
ktlint_code_style = android_studio ktlint_code_style = android_studio
ktlint_function_naming_ignore_when_annotated_with = Composable ktlint_function_naming_ignore_when_annotated_with = Composable
ktlint_standard_class-signature = disabled

View File

@@ -75,7 +75,7 @@ fun BlackListItem(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_medium)) modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_medium))
) )
Column( Column(
modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small)), modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small))
) { ) {
Text( Text(
text = displayName, text = displayName,

View File

@@ -68,9 +68,9 @@ fun DispenserListItem(
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
} }
}
}
}
}
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DispenserListItemPreview() { private fun DispenserListItemPreview() {

View File

@@ -138,7 +138,7 @@ fun DownloadListItem(
) )
Column( Column(
modifier = Modifier modifier = Modifier
.padding(horizontal = dimensionResource(R.dimen.margin_small)), .padding(horizontal = dimensionResource(R.dimen.margin_small))
) { ) {
Text( Text(
text = download.displayName, text = download.displayName,

View File

@@ -102,7 +102,9 @@ fun FavouriteListItem(
.clip(RoundedCornerShape(dimensionResource(R.dimen.radius_medium))) .clip(RoundedCornerShape(dimensionResource(R.dimen.radius_medium)))
) )
Column( Column(
modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small)) modifier = Modifier.padding(
horizontal = dimensionResource(R.dimen.margin_small)
)
) { ) {
Text( Text(
text = favourite.displayName, text = favourite.displayName,

View File

@@ -62,7 +62,7 @@ fun Header(
text = title, text = title,
style = MaterialTheme.typography.titleMedium, style = MaterialTheme.typography.titleMedium,
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis, overflow = TextOverflow.Ellipsis
) )
if (!subtitle.isNullOrBlank()) { if (!subtitle.isNullOrBlank()) {
Text( Text(
@@ -74,7 +74,7 @@ fun Header(
if (onClick != null) { if (onClick != null) {
Icon( Icon(
painter = painterResource(R.drawable.ic_arrow_right), painter = painterResource(R.drawable.ic_arrow_right),
contentDescription = null, contentDescription = null
) )
} }
} }

View File

@@ -57,7 +57,6 @@ fun Logo(modifier: Modifier = Modifier) {
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )
} }
} }
@Preview(showBackground = true) @Preview(showBackground = true)

View File

@@ -87,7 +87,7 @@ fun MicroG(
) { ) {
Text( Text(
text = stringResource(R.string.onboarding_gms_microg), text = stringResource(R.string.onboarding_gms_microg),
style = MaterialTheme.typography.bodyMedium, style = MaterialTheme.typography.bodyMedium
) )
links.fastForEach { link -> links.fastForEach { link ->
@@ -132,10 +132,11 @@ fun MicroG(
modifier = Modifier.fillMaxWidth() modifier = Modifier.fillMaxWidth()
) { ) {
Text( Text(
text = if (uiState.isDownloading) text = if (uiState.isDownloading) {
stringResource(R.string.action_installing) stringResource(R.string.action_installing)
else } else {
stringResource(R.string.action_install_microG) stringResource(R.string.action_install_microG)
}
) )
} }
if (uiState.isDownloading) { if (uiState.isDownloading) {

View File

@@ -64,7 +64,7 @@ fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Uni
.clip(RoundedCornerShape(dimensionResource(R.dimen.radius_medium))) .clip(RoundedCornerShape(dimensionResource(R.dimen.radius_medium)))
) )
Column( Column(
modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small)), modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small))
) { ) {
Text( Text(
text = app.displayName, text = app.displayName,
@@ -90,8 +90,7 @@ fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: Ap
} }
@Composable @Composable
private fun buildExtras(app: App): List<String> { private fun buildExtras(app: App): List<String> = mutableListOf<String>().apply {
return mutableListOf<String>().apply {
add(if (app.size > 0) CommonUtil.addSiPrefix(app.size) else app.downloadString) add(if (app.size > 0) CommonUtil.addSiPrefix(app.size) else app.downloadString)
add("${app.labeledRating}") add("${app.labeledRating}")
@@ -111,4 +110,3 @@ private fun buildExtras(app: App): List<String> {
add(stringResource(R.string.details_gsf_dependent)) add(stringResource(R.string.details_gsf_dependent))
} }
} }
}

View File

@@ -54,7 +54,7 @@ private fun ExodusListItemPreview() {
ExodusListItem( ExodusListItem(
tracker = ExodusTracker( tracker = ExodusTracker(
name = "Google Analytics", name = "Google Analytics",
signature = "com.google.android.apps.analytics.|com.google.android.gms.analytics.|com.google.analytics.", signature = "com.google.android.apps.analytics.|com.google.analytics.",
date = "2017-09-24" date = "2017-09-24"
) )
) )

View File

@@ -60,7 +60,7 @@ fun ReviewListItem(modifier: Modifier = Modifier, review: Review) {
.clip(RoundedCornerShape(dimensionResource(R.dimen.radius_medium))) .clip(RoundedCornerShape(dimensionResource(R.dimen.radius_medium)))
) )
Column( Column(
modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small)), modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.margin_small))
) { ) {
Text( Text(
text = review.userName, text = review.userName,

View File

@@ -49,7 +49,7 @@ class AppPreviewProvider : PreviewParameterProvider<App> {
developerName = "Rahul Kumar Patel", developerName = "Rahul Kumar Patel",
versionCode = BuildConfig.VERSION_CODE.toLong(), versionCode = BuildConfig.VERSION_CODE.toLong(),
versionName = BuildConfig.VERSION_NAME, versionName = BuildConfig.VERSION_NAME,
shortDescription = "An unofficial FOSS client to Google Play with an elegant design and privacy", shortDescription = "An unofficial FOSS client to Google Play",
changes = CHANGELOG, changes = CHANGELOG,
description = DESCRIPTION, description = DESCRIPTION,
isFree = true, isFree = true,
@@ -82,7 +82,7 @@ class AppPreviewProvider : PreviewParameterProvider<App> {
Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE Manifest.permission.WRITE_EXTERNAL_STORAGE
), ),
privacyPolicyUrl = "https://gitlab.com/AuroraOSS/AuroraStore/-/blob/master/POLICY.md", privacyPolicyUrl = "https://gitlab.com/AuroraOSS/AuroraStore/"
) )
) )
} }

View File

@@ -77,7 +77,7 @@ private fun ScreenContent(onNavigateUp: () -> Unit = {}, onAboutAurora: () -> Un
R.drawable.ic_ethereum_eth, R.drawable.ic_ethereum_eth,
R.drawable.ic_bhim, R.drawable.ic_bhim,
R.drawable.ic_paypal, R.drawable.ic_paypal,
R.drawable.ic_libera_pay, R.drawable.ic_libera_pay
) )
val links = linkURLS.mapIndexed { index, url -> val links = linkURLS.mapIndexed { index, url ->

View File

@@ -51,9 +51,9 @@ import com.aurora.store.compose.ui.blacklist.menu.BlacklistMenu
import com.aurora.store.compose.ui.blacklist.menu.MenuItem import com.aurora.store.compose.ui.blacklist.menu.MenuItem
import com.aurora.store.util.PackageUtil import com.aurora.store.util.PackageUtil
import com.aurora.store.viewmodel.blacklist.BlacklistViewModel import com.aurora.store.viewmodel.blacklist.BlacklistViewModel
import java.util.Calendar
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.Calendar
@Composable @Composable
fun BlacklistScreen(onNavigateUp: () -> Unit, viewModel: BlacklistViewModel = hiltViewModel()) { fun BlacklistScreen(onNavigateUp: () -> Unit, viewModel: BlacklistViewModel = hiltViewModel()) {
@@ -132,7 +132,9 @@ private fun ScreenContent(
BlacklistMenu { menuItem -> BlacklistMenu { menuItem ->
when (menuItem) { when (menuItem) {
MenuItem.SELECT_ALL -> onBlacklistAll() MenuItem.SELECT_ALL -> onBlacklistAll()
MenuItem.REMOVE_ALL -> onWhitelistAll() MenuItem.REMOVE_ALL -> onWhitelistAll()
MenuItem.IMPORT -> { MenuItem.IMPORT -> {
docImportLauncher.launch(arrayOf(Constants.JSON_MIME_TYPE)) docImportLauncher.launch(arrayOf(Constants.JSON_MIME_TYPE))
} }
@@ -218,7 +220,9 @@ private fun ScreenContent(
val isFiltered = isPackageFiltered(pkg) val isFiltered = isPackageFiltered(pkg)
BlackListItem( BlackListItem(
icon = PackageUtil.getIconForPackage(context, pkg.packageName)!!, icon = PackageUtil.getIconForPackage(context, pkg.packageName)!!,
displayName = pkg.applicationInfo!!.loadLabel(context.packageManager).toString(), displayName = pkg.applicationInfo!!.loadLabel(
context.packageManager
).toString(),
packageName = pkg.packageName, packageName = pkg.packageName,
versionName = pkg.versionName!!, versionName = pkg.versionName!!,
versionCode = PackageInfoCompat.getLongVersionCode(pkg), versionCode = PackageInfoCompat.getLongVersionCode(pkg),

View File

@@ -50,6 +50,7 @@ import com.aurora.extensions.share
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composable.ContainedLoadingIndicator import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composable.Error import com.aurora.store.compose.composable.Error
@@ -85,9 +86,8 @@ import com.aurora.store.util.FlavouredUtil
import com.aurora.store.util.PackageUtil import com.aurora.store.util.PackageUtil
import com.aurora.store.util.ShortcutManagerUtil import com.aurora.store.util.ShortcutManagerUtil
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import kotlinx.coroutines.launch
import kotlin.random.Random import kotlin.random.Random
import com.aurora.gplayapi.data.models.datasafety.Report as DataSafetyReport import kotlinx.coroutines.launch
@Composable @Composable
fun AppDetailsScreen( fun AppDetailsScreen(
@@ -112,6 +112,7 @@ fun AppDetailsScreen(
when (state) { when (state) {
is AppState.Loading -> ScreenContentLoading(onNavigateUp = onNavigateUp) is AppState.Loading -> ScreenContentLoading(onNavigateUp = onNavigateUp)
is AppState.Error -> { is AppState.Error -> {
ScreenContentError( ScreenContentError(
onNavigateUp = onNavigateUp, onNavigateUp = onNavigateUp,
@@ -238,8 +239,8 @@ private fun ScreenContentApp(
fun onInstall(requestedApp: App = app, ignoreMicroG: Boolean = false) { fun onInstall(requestedApp: App = app, ignoreMicroG: Boolean = false) {
if (isPermittedToInstall(context, app)) { if (isPermittedToInstall(context, app)) {
val shouldPromptMicroGInstall = app.requiresGMS() val shouldPromptMicroGInstall = app.requiresGMS() &&
&& FlavouredUtil.promptMicroGInstall(context) FlavouredUtil.promptMicroGInstall(context)
if (shouldPromptMicroGInstall && !ignoreMicroG) { if (shouldPromptMicroGInstall && !ignoreMicroG) {
showExtraPane(ExtraScreen.MicroG) showExtraPane(ExtraScreen.MicroG)
@@ -262,11 +263,15 @@ private fun ScreenContentApp(
AppDetailsMenu(isFavorite = isFavorite, state = state) { menuItem -> AppDetailsMenu(isFavorite = isFavorite, state = state) { menuItem ->
when (menuItem) { when (menuItem) {
MenuItem.FAVORITE -> onFavorite() MenuItem.FAVORITE -> onFavorite()
MenuItem.MANUAL_DOWNLOAD -> { MenuItem.MANUAL_DOWNLOAD -> {
showExtraPane(ExtraScreen.ManualDownload) showExtraPane(ExtraScreen.ManualDownload)
} }
MenuItem.SHARE -> context.share(app.displayName, app.packageName) MenuItem.SHARE -> context.share(app.displayName, app.packageName)
MenuItem.APP_INFO -> context.appInfo(app.packageName) MenuItem.APP_INFO -> context.appInfo(app.packageName)
MenuItem.ADD_TO_HOME -> { MenuItem.ADD_TO_HOME -> {
ShortcutManagerUtil.requestPinShortcut(context, app.packageName) ShortcutManagerUtil.requestPinShortcut(context, app.packageName)
} }
@@ -454,8 +459,7 @@ private fun ScreenContentApp(
} }
@Composable @Composable
fun ExtraPane(screen: NavKey) { fun ExtraPane(screen: NavKey) = when (screen) {
return when (screen) {
is ExtraScreen.Review -> ReviewScreen( is ExtraScreen.Review -> ReviewScreen(
packageName = app.packageName, packageName = app.packageName,
onNavigateUp = ::onNavigateBack onNavigateUp = ::onNavigateBack
@@ -509,7 +513,6 @@ private fun ScreenContentApp(
else -> {} else -> {}
} }
}
NavigableSupportingPaneScaffold( NavigableSupportingPaneScaffold(
navigator = scaffoldNavigator, navigator = scaffoldNavigator,

View File

@@ -162,7 +162,7 @@ private fun ScreenContentError(
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
) )
}, }
) { paddingValues -> ) { paddingValues ->
Error( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),

View File

@@ -107,7 +107,6 @@ private fun ScreenContent(
onRequestInstall: (versionCode: Long) -> Unit = {}, onRequestInstall: (versionCode: Long) -> Unit = {},
windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo() windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo()
) { ) {
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
val snackBarHostState = remember { SnackbarHostState() } val snackBarHostState = remember { SnackbarHostState() }
val errorMessage = stringResource(R.string.manual_download_version_error) val errorMessage = stringResource(R.string.manual_download_version_error)
@@ -180,7 +179,9 @@ private fun ScreenContent(
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.padding_medium)) horizontalArrangement = Arrangement.spacedBy(
dimensionResource(R.dimen.padding_medium)
)
) { ) {
FilledTonalButton( FilledTonalButton(
modifier = Modifier.weight(1F), modifier = Modifier.weight(1F),

View File

@@ -116,7 +116,9 @@ private fun ScreenContent(
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.padding_medium)) horizontalArrangement = Arrangement.spacedBy(
dimensionResource(R.dimen.padding_medium)
)
) { ) {
FilledTonalButton( FilledTonalButton(
modifier = Modifier.weight(1F), modifier = Modifier.weight(1F),
@@ -135,10 +137,11 @@ private fun ScreenContent(
enabled = !uiState.isDownloading enabled = !uiState.isDownloading
) { ) {
Text( Text(
text = if (uiState.isInstalled) text = if (uiState.isInstalled) {
stringResource(R.string.action_install) stringResource(R.string.action_install)
else } else {
stringResource(R.string.action_ignore), stringResource(R.string.action_ignore)
},
maxLines = 1, maxLines = 1,
overflow = TextOverflow.Ellipsis overflow = TextOverflow.Ellipsis
) )

View File

@@ -50,8 +50,8 @@ import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.preview.ReviewPreviewProvider import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.ReviewViewModel import com.aurora.store.viewmodel.details.ReviewViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlin.random.Random import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow
@Composable @Composable
fun ReviewScreen( fun ReviewScreen(
@@ -90,7 +90,6 @@ private fun ScreenContent(
onFilter: (filter: Review.Filter) -> Unit = {}, onFilter: (filter: Review.Filter) -> Unit = {},
windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo() windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo()
) { ) {
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBar( TopAppBar(
@@ -131,8 +130,6 @@ private fun ScreenContent(
} }
} }
} }
} }
} }
@@ -175,7 +172,7 @@ private fun FilterHeader(onClick: (filter: Review.Filter) -> Unit) {
contentDescription = stringResource(filters.getValue(filter)) contentDescription = stringResource(filters.getValue(filter))
) )
} }
}, }
) )
} }
} }

View File

@@ -85,7 +85,9 @@ fun Actions(
@Composable @Composable
private fun ActionsPreview() { private fun ActionsPreview() {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Actions( Actions(
primaryActionDisplayName = stringResource(R.string.action_install), primaryActionDisplayName = stringResource(R.string.action_install),
secondaryActionDisplayName = stringResource(R.string.title_manual_download) secondaryActionDisplayName = stringResource(R.string.title_manual_download)

View File

@@ -59,7 +59,9 @@ fun Changelog(changelog: String) {
@Composable @Composable
private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ChangelogPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Changelog(changelog = app.changes) Changelog(changelog = app.changes)
} }
} }

View File

@@ -31,7 +31,7 @@ import com.aurora.store.data.model.Scores
fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) { fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
Header( Header(
title = stringResource(R.string.details_compatibility_title), title = stringResource(R.string.details_compatibility_title),
subtitle = stringResource(R.string.plexus_powered), subtitle = stringResource(R.string.plexus_powered)
) )
if (!needsGms) { if (!needsGms) {
@@ -63,7 +63,7 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
val scoresStatus = mapOf( val scoresStatus = mapOf(
R.string.details_compatibility_no_gms to plexusScores?.aosp?.status, R.string.details_compatibility_no_gms to plexusScores?.aosp?.status,
R.string.details_compatibility_microg to plexusScores?.microG?.status, R.string.details_compatibility_microg to plexusScores?.microG?.status
) )
scoresStatus.forEach { (title, description) -> scoresStatus.forEach { (title, description) ->
Info( Info(
@@ -80,7 +80,9 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
@Composable @Composable
private fun CompatibilityPreview() { private fun CompatibilityPreview() {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Compatibility(needsGms = true) Compatibility(needsGms = true)
} }
} }

View File

@@ -70,7 +70,7 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
.ifBlank { .ifBlank {
stringResource(R.string.details_data_safety_share_none) stringResource(R.string.details_data_safety_share_none)
} }
), )
) )
} }
@@ -84,7 +84,9 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
@Composable @Composable
private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DataSafetyPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
DataSafety( DataSafety(
privacyPolicyUrl = app.privacyPolicyUrl, privacyPolicyUrl = app.privacyPolicyUrl,
report = Report( report = Report(

View File

@@ -44,7 +44,7 @@ import com.aurora.store.util.PackageUtil
fun Details( fun Details(
app: App, app: App,
state: AppState = AppState.Unavailable, state: AppState = AppState.Unavailable,
onNavigateToDetailsDevProfile: (developerName: String) -> Unit = {}, onNavigateToDetailsDevProfile: (developerName: String) -> Unit = {}
) { ) {
val context = LocalContext.current val context = LocalContext.current
val versionName = if (state is AppState.Installed) state.versionName else app.versionName val versionName = if (state is AppState.Installed) state.versionName else app.versionName
@@ -96,6 +96,7 @@ fun Details(
} }
AppState.Queued::class -> stringResource(R.string.status_queued) AppState.Queued::class -> stringResource(R.string.status_queued)
AppState.Purchasing::class -> stringResource(R.string.preparing_to_install) AppState.Purchasing::class -> stringResource(R.string.preparing_to_install)
else -> { else -> {
@@ -112,7 +113,9 @@ fun Details(
@Composable @Composable
private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Details(app = app) Details(app = app)
} }
} }

View File

@@ -72,7 +72,9 @@ fun DeveloperDetails(address: String, website: String, email: String) {
@Composable @Composable
private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DeveloperDetailsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
DeveloperDetails( DeveloperDetails(
address = app.developerAddress, address = app.developerAddress,
website = app.developerWebsite, website = app.developerWebsite,

View File

@@ -37,7 +37,9 @@ fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
val reportStatus = when { val reportStatus = when {
report == null -> stringResource(R.string.failed_to_fetch_report) report == null -> stringResource(R.string.failed_to_fetch_report)
report.id == -1 -> stringResource(R.string.exodus_progress) report.id == -1 -> stringResource(R.string.exodus_progress)
else -> if (report.trackers.isEmpty()) { else -> if (report.trackers.isEmpty()) {
stringResource(R.string.exodus_no_tracker) stringResource(R.string.exodus_no_tracker)
} else { } else {
@@ -60,7 +62,9 @@ fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
@Composable @Composable
private fun PrivacyPreview() { private fun PrivacyPreview() {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Privacy(report = Report(), onNavigateToDetailsExodus = {}) Privacy(report = Report(), onNavigateToDetailsExodus = {})
} }
} }

View File

@@ -60,7 +60,11 @@ fun RatingAndReviews(
windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo() windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo()
) { ) {
val stars = listOf( val stars = listOf(
rating.oneStar, rating.twoStar, rating.threeStar, rating.fourStar, rating.fiveStar rating.oneStar,
rating.twoStar,
rating.threeStar,
rating.fourStar,
rating.fiveStar
).map { it.toFloat() }.also { ).map { it.toFloat() }.also {
// No ratings available, nothing to show // No ratings available, nothing to show
if (it.sum() == 0F) return if (it.sum() == 0F) return
@@ -150,7 +154,9 @@ private fun RatingAndReviewsPreview(@PreviewParameter(AppPreviewProvider::class)
) )
} }
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
RatingAndReviews(rating = app.rating, featuredReviews = reviews) RatingAndReviews(rating = app.rating, featuredReviews = reviews)
} }
} }

View File

@@ -50,7 +50,9 @@ fun Screenshots(screenshots: List<Artwork>, onNavigateToScreenshot: (index: Int)
@Composable @Composable
private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ScreenshotsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Screenshots(screenshots = app.screenshots) Screenshots(screenshots = app.screenshots)
} }
} }

View File

@@ -56,7 +56,7 @@ fun Tags(app: App) {
Formatter.formatShortFileSize(context, app.size) to R.drawable.ic_apk_install, Formatter.formatShortFileSize(context, app.size) to R.drawable.ic_apk_install,
app.updatedOn to R.drawable.ic_updates, app.updatedOn to R.drawable.ic_updates,
paidLabel to R.drawable.ic_paid, paidLabel to R.drawable.ic_paid,
adsLabel to R.drawable.ic_campaign, adsLabel to R.drawable.ic_campaign
).filterKeys { it != null } ).filterKeys { it != null }
LazyRow( LazyRow(
@@ -72,7 +72,9 @@ fun Tags(app: App) {
@Composable @Composable
private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun TagsPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Tags(app = app) Tags(app = app)
} }
} }

View File

@@ -73,7 +73,9 @@ fun Testing(isSubscribed: Boolean, onTestingSubscriptionChange: (subscribe: Bool
@Composable @Composable
private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun TestingPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
PreviewTemplate { PreviewTemplate {
Column(verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))) { Column(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) {
Testing(isSubscribed = app.testingProgram!!.isSubscribed) Testing(isSubscribed = app.testingProgram!!.isSubscribed)
} }
} }

View File

@@ -36,8 +36,8 @@ import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.details.DevProfileViewModel import com.aurora.store.viewmodel.details.DevProfileViewModel
import com.aurora.store.viewmodel.search.SearchViewModel import com.aurora.store.viewmodel.search.SearchViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlin.random.Random import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow
/** /**
* Screen to display apps from a developer using the developerId * Screen to display apps from a developer using the developerId

View File

@@ -65,7 +65,7 @@ fun InputDispenserDialog(onAdd: (url: String) -> Unit = {}, onDismiss: () -> Uni
onValueChange = { url = it }, onValueChange = { url = it },
shape = RoundedCornerShape(10.dp), shape = RoundedCornerShape(10.dp),
singleLine = true, singleLine = true,
keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() }), keyboardActions = KeyboardActions(onDone = { focusManager.clearFocus() })
) )
} }
}, },

View File

@@ -45,8 +45,8 @@ import com.aurora.store.compose.ui.downloads.menu.MenuItem
import com.aurora.store.data.model.DownloadStatus import com.aurora.store.data.model.DownloadStatus
import com.aurora.store.data.room.download.Download import com.aurora.store.data.room.download.Download
import com.aurora.store.viewmodel.downloads.DownloadsViewModel import com.aurora.store.viewmodel.downloads.DownloadsViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlin.random.Random import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow
@Composable @Composable
fun DownloadsScreen( fun DownloadsScreen(

View File

@@ -44,9 +44,9 @@ import com.aurora.store.compose.ui.favourite.menu.FavouriteMenu
import com.aurora.store.compose.ui.favourite.menu.MenuItem import com.aurora.store.compose.ui.favourite.menu.MenuItem
import com.aurora.store.data.room.favourite.Favourite import com.aurora.store.data.room.favourite.Favourite
import com.aurora.store.viewmodel.all.FavouriteViewModel import com.aurora.store.viewmodel.all.FavouriteViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import java.util.Calendar import java.util.Calendar
import kotlin.random.Random import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow
@Composable @Composable
fun FavouriteScreen( fun FavouriteScreen(

View File

@@ -36,8 +36,8 @@ import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.PreviewTemplate import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.viewmodel.all.InstalledViewModel import com.aurora.store.viewmodel.all.InstalledViewModel
import kotlinx.coroutines.flow.MutableStateFlow
import kotlin.random.Random import kotlin.random.Random
import kotlinx.coroutines.flow.MutableStateFlow
@Composable @Composable
fun InstalledScreen( fun InstalledScreen(

View File

@@ -33,12 +33,12 @@ import com.aurora.store.viewmodel.onboarding.MicroGViewModel
@Composable @Composable
fun MicroGPage( fun MicroGPage(
onMicrogTOSChecked: (Boolean) -> Unit = {}, onMicrogTOSChecked: (Boolean) -> Unit = {},
viewModel: MicroGViewModel = hiltViewModel(), viewModel: MicroGViewModel = hiltViewModel()
) { ) {
ScreenContent( ScreenContent(
uiState = viewModel.uiState, uiState = viewModel.uiState,
onInstall = { viewModel.downloadMicroG() }, onInstall = { viewModel.downloadMicroG() },
onMicrogTOSChecked = onMicrogTOSChecked, onMicrogTOSChecked = onMicrogTOSChecked
) )
} }
@@ -88,7 +88,6 @@ private fun ScreenContent(
onTOSChecked = onMicrogTOSChecked onTOSChecked = onMicrogTOSChecked
) )
} }
} }
@Preview(showBackground = true) @Preview(showBackground = true)
@@ -96,7 +95,7 @@ private fun ScreenContent(
private fun MicroGPagePreview() { private fun MicroGPagePreview() {
PreviewTemplate { PreviewTemplate {
ScreenContent( ScreenContent(
uiState = MicroGUIState(), uiState = MicroGUIState()
) )
} }
} }

View File

@@ -71,9 +71,7 @@ private fun ScreenContent(
val pagerState = rememberPagerState { pages.size } val pagerState = rememberPagerState { pages.size }
val coroutineScope = rememberCoroutineScope() val coroutineScope = rememberCoroutineScope()
fun isFinalPage(): Boolean { fun isFinalPage(): Boolean = pagerState.currentPage == (pagerState.pageCount - 1)
return pagerState.currentPage == (pagerState.pageCount - 1)
}
@Composable @Composable
fun SetupActions(uiState: OnboardingUiState) { fun SetupActions(uiState: OnboardingUiState) {
@@ -105,6 +103,7 @@ private fun ScreenContent(
onClick = { onClick = {
when (pagerState.currentPage) { when (pagerState.currentPage) {
0 -> onFinishOnboarding() 0 -> onFinishOnboarding()
else -> { else -> {
coroutineScope.launch { coroutineScope.launch {
pagerState.animateScrollToPage(pagerState.currentPage - 1) pagerState.animateScrollToPage(pagerState.currentPage - 1)
@@ -125,10 +124,13 @@ private fun ScreenContent(
Button( Button(
modifier = buttonWidthModifier, modifier = buttonWidthModifier,
enabled = !isFinalPage() || (!uiState.isMicroBundleChecked || uiState.isMicroGBundleInstalled), enabled =
!isFinalPage() ||
(!uiState.isMicroBundleChecked || uiState.isMicroGBundleInstalled),
onClick = { onClick = {
when { when {
isFinalPage() -> onFinishOnboarding() isFinalPage() -> onFinishOnboarding()
else -> { else -> {
coroutineScope.launch { coroutineScope.launch {
pagerState.animateScrollToPage(pagerState.currentPage + 1) pagerState.animateScrollToPage(pagerState.currentPage + 1)
@@ -182,8 +184,12 @@ private fun ScreenContent(
) { page -> ) { page ->
when (pages[page]) { when (pages[page]) {
OnboardingPage.WELCOME -> WelcomePage() OnboardingPage.WELCOME -> WelcomePage()
OnboardingPage.PERMISSIONS -> PermissionsPage() OnboardingPage.PERMISSIONS -> PermissionsPage()
OnboardingPage.MICRO_G -> MicroGPage(onMicrogTOSChecked = onMicrogTOSChecked)
OnboardingPage.MICRO_G -> MicroGPage(
onMicrogTOSChecked = onMicrogTOSChecked
)
} }
} }
} }

View File

@@ -73,11 +73,11 @@ import com.aurora.store.compose.preview.PreviewTemplate
import com.aurora.store.compose.ui.details.AppDetailsScreen import com.aurora.store.compose.ui.details.AppDetailsScreen
import com.aurora.store.data.model.SearchFilter import com.aurora.store.data.model.SearchFilter
import com.aurora.store.viewmodel.search.SearchViewModel import com.aurora.store.viewmodel.search.SearchViewModel
import kotlin.random.Random
import kotlinx.coroutines.android.awaitFrame import kotlinx.coroutines.android.awaitFrame
import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.collectLatest
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlin.random.Random
@Composable @Composable
fun SearchScreen(onNavigateUp: () -> Unit, viewModel: SearchViewModel = hiltViewModel()) { fun SearchScreen(onNavigateUp: () -> Unit, viewModel: SearchViewModel = hiltViewModel()) {
@@ -103,7 +103,7 @@ private fun ScreenContent(
onFetchSuggestions: (String) -> Unit = {}, onFetchSuggestions: (String) -> Unit = {},
onSearch: (String) -> Unit = {}, onSearch: (String) -> Unit = {},
onFilter: (filter: SearchFilter) -> Unit = {}, onFilter: (filter: SearchFilter) -> Unit = {},
isAnonymous: Boolean = true, isAnonymous: Boolean = true
) { ) {
val textFieldState = rememberTextFieldState() val textFieldState = rememberTextFieldState()
val searchBarState = rememberSearchBarState() val searchBarState = rememberSearchBarState()
@@ -191,8 +191,9 @@ private fun ScreenContent(
@Composable @Composable
fun ListPane() { fun ListPane() {
// TODO: https://issuetracker.google.com/issues/445720462
Scaffold( Scaffold(
modifier = Modifier.focusable(), //TODO: https://issuetracker.google.com/issues/445720462 modifier = Modifier.focusable(),
topBar = { SearchBar() } topBar = { SearchBar() }
) { paddingValues -> ) { paddingValues ->
Column( Column(
@@ -317,7 +318,7 @@ private fun FilterHeader(
contentDescription = stringResource(filter) contentDescription = stringResource(filter)
) )
} }
}, }
) )
} }
@@ -344,7 +345,7 @@ private fun FilterHeader(
painter = painterResource(R.drawable.ic_arrow_drop_down), painter = painterResource(R.drawable.ic_arrow_drop_down),
contentDescription = stringResource(filter) contentDescription = stringResource(filter)
) )
}, }
) )
DropdownMenu(expanded = isExpanded, onDismissRequest = { isExpanded = false }) { DropdownMenu(expanded = isExpanded, onDismissRequest = { isExpanded = false }) {

View File

@@ -28,10 +28,7 @@ import java.util.Properties
import kotlin.random.Random import kotlin.random.Random
@Composable @Composable
fun DevicePage( fun DevicePage(onRequestNavigateToSplash: () -> Unit, viewModel: SpoofViewModel = hiltViewModel()) {
onRequestNavigateToSplash: () -> Unit,
viewModel: SpoofViewModel = hiltViewModel(),
) {
val availableDevices by viewModel.availableDevices.collectAsStateWithLifecycle() val availableDevices by viewModel.availableDevices.collectAsStateWithLifecycle()
val currentDevice by viewModel.currentDevice.collectAsStateWithLifecycle() val currentDevice by viewModel.currentDevice.collectAsStateWithLifecycle()
@@ -100,15 +97,13 @@ private fun PageContent(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DevicePagePreview() { private fun DevicePagePreview() {
fun getDevice(): Properties { fun getDevice(): Properties = Properties().apply {
return Properties().apply {
setProperty("UserReadableName", "Google Pixel 9a") setProperty("UserReadableName", "Google Pixel 9a")
setProperty("Build.VERSION.SDK_INT", "35") setProperty("Build.VERSION.SDK_INT", "35")
setProperty("Build.MANUFACTURER", "Google") setProperty("Build.MANUFACTURER", "Google")
setProperty("Platforms", "arm64-v8a") setProperty("Platforms", "arm64-v8a")
setProperty("Build.PRODUCT", Random.nextInt().toString()) setProperty("Build.PRODUCT", Random.nextInt().toString())
} }
}
PreviewTemplate { PreviewTemplate {
val defaultDevice = getDevice() val defaultDevice = getDevice()

View File

@@ -27,10 +27,7 @@ import com.aurora.store.viewmodel.spoof.SpoofViewModel
import java.util.Locale import java.util.Locale
@Composable @Composable
fun LocalePage( fun LocalePage(onRequestNavigateToSplash: () -> Unit, viewModel: SpoofViewModel = hiltViewModel()) {
onRequestNavigateToSplash: () -> Unit,
viewModel: SpoofViewModel = hiltViewModel()
) {
val availableLocales by viewModel.availableLocales.collectAsStateWithLifecycle() val availableLocales by viewModel.availableLocales.collectAsStateWithLifecycle()
val currentLocale by viewModel.currentLocale.collectAsStateWithLifecycle() val currentLocale by viewModel.currentLocale.collectAsStateWithLifecycle()
@@ -50,7 +47,7 @@ private fun PageContent(
defaultLocale: Locale = Locale.getDefault(), defaultLocale: Locale = Locale.getDefault(),
locales: List<Locale> = emptyList(), locales: List<Locale> = emptyList(),
isLocaleSelected: (locale: Locale) -> Boolean = { false }, isLocaleSelected: (locale: Locale) -> Boolean = { false },
onLocaleSelected: (locale: Locale) -> Unit = {}, onLocaleSelected: (locale: Locale) -> Unit = {}
) { ) {
LazyColumn( LazyColumn(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),

View File

@@ -47,7 +47,7 @@ import kotlinx.coroutines.launch
fun SpoofScreen( fun SpoofScreen(
onNavigateUp: () -> Unit, onNavigateUp: () -> Unit,
onNavigateToSplash: () -> Unit, onNavigateToSplash: () -> Unit,
viewModel: SpoofViewModel = hiltViewModel(), viewModel: SpoofViewModel = hiltViewModel()
) { ) {
ScreenContent( ScreenContent(
onNavigateUp = onNavigateUp, onNavigateUp = onNavigateUp,