compose: Rename composables to better reflect the use case

Add ListItem suffix instead of Composable wherever applicable, strip others

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-10-26 13:13:53 +08:00
parent 906bb37505
commit 08f32fe093
49 changed files with 236 additions and 236 deletions

View File

@@ -11,8 +11,8 @@ import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge import androidx.activity.enableEdgeToEdge
import androidx.compose.runtime.CompositionLocalProvider import androidx.compose.runtime.CompositionLocalProvider
import androidx.core.content.IntentCompat import androidx.core.content.IntentCompat
import com.aurora.store.compose.compositions.UI import com.aurora.store.compose.composition.UI
import com.aurora.store.compose.compositions.LocalUI import com.aurora.store.compose.composition.LocalUI
import com.aurora.store.compose.navigation.NavDisplay import com.aurora.store.compose.navigation.NavDisplay
import com.aurora.store.compose.navigation.Screen import com.aurora.store.compose.navigation.Screen
import com.aurora.store.compose.theme.AuroraTheme import com.aurora.store.compose.theme.AuroraTheme

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import android.graphics.Bitmap import android.graphics.Bitmap
import android.graphics.Color import android.graphics.Color
@@ -45,7 +45,7 @@ import com.aurora.store.R
* @param onClick Callback when the composable is clicked * @param onClick Callback when the composable is clicked
*/ */
@Composable @Composable
fun BlackListComposable( fun BlackListItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
icon: Bitmap, icon: Bitmap,
displayName: String, displayName: String,
@@ -102,8 +102,8 @@ fun BlackListComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun BlackListComposablePreview() { private fun BlackListItemPreview() {
BlackListComposable( BlackListItem(
icon = Color.GRAY.toDrawable().toBitmap(56, 56), icon = Color.GRAY.toDrawable().toBitmap(56, 56),
displayName = LocalContext.current.getString(R.string.app_name), displayName = LocalContext.current.getString(R.string.app_name),
packageName = BuildConfig.APPLICATION_ID, packageName = BuildConfig.APPLICATION_ID,

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.layout.Box import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
@@ -18,11 +18,11 @@ import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
/** /**
* Composable to display an indeterminate circular progress indicator * Composable to display an indeterminate loading indicator that fills all available screen
* @param modifier The modifier to be applied to the composable * @param modifier The modifier to be applied to the composable
*/ */
@Composable @Composable
fun ProgressComposable(modifier: Modifier = Modifier) { fun ContainedLoadingIndicator(modifier: Modifier = Modifier) {
Box( Box(
modifier = modifier modifier = modifier
.fillMaxSize() .fillMaxSize()
@@ -37,6 +37,6 @@ fun ProgressComposable(modifier: Modifier = Modifier) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ProgressComposablePreview() { private fun ContainedLoadingIndicatorPreview() {
ProgressComposable() ContainedLoadingIndicator()
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import android.text.format.DateUtils import android.text.format.DateUtils
import android.text.format.Formatter import android.text.format.Formatter
@@ -51,7 +51,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.LocalAsyncImagePreviewHandler import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.app.AnimatedAppIconComposable import com.aurora.store.compose.composable.app.AnimatedAppIcon
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.data.model.DownloadStatus import com.aurora.store.data.model.DownloadStatus
@@ -68,7 +68,7 @@ import java.util.Date
* @param onClick Callback when this composable is clicked * @param onClick Callback when this composable is clicked
*/ */
@Composable @Composable
fun DownloadComposable( fun DownloadListItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
download: Download, download: Download,
onClick: () -> Unit = {}, onClick: () -> Unit = {},
@@ -101,7 +101,7 @@ fun DownloadComposable(
horizontalArrangement = Arrangement.SpaceBetween horizontalArrangement = Arrangement.SpaceBetween
) { ) {
Row(modifier = Modifier.weight(1F),) { Row(modifier = Modifier.weight(1F),) {
AnimatedAppIconComposable( AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_medium)), modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_medium)),
iconUrl = download.iconURL, iconUrl = download.iconURL,
inProgress = download.isRunning, inProgress = download.isRunning,
@@ -242,8 +242,8 @@ fun DownloadComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun DownloadComposablePreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun DownloadListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
DownloadComposable(download = Download.fromApp(app)) DownloadListItem(download = Download.fromApp(app))
} }
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -27,7 +27,7 @@ import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
/** /**
* Composable to show error message when no apps are available for a request * Composable to show error message that fills all available screen
* @param modifier The modifier to be applied to the composable * @param modifier The modifier to be applied to the composable
* @param painter Painter to draw the icon * @param painter Painter to draw the icon
* @param message Message for error * @param message Message for error
@@ -35,7 +35,7 @@ import com.aurora.store.R
* @param onAction Callback when action button is clicked * @param onAction Callback when action button is clicked
*/ */
@Composable @Composable
fun ErrorComposable( fun Error(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
painter: Painter, painter: Painter,
message: String, message: String,
@@ -77,8 +77,8 @@ fun ErrorComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ErrorComposablePreview() { private fun ErrorPreview() {
ErrorComposable( Error(
painter = painterResource(R.drawable.ic_updates), painter = painterResource(R.drawable.ic_updates),
message = stringResource(R.string.details_no_updates), message = stringResource(R.string.details_no_updates),
actionMessage = stringResource(R.string.check_updates) actionMessage = stringResource(R.string.check_updates)

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import android.text.format.DateUtils import android.text.format.DateUtils
import androidx.compose.animation.AnimatedVisibility import androidx.compose.animation.AnimatedVisibility
@@ -59,7 +59,7 @@ import kotlinx.coroutines.launch
* @param onClear Callback when the favourite button is clicked to remove the app from favourites * @param onClear Callback when the favourite button is clicked to remove the app from favourites
*/ */
@Composable @Composable
fun FavouriteComposable( fun FavouriteListItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
favourite: Favourite, favourite: Favourite,
onClick: () -> Unit = {}, onClick: () -> Unit = {},
@@ -140,8 +140,8 @@ fun FavouriteComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun FavouriteComposablePreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun FavouriteListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
FavouriteComposable(favourite = Favourite.fromApp(app, Favourite.Mode.MANUAL)) FavouriteListItem(favourite = Favourite.fromApp(app, Favourite.Mode.MANUAL))
} }
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -35,7 +35,7 @@ import com.aurora.store.R
* @see TextDividerComposable * @see TextDividerComposable
*/ */
@Composable @Composable
fun HeaderComposable( fun Header(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
title: String, title: String,
subtitle: String? = null, subtitle: String? = null,
@@ -81,8 +81,8 @@ fun HeaderComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun HeaderComposablePreview() { private fun HeaderPreview() {
HeaderComposable( Header(
title = stringResource(R.string.details_privacy), title = stringResource(R.string.details_privacy),
subtitle = stringResource(R.string.exodus_powered), subtitle = stringResource(R.string.exodus_powered),
onClick = {} onClick = {}

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -39,7 +39,7 @@ import com.aurora.store.compose.preview.AppPreviewProvider
* @param onClick Callback when this composable is clicked * @param onClick Callback when this composable is clicked
*/ */
@Composable @Composable
fun InfoComposable( fun Info(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
title: AnnotatedString, title: AnnotatedString,
description: AnnotatedString? = null, description: AnnotatedString? = null,
@@ -78,8 +78,8 @@ fun InfoComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun InfoComposablePreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun InfoPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
InfoComposable( Info(
title = AnnotatedString(text = stringResource(R.string.details_dev_website)), title = AnnotatedString(text = stringResource(R.string.details_dev_website)),
description = AnnotatedString.fromHtml(htmlString = app.developerWebsite), description = AnnotatedString.fromHtml(htmlString = app.developerWebsite),
painter = painterResource(R.drawable.ic_network) painter = painterResource(R.drawable.ic_network)

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -39,7 +39,7 @@ import com.aurora.store.data.model.Link
* @param onClick Callback when the composable is clicked * @param onClick Callback when the composable is clicked
*/ */
@Composable @Composable
fun LinkComposable(modifier: Modifier = Modifier, link: Link, onClick: () -> Unit = {}) { fun LinkListItem(modifier: Modifier = Modifier, link: Link, onClick: () -> Unit = {}) {
Row( Row(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
@@ -83,8 +83,8 @@ fun LinkComposable(modifier: Modifier = Modifier, link: Link, onClick: () -> Uni
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun LinkComposablePreview() { private fun LinkListItemPreview() {
LinkComposable( LinkListItem(
link = Link( link = Link(
id = 0, id = 0,
title = LocalContext.current.getString(R.string.title_about), title = LocalContext.current.getString(R.string.title_about),

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.animation.animateColorAsState import androidx.compose.animation.animateColorAsState
import androidx.compose.animation.core.animateDpAsState import androidx.compose.animation.core.animateDpAsState
@@ -33,7 +33,7 @@ import com.aurora.store.R
* @param currentPage Currently displayed page number * @param currentPage Currently displayed page number
*/ */
@Composable @Composable
fun PageIndicatorComposable(modifier: Modifier = Modifier, totalPages: Int, currentPage: Int = 0) { fun PageIndicator(modifier: Modifier = Modifier, totalPages: Int, currentPage: Int = 0) {
Row( Row(
modifier = modifier.fillMaxWidth(), modifier = modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
@@ -73,6 +73,6 @@ fun PageIndicatorComposable(modifier: Modifier = Modifier, totalPages: Int, curr
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PageIndicatorComposablePreview() { private fun PageIndicatorPreview() {
PageIndicatorComposable(totalPages = 5) PageIndicator(totalPages = 5)
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -32,7 +32,7 @@ import com.aurora.store.data.model.PermissionType
* @param onAction Callback when the user clicks the action button * @param onAction Callback when the user clicks the action button
*/ */
@Composable @Composable
fun PermissionComposable( fun PermissionListItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
permission: Permission, permission: Permission,
onAction: () -> Unit = {} onAction: () -> Unit = {}
@@ -72,8 +72,8 @@ fun PermissionComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun PermissionComposablePreview() { private fun PermissionListItemPreview() {
PermissionComposable( PermissionListItem(
permission = Permission( permission = Permission(
PermissionType.STORAGE_MANAGER, PermissionType.STORAGE_MANAGER,
LocalContext.current.getString(R.string.onboarding_permission_esm), LocalContext.current.getString(R.string.onboarding_permission_esm),

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
@@ -38,7 +38,7 @@ import com.aurora.store.R
* @param onAction Callback when action button is clicked * @param onAction Callback when action button is clicked
*/ */
@Composable @Composable
fun SearchSuggestionComposable( fun SearchSuggestionListItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
searchSuggestEntry: SearchSuggestEntry, searchSuggestEntry: SearchSuggestEntry,
onClick: (query: String) -> Unit = {}, onClick: (query: String) -> Unit = {},
@@ -97,8 +97,8 @@ fun SearchSuggestionComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun SearchSuggestionComposablePreview() { private fun SearchSuggestionListItemPreview() {
SearchSuggestionComposable( SearchSuggestionListItem(
searchSuggestEntry = SearchSuggestEntry.getDefaultInstance() searchSuggestEntry = SearchSuggestEntry.getDefaultInstance()
) )
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -21,7 +21,7 @@ import com.aurora.store.R
* Composable to display a sticky header in a list * Composable to display a sticky header in a list
* @param modifier The modifier to be applied to the composable * @param modifier The modifier to be applied to the composable
* @param title Title to display * @param title Title to display
* @see HeaderComposable * @see Header
*/ */
@Composable @Composable
fun TextDividerComposable(modifier: Modifier = Modifier, title: String) { fun TextDividerComposable(modifier: Modifier = Modifier, title: String) {

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables package com.aurora.store.compose.composable
import androidx.compose.foundation.layout.RowScope import androidx.compose.foundation.layout.RowScope
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -27,7 +27,7 @@ import com.aurora.store.R
* @param actions Actions to display on the top app bar (for e.g. menu) * @param actions Actions to display on the top app bar (for e.g. menu)
*/ */
@Composable @Composable
fun TopAppBarComposable( fun TopAppBar(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
title: String? = null, title: String? = null,
navigationIcon: Painter = painterResource(R.drawable.ic_arrow_back), navigationIcon: Painter = painterResource(R.drawable.ic_arrow_back),
@@ -53,8 +53,8 @@ fun TopAppBarComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun TopAppBarComposablePreview() { private fun TopAppBarPreview() {
TopAppBarComposable( TopAppBar(
title = stringResource(R.string.title_about), title = stringResource(R.string.title_about),
onNavigateUp = {} onNavigateUp = {}
) )

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.app package com.aurora.store.compose.composable.app
import androidx.compose.animation.core.animateFloatAsState import androidx.compose.animation.core.animateFloatAsState
import androidx.compose.animation.core.tween import androidx.compose.animation.core.tween
@@ -43,7 +43,7 @@ import com.aurora.store.compose.preview.coilPreviewProvider
* @param inProgress Whether to show indeterminate or determinate progress bar * @param inProgress Whether to show indeterminate or determinate progress bar
*/ */
@Composable @Composable
fun AnimatedAppIconComposable( fun AnimatedAppIcon(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
iconUrl: String, iconUrl: String,
progress: Float = 0F, progress: Float = 0F,
@@ -99,7 +99,7 @@ private class ProgressProvider: PreviewParameterProvider<Float> {
@Composable @Composable
private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
AnimatedAppIconComposable( AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)), modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = app.iconArtwork.url iconUrl = app.iconArtwork.url
) )
@@ -110,7 +110,7 @@ private fun AnimatedAppIconPreview(@PreviewParameter(AppPreviewProvider::class)
@Composable @Composable
private fun AnimatedAppIconPreview(@PreviewParameter(ProgressProvider::class) progress: Float) { private fun AnimatedAppIconPreview(@PreviewParameter(ProgressProvider::class) progress: Float) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
AnimatedAppIconComposable( AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)), modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = "", iconUrl = "",
inProgress = true, inProgress = true,

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.app package com.aurora.store.compose.composable.app
import android.text.format.Formatter import android.text.format.Formatter
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
@@ -38,10 +38,10 @@ import com.aurora.store.compose.preview.coilPreviewProvider
* @param modifier The modifier to be applied to the composable * @param modifier The modifier to be applied to the composable
* @param app [App] to display * @param app [App] to display
* @param onClick Callback when the composable is clicked * @param onClick Callback when the composable is clicked
* @see AppListComposable * @see LargeAppListItem
*/ */
@Composable @Composable
fun AppComposable(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {}) { fun AppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {}) {
val context = LocalContext.current val context = LocalContext.current
Column( Column(
@@ -80,8 +80,8 @@ fun AppComposable(modifier: Modifier = Modifier, app: App, onClick: () -> Unit =
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AppComposablePreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
AppComposable(app = app) AppListItem(app = app)
} }
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.app package com.aurora.store.compose.composable.app
import androidx.compose.foundation.clickable import androidx.compose.foundation.clickable
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
@@ -41,10 +41,10 @@ import com.aurora.store.util.CommonUtil
* @param modifier The modifier to be applied to the composable * @param modifier The modifier to be applied to the composable
* @param app [App] to display * @param app [App] to display
* @param onClick Callback when the composable is clicked * @param onClick Callback when the composable is clicked
* @see AppComposable * @see AppListItem
*/ */
@Composable @Composable
fun AppListComposable(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {}) { fun LargeAppListItem(modifier: Modifier = Modifier, app: App, onClick: () -> Unit = {}) {
Row( Row(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
@@ -85,9 +85,9 @@ fun AppListComposable(modifier: Modifier = Modifier, app: App, onClick: () -> Un
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
fun AppListComposablePreview(@PreviewParameter(AppPreviewProvider::class) app: App) { fun LargeAppListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
AppListComposable(app = app) LargeAppListItem(app = app)
} }
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.app package com.aurora.store.compose.composable.app
import androidx.compose.material3.FilterChip import androidx.compose.material3.FilterChip
import androidx.compose.material3.Icon import androidx.compose.material3.Icon
@@ -25,7 +25,7 @@ import com.aurora.store.R
* @param onClick Callback when this composable is clicked * @param onClick Callback when this composable is clicked
*/ */
@Composable @Composable
fun AppTagComposable( fun TagListItem(
modifier: Modifier = Modifier, modifier: Modifier = Modifier,
label: String, label: String,
painter: Painter, painter: Painter,
@@ -42,8 +42,8 @@ fun AppTagComposable(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AppTagComposablePreview() { private fun TagListItemPreview() {
AppTagComposable( TagListItem(
label = stringResource(R.string.details_free), label = stringResource(R.string.details_free),
painter = painterResource(R.drawable.ic_paid) painter = painterResource(R.drawable.ic_paid)
) )

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.details package com.aurora.store.compose.composable.details
import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.Column
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
@@ -23,7 +23,7 @@ import com.aurora.store.data.model.ExodusTracker
* @param tracker Tracker to display details about * @param tracker Tracker to display details about
*/ */
@Composable @Composable
fun ExodusComposable(modifier: Modifier = Modifier, tracker: ExodusTracker) { fun ExodusListItem(modifier: Modifier = Modifier, tracker: ExodusTracker) {
Column(modifier = modifier.padding(dimensionResource(R.dimen.padding_small))) { Column(modifier = modifier.padding(dimensionResource(R.dimen.padding_small))) {
Text( Text(
text = tracker.name, text = tracker.name,
@@ -48,8 +48,8 @@ fun ExodusComposable(modifier: Modifier = Modifier, tracker: ExodusTracker) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ExodusComposablePreview() { private fun ExodusListItemPreview() {
ExodusComposable( 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.android.gms.analytics.|com.google.analytics.",

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.details package com.aurora.store.compose.composable.details
import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.Row import androidx.compose.foundation.layout.Row
@@ -28,7 +28,7 @@ import com.aurora.store.R
* @param rating Current rating, for e.g. 0.3 * @param rating Current rating, for e.g. 0.3
*/ */
@Composable @Composable
fun RatingComposable(modifier: Modifier = Modifier, label: String, rating: Float) { fun RatingListItem(modifier: Modifier = Modifier, label: String, rating: Float) {
Row( Row(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
@@ -52,6 +52,6 @@ fun RatingComposable(modifier: Modifier = Modifier, label: String, rating: Float
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun RatingComposablePreview() { private fun RatingListItemPreview() {
RatingComposable(label = "5", rating = 0.5F) RatingListItem(label = "5", rating = 0.5F)
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.details package com.aurora.store.compose.composable.details
import android.text.format.DateUtils import android.text.format.DateUtils
import android.widget.RatingBar import android.widget.RatingBar
@@ -41,7 +41,7 @@ import com.aurora.store.compose.preview.coilPreviewProvider
* @param review [Review] about an app * @param review [Review] about an app
*/ */
@Composable @Composable
fun ReviewComposable(modifier: Modifier = Modifier, review: Review) { fun ReviewListItem(modifier: Modifier = Modifier, review: Review) {
Row( Row(
modifier = modifier modifier = modifier
.fillMaxWidth() .fillMaxWidth()
@@ -97,8 +97,8 @@ fun ReviewComposable(modifier: Modifier = Modifier, review: Review) {
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun ReviewComposablePreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) { private fun ReviewListItemPreview(@PreviewParameter(ReviewPreviewProvider::class) review: Review) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
ReviewComposable(review = review) ReviewListItem(review = review)
} }
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.composables.details package com.aurora.store.compose.composable.details
import androidx.compose.foundation.Image import androidx.compose.foundation.Image
import androidx.compose.foundation.layout.aspectRatio import androidx.compose.foundation.layout.aspectRatio
@@ -33,7 +33,7 @@ import com.aurora.store.compose.preview.coilPreviewProvider
* @param url URL of the screenshot * @param url URL of the screenshot
*/ */
@Composable @Composable
fun ScreenshotComposable(modifier: Modifier = Modifier, url: String) { fun ScreenshotListItem(modifier: Modifier = Modifier, url: String) {
// See https://coil-kt.github.io/coil/compose/#rememberasyncimagepainter // See https://coil-kt.github.io/coil/compose/#rememberasyncimagepainter
val sizeResolver = rememberConstraintsSizeResolver() val sizeResolver = rememberConstraintsSizeResolver()
val painter = rememberAsyncImagePainter( val painter = rememberAsyncImagePainter(
@@ -61,8 +61,8 @@ fun ScreenshotComposable(modifier: Modifier = Modifier, url: String) {
@Preview @Preview
@Composable @Composable
private fun ScreenshotComposablePreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun ScreenshotListItemPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) { CompositionLocalProvider(LocalAsyncImagePreviewHandler provides coilPreviewProvider) {
ScreenshotComposable(url = app.screenshots.firstOrNull()?.url ?: "") ScreenshotListItem(url = app.screenshots.firstOrNull()?.url ?: "")
} }
} }

View File

@@ -3,7 +3,7 @@
* SPDX-License-Identifier: GPL-3.0-or-later * SPDX-License-Identifier: GPL-3.0-or-later
*/ */
package com.aurora.store.compose.compositions package com.aurora.store.compose.composition
import androidx.compose.runtime.staticCompositionLocalOf import androidx.compose.runtime.staticCompositionLocalOf

View File

@@ -39,8 +39,8 @@ import com.aurora.extensions.browse
import com.aurora.store.BuildConfig.VERSION_CODE import com.aurora.store.BuildConfig.VERSION_CODE
import com.aurora.store.BuildConfig.VERSION_NAME import com.aurora.store.BuildConfig.VERSION_NAME
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.LinkComposable import com.aurora.store.compose.composable.LinkListItem
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.data.model.Link import com.aurora.store.data.model.Link
@Composable @Composable
@@ -91,7 +91,7 @@ private fun ScreenContent(onNavigateUp: () -> Unit = {}, onAboutAurora: () -> Un
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = stringResource(R.string.title_about), title = stringResource(R.string.title_about),
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
) )
@@ -109,7 +109,7 @@ private fun ScreenContent(onNavigateUp: () -> Unit = {}, onAboutAurora: () -> Un
} }
} }
items(items = links, key = { item -> item.id }) { link -> items(items = links, key = { item -> item.id }) { link ->
LinkComposable( LinkListItem(
link = link, link = link,
onClick = { onClick = {
when (link.id) { when (link.id) {

View File

@@ -46,7 +46,7 @@ import com.aurora.Constants.URL_LICENSE
import com.aurora.Constants.URL_TOS import com.aurora.Constants.URL_TOS
import com.aurora.extensions.browse import com.aurora.extensions.browse
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.data.providers.AccountProvider import com.aurora.store.data.providers.AccountProvider
import com.aurora.store.viewmodel.accounts.AccountsViewModel import com.aurora.store.viewmodel.accounts.AccountsViewModel
@@ -106,7 +106,7 @@ private fun ScreenContent(
) { ) {
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = stringResource(R.string.title_account_manager), title = stringResource(R.string.title_account_manager),
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
) )

View File

@@ -45,7 +45,7 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
import com.aurora.Constants import com.aurora.Constants
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.BlackListComposable import com.aurora.store.compose.composable.BlackListItem
import com.aurora.store.compose.ui.blacklist.menu.BlacklistMenu 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
@@ -215,7 +215,7 @@ private fun ScreenContent(
items(items = packages ?: emptyList(), key = { p -> p.packageName.hashCode() }) { pkg -> items(items = packages ?: emptyList(), key = { p -> p.packageName.hashCode() }) { pkg ->
val isBlacklisted = isPackageBlacklisted(pkg.packageName) val isBlacklisted = isPackageBlacklisted(pkg.packageName)
val isFiltered = isPackageFiltered(pkg) val isFiltered = isPackageFiltered(pkg)
BlackListComposable( 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,

View File

@@ -41,9 +41,9 @@ import com.aurora.extensions.isTAndAbove
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.BuildConfig import com.aurora.store.BuildConfig
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.PermissionComposable import com.aurora.store.compose.composable.PermissionListItem
import com.aurora.store.compose.composables.TextDividerComposable import com.aurora.store.compose.composable.TextDividerComposable
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.data.model.Permission import com.aurora.store.data.model.Permission
import com.aurora.store.data.model.PermissionType import com.aurora.store.data.model.PermissionType
import com.aurora.store.data.providers.PermissionProvider.Companion.isGranted import com.aurora.store.data.providers.PermissionProvider.Companion.isGranted
@@ -163,7 +163,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
if (!isOnboarding) { if (!isOnboarding) {
TopAppBarComposable( TopAppBar(
title = pluralStringResource(R.plurals.permissions_required, permissions.size), title = pluralStringResource(R.plurals.permissions_required, permissions.size),
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -191,7 +191,7 @@ private fun ScreenContent(
} }
items(items = value, key = { p -> p.type.name }) { permission -> items(items = value, key = { p -> p.type.name }) { permission ->
PermissionComposable( PermissionListItem(
permission = permission, permission = permission,
onAction = { requestPermission(permission.type) } onAction = { requestPermission(permission.type) }
) )

View File

@@ -55,11 +55,11 @@ 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.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.ErrorComposable import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.ProgressComposable import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composables.app.AppListComposable import com.aurora.store.compose.composable.app.LargeAppListItem
import com.aurora.store.compose.navigation.Screen import com.aurora.store.compose.navigation.Screen
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
@@ -163,9 +163,9 @@ fun AppDetailsScreen(
@Composable @Composable
private fun ScreenContentLoading(onNavigateUp: () -> Unit = {}) { private fun ScreenContentLoading(onNavigateUp: () -> Unit = {}) {
Scaffold( Scaffold(
topBar = { TopAppBarComposable(onNavigateUp = onNavigateUp) } topBar = { TopAppBar(onNavigateUp = onNavigateUp) }
) { paddingValues -> ) { paddingValues ->
ProgressComposable(modifier = Modifier.padding(paddingValues)) ContainedLoadingIndicator(modifier = Modifier.padding(paddingValues))
} }
} }
@@ -175,9 +175,9 @@ private fun ScreenContentLoading(onNavigateUp: () -> Unit = {}) {
@Composable @Composable
private fun ScreenContentError(onNavigateUp: () -> Unit = {}, message: String? = null) { private fun ScreenContentError(onNavigateUp: () -> Unit = {}, message: String? = null) {
Scaffold( Scaffold(
topBar = { TopAppBarComposable(onNavigateUp = onNavigateUp) } topBar = { TopAppBar(onNavigateUp = onNavigateUp) }
) { paddingValues -> ) { paddingValues ->
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_apps_outage), painter = painterResource(R.drawable.ic_apps_outage),
message = message ?: stringResource(R.string.toast_app_unavailable) message = message ?: stringResource(R.string.toast_app_unavailable)
@@ -330,7 +330,7 @@ private fun ScreenContentApp(
fun MainPane() { fun MainPane() {
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
onNavigateUp = onNavigateUp, onNavigateUp = onNavigateUp,
actions = { if (shouldShowMenuOnMainPane) SetupMenu() } actions = { if (shouldShowMenuOnMainPane) SetupMenu() }
) )
@@ -354,7 +354,7 @@ private fun ScreenContentApp(
Tags(app = app) Tags(app = app)
Changelog(changelog = app.changes) Changelog(changelog = app.changes)
HeaderComposable( Header(
title = stringResource(R.string.details_more_about_app), title = stringResource(R.string.details_more_about_app),
subtitle = app.shortDescription, subtitle = app.shortDescription,
onClick = { showExtraPane(ExtraScreen.More) } onClick = { showExtraPane(ExtraScreen.More) }
@@ -380,7 +380,7 @@ private fun ScreenContentApp(
Compatibility(needsGms = app.requiresGMS(), plexusScores = plexusScores) Compatibility(needsGms = app.requiresGMS(), plexusScores = plexusScores)
HeaderComposable( Header(
title = stringResource(R.string.details_permission), title = stringResource(R.string.details_permission),
subtitle = if (app.permissions.isNotEmpty()) { subtitle = if (app.permissions.isNotEmpty()) {
stringResource(R.string.permissions_requested, app.permissions.size) stringResource(R.string.permissions_requested, app.permissions.size)
@@ -420,7 +420,7 @@ private fun ScreenContentApp(
fun SupportingPane() { fun SupportingPane() {
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable(actions = { if (!shouldShowMenuOnMainPane) SetupMenu() }) TopAppBar(actions = { if (!shouldShowMenuOnMainPane) SetupMenu() })
} }
) { paddingValues -> ) { paddingValues ->
Column( Column(
@@ -436,7 +436,7 @@ private fun ScreenContentApp(
painter = painterResource(R.drawable.ic_suggestions), painter = painterResource(R.drawable.ic_suggestions),
contentDescription = null contentDescription = null
) )
HeaderComposable(title = stringResource(R.string.pref_ui_similar_apps)) Header(title = stringResource(R.string.pref_ui_similar_apps))
} }
LazyColumn( LazyColumn(
modifier = Modifier modifier = Modifier
@@ -444,7 +444,7 @@ private fun ScreenContentApp(
.padding(vertical = dimensionResource(R.dimen.padding_medium)) .padding(vertical = dimensionResource(R.dimen.padding_medium))
) { ) {
items(items = suggestions, key = { item -> item.id }) { app -> items(items = suggestions, key = { item -> item.id }) { app ->
AppListComposable( LargeAppListItem(
app = app, app = app,
onClick = { onNavigateToAppDetails(app.packageName) } onClick = { onNavigateToAppDetails(app.packageName) }
) )

View File

@@ -28,9 +28,9 @@ import com.aurora.extensions.browse
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composables.details.ExodusComposable import com.aurora.store.compose.composable.details.ExodusListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.data.model.ExodusTracker import com.aurora.store.data.model.ExodusTracker
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -80,7 +80,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -94,7 +94,7 @@ private fun ScreenContent(
.padding(horizontal = dimensionResource(R.dimen.padding_medium)) .padding(horizontal = dimensionResource(R.dimen.padding_medium))
) { ) {
stickyHeader { stickyHeader {
HeaderComposable( Header(
title = stringResource(R.string.exodus_report_trackers, trackers.size, version), title = stringResource(R.string.exodus_report_trackers, trackers.size, version),
subtitle = stringResource(R.string.exodus_view_report), subtitle = stringResource(R.string.exodus_view_report),
onClick = { context.browse(EXODUS_REPORT_URL + id) } onClick = { context.browse(EXODUS_REPORT_URL + id) }
@@ -102,7 +102,7 @@ private fun ScreenContent(
} }
items(items = trackers, key = { item -> item.id }) { tracker -> items(items = trackers, key = { item -> item.id }) { tracker ->
ExodusComposable(tracker = tracker) ExodusListItem(tracker = tracker)
} }
} }
} }

View File

@@ -55,8 +55,8 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -126,7 +126,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
modifier = Modifier.imePadding(), modifier = Modifier.imePadding(),
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -145,7 +145,7 @@ private fun ScreenContent(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) { ) {
InfoComposable( Info(
painter = painterResource(R.drawable.ic_download_manager), painter = painterResource(R.drawable.ic_download_manager),
title = AnnotatedString(text = stringResource(R.string.manual_download_hint)) title = AnnotatedString(text = stringResource(R.string.manual_download_hint))
) )

View File

@@ -36,10 +36,10 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composables.app.AppComposable import com.aurora.store.compose.composable.app.AppListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@@ -85,7 +85,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -99,7 +99,7 @@ private fun ScreenContent(
.verticalScroll(rememberScrollState()), .verticalScroll(rememberScrollState()),
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium)) verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) { ) {
HeaderComposable(title = stringResource(R.string.details_description)) Header(title = stringResource(R.string.details_description))
Text( Text(
modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.padding_medium)), modifier = Modifier.padding(horizontal = dimensionResource(R.dimen.padding_medium)),
text = AnnotatedString.fromHtml( text = AnnotatedString.fromHtml(
@@ -128,15 +128,15 @@ private fun AppDependencies(
dependencies: List<App>, dependencies: List<App>,
onNavigateToAppDetails: (packageName: String) -> Unit onNavigateToAppDetails: (packageName: String) -> Unit
) { ) {
HeaderComposable(title = stringResource(R.string.details_dependencies)) Header(title = stringResource(R.string.details_dependencies))
if (dependencies.isEmpty()) { if (dependencies.isEmpty()) {
InfoComposable( Info(
title = AnnotatedString(text = stringResource(R.string.details_no_dependencies)) title = AnnotatedString(text = stringResource(R.string.details_no_dependencies))
) )
} else { } else {
LazyRow(modifier = Modifier.fillMaxWidth()) { LazyRow(modifier = Modifier.fillMaxWidth()) {
items(items = dependencies, key = { item -> item.id }) { app -> items(items = dependencies, key = { item -> item.id }) { app ->
AppComposable( AppListItem(
app = app, app = app,
onClick = { onNavigateToAppDetails(app.packageName) } onClick = { onNavigateToAppDetails(app.packageName) }
) )
@@ -150,22 +150,22 @@ private fun AppDependencies(
*/ */
@Composable @Composable
private fun AppInfoMore(app: App) { private fun AppInfoMore(app: App) {
HeaderComposable(title = stringResource(R.string.details_more_info)) Header(title = stringResource(R.string.details_more_info))
InfoComposable( Info(
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_more_package_name) text = stringResource(R.string.details_more_package_name)
), ),
description = AnnotatedString(text = app.packageName) description = AnnotatedString(text = app.packageName)
) )
InfoComposable( Info(
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_more_target_api) text = stringResource(R.string.details_more_target_api)
), ),
description = AnnotatedString(text = "API ${app.targetSdk}") description = AnnotatedString(text = "API ${app.targetSdk}")
) )
InfoComposable( Info(
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_more_content_rating) text = stringResource(R.string.details_more_content_rating)
), ),
@@ -173,7 +173,7 @@ private fun AppInfoMore(app: App) {
) )
app.appInfo.appInfoMap.forEach { (title, subtitle) -> app.appInfo.appInfoMap.forEach { (title, subtitle) ->
InfoComposable( Info(
title = AnnotatedString( title = AnnotatedString(
text = title.replace("_", " ") text = title.replace("_", " ")
.lowercase(Locale.getDefault()) .lowercase(Locale.getDefault())

View File

@@ -29,8 +29,8 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.PermissionViewModel import com.aurora.store.viewmodel.details.PermissionViewModel
@@ -75,7 +75,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -93,7 +93,7 @@ private fun ScreenContent(
// Bail out if this is not a known permission for the OS // Bail out if this is not a known permission for the OS
val permissionInfo = permissionsInfo.getValue(permission) ?: return@items val permissionInfo = permissionsInfo.getValue(permission) ?: return@items
InfoComposable( Info(
title = AnnotatedString( title = AnnotatedString(
text = permissionInfo.loadLabel(packageManager) text = permissionInfo.loadLabel(packageManager)
.toString() .toString()

View File

@@ -43,10 +43,10 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.ErrorComposable import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composables.ProgressComposable import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composables.details.ReviewComposable import com.aurora.store.compose.composable.details.ReviewListItem
import com.aurora.store.compose.preview.ReviewPreviewProvider import com.aurora.store.compose.preview.ReviewPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.compose.preview.emptyPagingItems import com.aurora.store.compose.preview.emptyPagingItems
@@ -95,7 +95,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -111,10 +111,10 @@ private fun ScreenContent(
FilterHeader { filter -> onFilter(filter) } FilterHeader { filter -> onFilter(filter) }
when (reviews.loadState.refresh) { when (reviews.loadState.refresh) {
is LoadState.Loading -> ProgressComposable() is LoadState.Loading -> ContainedLoadingIndicator()
is LoadState.Error -> { is LoadState.Error -> {
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_disclaimer), painter = painterResource(R.drawable.ic_disclaimer),
message = stringResource(R.string.error) message = stringResource(R.string.error)
@@ -127,7 +127,7 @@ private fun ScreenContent(
count = reviews.itemCount, count = reviews.itemCount,
key = reviews.itemKey { it.commentId } key = reviews.itemKey { it.commentId }
) { index -> ) { index ->
reviews[index]?.let { review -> ReviewComposable(review = review) } reviews[index]?.let { review -> ReviewListItem(review = review) }
} }
} }
} }

View File

@@ -25,8 +25,8 @@ import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.extensions.isWindowCompact import com.aurora.extensions.isWindowCompact
import com.aurora.gplayapi.data.models.Artwork import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composables.details.ScreenshotComposable import com.aurora.store.compose.composable.details.ScreenshotListItem
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
@Composable @Composable
@@ -69,7 +69,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -83,7 +83,7 @@ private fun ScreenContent(
state = pagerState state = pagerState
) { page -> ) { page ->
val artwork = screenshots[page] val artwork = screenshots[page]
ScreenshotComposable( ScreenshotListItem(
modifier = Modifier.fillMaxSize(), modifier = Modifier.fillMaxSize(),
url = "${artwork.url}=rw-w${displayMetrics.widthPixels}-v1-e15" url = "${artwork.url}=rw-w${displayMetrics.widthPixels}-v1-e15"
) )

View File

@@ -25,7 +25,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
/** /**
@@ -35,7 +35,7 @@ import com.aurora.store.compose.preview.AppPreviewProvider
*/ */
@Composable @Composable
fun Changelog(changelog: String) { fun Changelog(changelog: String) {
HeaderComposable(title = stringResource(R.string.details_changelog)) Header(title = stringResource(R.string.details_changelog))
Box( Box(
modifier = Modifier modifier = Modifier
.fillMaxWidth() .fillMaxWidth()

View File

@@ -14,8 +14,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.data.model.Scores import com.aurora.store.data.model.Scores
/** /**
@@ -26,13 +26,13 @@ import com.aurora.store.data.model.Scores
*/ */
@Composable @Composable
fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) { fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
HeaderComposable( 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) {
InfoComposable( Info(
painter = painterResource(R.drawable.ic_menu_about), painter = painterResource(R.drawable.ic_menu_about),
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_compatibility_gms_not_required_title) text = stringResource(R.string.details_compatibility_gms_not_required_title)
@@ -46,7 +46,7 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
return return
} }
InfoComposable( Info(
painter = painterResource(R.drawable.ic_menu_about), painter = painterResource(R.drawable.ic_menu_about),
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_compatibility_gms_required_title) text = stringResource(R.string.details_compatibility_gms_required_title)
@@ -61,7 +61,7 @@ fun Compatibility(needsGms: Boolean, plexusScores: Scores? = null) {
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) ->
InfoComposable( Info(
painter = painterResource(R.drawable.ic_android), painter = painterResource(R.drawable.ic_android),
title = AnnotatedString(text = stringResource(title)), title = AnnotatedString(text = stringResource(title)),
description = AnnotatedString( description = AnnotatedString(

View File

@@ -21,8 +21,8 @@ import com.aurora.gplayapi.data.models.datasafety.Entry
import com.aurora.gplayapi.data.models.datasafety.EntryType import com.aurora.gplayapi.data.models.datasafety.EntryType
import com.aurora.gplayapi.data.models.datasafety.Report import com.aurora.gplayapi.data.models.datasafety.Report
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
/** /**
@@ -35,7 +35,7 @@ import com.aurora.store.compose.preview.AppPreviewProvider
fun DataSafety(report: Report, privacyPolicyUrl: String) { fun DataSafety(report: Report, privacyPolicyUrl: String) {
val context = LocalContext.current val context = LocalContext.current
HeaderComposable( Header(
title = stringResource(R.string.details_data_safety_title), title = stringResource(R.string.details_data_safety_title),
subtitle = stringResource(R.string.details_data_safety_subtitle), subtitle = stringResource(R.string.details_data_safety_subtitle),
onClick = { context.browse(privacyPolicyUrl) } onClick = { context.browse(privacyPolicyUrl) }
@@ -44,7 +44,7 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
report.entries.groupBy { it.type }.forEach { (type, entries) -> report.entries.groupBy { it.type }.forEach { (type, entries) ->
when (type) { when (type) {
EntryType.DATA_COLLECTED -> { EntryType.DATA_COLLECTED -> {
InfoComposable( Info(
painter = painterResource(R.drawable.ic_cloud_upload), painter = painterResource(R.drawable.ic_cloud_upload),
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_data_safety_collect) text = stringResource(R.string.details_data_safety_collect)
@@ -59,7 +59,7 @@ fun DataSafety(report: Report, privacyPolicyUrl: String) {
} }
EntryType.DATA_SHARED -> { EntryType.DATA_SHARED -> {
InfoComposable( Info(
painter = painterResource(R.drawable.ic_share), painter = painterResource(R.drawable.ic_share),
title = AnnotatedString( title = AnnotatedString(
text = stringResource(R.string.details_data_safety_shared) text = stringResource(R.string.details_data_safety_shared)

View File

@@ -28,7 +28,7 @@ import androidx.compose.ui.tooling.preview.PreviewParameter
import coil3.compose.LocalAsyncImagePreviewHandler import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.app.AnimatedAppIconComposable import com.aurora.store.compose.composable.app.AnimatedAppIcon
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
@@ -55,7 +55,7 @@ fun Details(
val timeRemaining = if (state is AppState.Downloading) state.timeRemaining else 0 val timeRemaining = if (state is AppState.Downloading) state.timeRemaining else 0
Row(modifier = Modifier.fillMaxWidth()) { Row(modifier = Modifier.fillMaxWidth()) {
AnimatedAppIconComposable( AnimatedAppIcon(
modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)), modifier = Modifier.requiredSize(dimensionResource(R.dimen.icon_size_large)),
iconUrl = app.iconArtwork.url, iconUrl = app.iconArtwork.url,
inProgress = state.inProgress(), inProgress = state.inProgress(),

View File

@@ -21,8 +21,8 @@ import com.aurora.extensions.copyToClipBoard
import com.aurora.extensions.mailTo import com.aurora.extensions.mailTo
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
/** /**
@@ -36,10 +36,10 @@ import com.aurora.store.compose.preview.AppPreviewProvider
fun DeveloperDetails(address: String, website: String, email: String) { fun DeveloperDetails(address: String, website: String, email: String) {
val context = LocalContext.current val context = LocalContext.current
HeaderComposable(title = stringResource(R.string.details_dev_details)) Header(title = stringResource(R.string.details_dev_details))
Column { Column {
if (website.isNotBlank()) { if (website.isNotBlank()) {
InfoComposable( Info(
title = AnnotatedString(text = stringResource(R.string.details_dev_website)), title = AnnotatedString(text = stringResource(R.string.details_dev_website)),
description = AnnotatedString(text = website), description = AnnotatedString(text = website),
painter = painterResource(R.drawable.ic_network), painter = painterResource(R.drawable.ic_network),
@@ -48,7 +48,7 @@ fun DeveloperDetails(address: String, website: String, email: String) {
} }
if (email.isNotBlank()) { if (email.isNotBlank()) {
InfoComposable( Info(
title = AnnotatedString(text = stringResource(R.string.details_dev_email)), title = AnnotatedString(text = stringResource(R.string.details_dev_email)),
description = AnnotatedString(text = email), description = AnnotatedString(text = email),
painter = painterResource(R.drawable.ic_mail), painter = painterResource(R.drawable.ic_mail),
@@ -57,7 +57,7 @@ fun DeveloperDetails(address: String, website: String, email: String) {
} }
if (address.isNotBlank()) { if (address.isNotBlank()) {
InfoComposable( Info(
title = AnnotatedString(text = stringResource(R.string.details_dev_address)), title = AnnotatedString(text = stringResource(R.string.details_dev_address)),
description = AnnotatedString.fromHtml(htmlString = address), description = AnnotatedString.fromHtml(htmlString = address),
painter = painterResource(R.drawable.ic_person_location), painter = painterResource(R.drawable.ic_person_location),

View File

@@ -14,8 +14,8 @@ import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.data.model.Report import com.aurora.store.data.model.Report
/** /**
@@ -26,7 +26,7 @@ import com.aurora.store.data.model.Report
*/ */
@Composable @Composable
fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) { fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
HeaderComposable( Header(
title = stringResource(R.string.details_privacy), title = stringResource(R.string.details_privacy),
subtitle = stringResource(R.string.exodus_powered), subtitle = stringResource(R.string.exodus_powered),
onClick = onNavigateToDetailsExodus onClick = onNavigateToDetailsExodus
@@ -42,7 +42,7 @@ fun Privacy(report: Report?, onNavigateToDetailsExodus: (() -> Unit)? = null) {
} }
} }
InfoComposable( Info(
painter = painterResource(R.drawable.ic_visibility), painter = painterResource(R.drawable.ic_visibility),
title = AnnotatedString(text = reportStatus), title = AnnotatedString(text = reportStatus),
description = AnnotatedString(text = stringResource(R.string.exodus_tracker_desc)) description = AnnotatedString(text = stringResource(R.string.exodus_tracker_desc))

View File

@@ -35,10 +35,10 @@ import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Rating import com.aurora.gplayapi.data.models.Rating
import com.aurora.gplayapi.data.models.Review import com.aurora.gplayapi.data.models.Review
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.PageIndicatorComposable import com.aurora.store.compose.composable.PageIndicator
import com.aurora.store.compose.composables.details.RatingComposable import com.aurora.store.compose.composable.details.RatingListItem
import com.aurora.store.compose.composables.details.ReviewComposable import com.aurora.store.compose.composable.details.ReviewListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import java.util.Locale import java.util.Locale
@@ -74,7 +74,7 @@ fun RatingAndReviews(
} }
} }
HeaderComposable( Header(
title = stringResource(R.string.details_ratings), title = stringResource(R.string.details_ratings),
onClick = onNavigateToDetailsReview onClick = onNavigateToDetailsReview
) )
@@ -108,7 +108,7 @@ fun RatingAndReviews(
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small)) verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small))
) { ) {
stars.reversed().fastForEach { star -> stars.reversed().fastForEach { star ->
RatingComposable( RatingListItem(
label = (stars.indexOf(star) + 1).toString(), label = (stars.indexOf(star) + 1).toString(),
rating = star / stars.sum() rating = star / stars.sum()
) )
@@ -130,11 +130,11 @@ fun RatingAndReviews(
.background(color = MaterialTheme.colorScheme.surfaceContainer) .background(color = MaterialTheme.colorScheme.surfaceContainer)
.requiredHeight(dimensionResource(R.dimen.review_height)) .requiredHeight(dimensionResource(R.dimen.review_height))
) { ) {
ReviewComposable(review = featuredReviews[page]) ReviewListItem(review = featuredReviews[page])
} }
} }
PageIndicatorComposable( PageIndicator(
totalPages = featuredReviews.size, totalPages = featuredReviews.size,
currentPage = pagerState.currentPage currentPage = pagerState.currentPage
) )

View File

@@ -23,7 +23,7 @@ import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.gplayapi.data.models.Artwork import com.aurora.gplayapi.data.models.Artwork
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.details.ScreenshotComposable import com.aurora.store.compose.composable.details.ScreenshotListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.compose.preview.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
@@ -37,7 +37,7 @@ import com.aurora.store.compose.preview.coilPreviewProvider
fun Screenshots(screenshots: List<Artwork>, onNavigateToScreenshot: (index: Int) -> Unit = {}) { fun Screenshots(screenshots: List<Artwork>, onNavigateToScreenshot: (index: Int) -> Unit = {}) {
LazyRow(horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small))) { LazyRow(horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small))) {
items(items = screenshots, key = { artwork -> artwork.url }) { artwork -> items(items = screenshots, key = { artwork -> artwork.url }) { artwork ->
ScreenshotComposable( ScreenshotListItem(
modifier = Modifier modifier = Modifier
.height(dimensionResource(R.dimen.screenshot_height)) .height(dimensionResource(R.dimen.screenshot_height))
.clip(RoundedCornerShape(dimensionResource(R.dimen.radius_small))) .clip(RoundedCornerShape(dimensionResource(R.dimen.radius_small)))

View File

@@ -19,7 +19,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.app.AppTagComposable import com.aurora.store.compose.composable.app.TagListItem
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.util.CommonUtil import com.aurora.store.util.CommonUtil
@@ -62,7 +62,7 @@ fun Tags(app: App) {
horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.padding_medium)) horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.padding_medium))
) { ) {
items(items = tags.keys.toList()) { label -> items(items = tags.keys.toList()) { label ->
AppTagComposable(label = label!!, painter = painterResource(tags.getValue(label))) TagListItem(label = label!!, painter = painterResource(tags.getValue(label)))
} }
} }
} }

View File

@@ -23,8 +23,8 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.HeaderComposable import com.aurora.store.compose.composable.Header
import com.aurora.store.compose.composables.InfoComposable import com.aurora.store.compose.composable.Info
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
/** /**
@@ -36,13 +36,13 @@ import com.aurora.store.compose.preview.AppPreviewProvider
*/ */
@Composable @Composable
fun Testing(isSubscribed: Boolean, onTestingSubscriptionChange: (subscribe: Boolean) -> Unit = {}) { fun Testing(isSubscribed: Boolean, onTestingSubscriptionChange: (subscribe: Boolean) -> Unit = {}) {
HeaderComposable(title = stringResource(R.string.details_beta)) Header(title = stringResource(R.string.details_beta))
Row( Row(
modifier = Modifier.fillMaxWidth(), modifier = Modifier.fillMaxWidth(),
verticalAlignment = Alignment.CenterVertically, verticalAlignment = Alignment.CenterVertically,
horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small)) horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_small))
) { ) {
InfoComposable( Info(
modifier = Modifier.weight(1F), modifier = Modifier.weight(1F),
painter = painterResource(R.drawable.ic_experiment), painter = painterResource(R.drawable.ic_experiment),
title = AnnotatedString( title = AnnotatedString(

View File

@@ -23,7 +23,7 @@ import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.AppPreviewProvider import com.aurora.store.compose.preview.AppPreviewProvider
import com.aurora.store.data.model.AppState import com.aurora.store.data.model.AppState
@@ -103,7 +103,7 @@ fun AppDetailsMenu(
@Preview(showBackground = true) @Preview(showBackground = true)
@Composable @Composable
private fun AppDetailsMenuPreview(@PreviewParameter(AppPreviewProvider::class) app: App) { private fun AppDetailsMenuPreview(@PreviewParameter(AppPreviewProvider::class) app: App) {
TopAppBarComposable( TopAppBar(
actions = { actions = {
AppDetailsMenu( AppDetailsMenu(
isInstalled = app.isInstalled, isInstalled = app.isInstalled,

View File

@@ -30,10 +30,10 @@ import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.extensions.adaptiveNavigationIcon import com.aurora.extensions.adaptiveNavigationIcon
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.ErrorComposable import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composables.ProgressComposable import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.composables.app.AppListComposable 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.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.viewmodel.details.DevProfileViewModel import com.aurora.store.viewmodel.details.DevProfileViewModel
@@ -88,7 +88,7 @@ private fun ScreenContent(
) { ) {
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = topAppBarTitle, title = topAppBarTitle,
navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon, navigationIcon = windowAdaptiveInfo.adaptiveNavigationIcon,
onNavigateUp = onNavigateUp onNavigateUp = onNavigateUp
@@ -96,10 +96,10 @@ private fun ScreenContent(
} }
) { paddingValues -> ) { paddingValues ->
when (apps.loadState.refresh) { when (apps.loadState.refresh) {
is LoadState.Loading -> ProgressComposable() is LoadState.Loading -> ContainedLoadingIndicator()
is LoadState.Error -> { is LoadState.Error -> {
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_disclaimer), painter = painterResource(R.drawable.ic_disclaimer),
message = stringResource(R.string.error) message = stringResource(R.string.error)
@@ -115,7 +115,7 @@ private fun ScreenContent(
) { ) {
items(count = apps.itemCount, key = apps.itemKey { it.id }) { index -> items(count = apps.itemCount, key = apps.itemKey { it.id }) { index ->
apps[index]?.let { app -> apps[index]?.let { app ->
AppListComposable( LargeAppListItem(
app = app, app = app,
onClick = { onNavigateToAppDetails(app.packageName) } onClick = { onNavigateToAppDetails(app.packageName) }
) )

View File

@@ -30,10 +30,10 @@ import androidx.paging.compose.collectAsLazyPagingItems
import androidx.paging.compose.itemKey import androidx.paging.compose.itemKey
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.DownloadComposable import com.aurora.store.compose.composable.DownloadListItem
import com.aurora.store.compose.composables.ErrorComposable import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composables.ProgressComposable import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.emptyPagingItems import com.aurora.store.compose.preview.emptyPagingItems
import com.aurora.store.compose.ui.downloads.menu.DownloadsMenu import com.aurora.store.compose.ui.downloads.menu.DownloadsMenu
import com.aurora.store.compose.ui.downloads.menu.MenuItem import com.aurora.store.compose.ui.downloads.menu.MenuItem
@@ -116,7 +116,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = stringResource(R.string.title_download_manager), title = stringResource(R.string.title_download_manager),
onNavigateUp = onNavigateUp, onNavigateUp = onNavigateUp,
actions = { if (downloads.itemCount != 0) SetupMenu() } actions = { if (downloads.itemCount != 0) SetupMenu() }
@@ -131,14 +131,14 @@ private fun ScreenContent(
) { ) {
when { when {
downloads.loadState.refresh is LoadState.Loading && initialLoad -> { downloads.loadState.refresh is LoadState.Loading && initialLoad -> {
ProgressComposable() ContainedLoadingIndicator()
} }
else -> { else -> {
initialLoad = false initialLoad = false
if (downloads.itemCount == 0) { if (downloads.itemCount == 0) {
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_download_manager), painter = painterResource(R.drawable.ic_download_manager),
message = stringResource(R.string.download_none) message = stringResource(R.string.download_none)
@@ -150,7 +150,7 @@ private fun ScreenContent(
key = downloads.itemKey { it.packageName } key = downloads.itemKey { it.packageName }
) { index -> ) { index ->
downloads[index]?.let { download -> downloads[index]?.let { download ->
DownloadComposable( DownloadListItem(
modifier = Modifier.animateItem(), modifier = Modifier.animateItem(),
download = download, download = download,
onClick = { onNavigateToAppDetails(download.packageName) }, onClick = { onNavigateToAppDetails(download.packageName) },

View File

@@ -31,10 +31,10 @@ import androidx.paging.compose.itemKey
import com.aurora.Constants.JSON_MIME_TYPE import com.aurora.Constants.JSON_MIME_TYPE
import com.aurora.extensions.toast import com.aurora.extensions.toast
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.ErrorComposable import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composables.FavouriteComposable import com.aurora.store.compose.composable.FavouriteListItem
import com.aurora.store.compose.composables.ProgressComposable import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composable.TopAppBar
import com.aurora.store.compose.preview.emptyPagingItems import com.aurora.store.compose.preview.emptyPagingItems
import com.aurora.store.compose.ui.favourite.menu.FavouriteMenu 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
@@ -120,7 +120,7 @@ private fun ScreenContent(
Scaffold( Scaffold(
topBar = { topBar = {
TopAppBarComposable( TopAppBar(
title = stringResource(R.string.title_favourites_manager), title = stringResource(R.string.title_favourites_manager),
onNavigateUp = onNavigateUp, onNavigateUp = onNavigateUp,
actions = { if (favourites.itemCount != 0) SetupMenu() } actions = { if (favourites.itemCount != 0) SetupMenu() }
@@ -135,14 +135,14 @@ private fun ScreenContent(
) { ) {
when { when {
favourites.loadState.refresh is LoadState.Loading && initialLoad -> { favourites.loadState.refresh is LoadState.Loading && initialLoad -> {
ProgressComposable() ContainedLoadingIndicator()
} }
else -> { else -> {
initialLoad = false initialLoad = false
if (favourites.itemCount == 0) { if (favourites.itemCount == 0) {
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_favorite_unchecked), painter = painterResource(R.drawable.ic_favorite_unchecked),
message = stringResource(R.string.details_no_favourites) message = stringResource(R.string.details_no_favourites)
@@ -154,7 +154,7 @@ private fun ScreenContent(
key = favourites.itemKey { it.packageName } key = favourites.itemKey { it.packageName }
) { index -> ) { index ->
favourites[index]?.let { favourite -> favourites[index]?.let { favourite ->
FavouriteComposable( FavouriteListItem(
modifier = Modifier.animateItem(), modifier = Modifier.animateItem(),
favourite = favourite, favourite = favourite,
onClick = { onNavigateToAppDetails(favourite.packageName) }, onClick = { onNavigateToAppDetails(favourite.packageName) },

View File

@@ -64,10 +64,10 @@ import coil3.compose.LocalAsyncImagePreviewHandler
import com.aurora.gplayapi.SearchSuggestEntry import com.aurora.gplayapi.SearchSuggestEntry
import com.aurora.gplayapi.data.models.App import com.aurora.gplayapi.data.models.App
import com.aurora.store.R import com.aurora.store.R
import com.aurora.store.compose.composables.ErrorComposable import com.aurora.store.compose.composable.Error
import com.aurora.store.compose.composables.ProgressComposable import com.aurora.store.compose.composable.ContainedLoadingIndicator
import com.aurora.store.compose.composables.SearchSuggestionComposable import com.aurora.store.compose.composable.SearchSuggestionListItem
import com.aurora.store.compose.composables.app.AppListComposable 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.coilPreviewProvider import com.aurora.store.compose.preview.coilPreviewProvider
import com.aurora.store.compose.preview.emptyPagingItems import com.aurora.store.compose.preview.emptyPagingItems
@@ -181,7 +181,7 @@ private fun ScreenContent(
AppBarWithSearch(state = searchBarState, inputField = inputField) AppBarWithSearch(state = searchBarState, inputField = inputField)
ExpandedDockedSearchBar(state = searchBarState, inputField = inputField) { ExpandedDockedSearchBar(state = searchBarState, inputField = inputField) {
suggestions.forEach { suggestion -> suggestions.forEach { suggestion ->
SearchSuggestionComposable( SearchSuggestionListItem(
searchSuggestEntry = suggestion, searchSuggestEntry = suggestion,
onClick = { query -> onRequestSearch(query) }, onClick = { query -> onRequestSearch(query) },
onAction = { query -> textFieldState.setTextAndPlaceCursorAtEnd(query.trim()) } onAction = { query -> textFieldState.setTextAndPlaceCursorAtEnd(query.trim()) }
@@ -206,10 +206,10 @@ private fun ScreenContent(
) )
when (results.loadState.refresh) { when (results.loadState.refresh) {
is LoadState.Loading -> ProgressComposable() is LoadState.Loading -> ContainedLoadingIndicator()
is LoadState.Error -> { is LoadState.Error -> {
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_disclaimer), painter = painterResource(R.drawable.ic_disclaimer),
message = stringResource(R.string.error) message = stringResource(R.string.error)
@@ -218,7 +218,7 @@ private fun ScreenContent(
else -> { else -> {
if (isSearching && results.itemCount == 0) { if (isSearching && results.itemCount == 0) {
ErrorComposable( Error(
modifier = Modifier.padding(paddingValues), modifier = Modifier.padding(paddingValues),
painter = painterResource(R.drawable.ic_disclaimer), painter = painterResource(R.drawable.ic_disclaimer),
message = stringResource(R.string.no_apps_available) message = stringResource(R.string.no_apps_available)
@@ -230,7 +230,7 @@ private fun ScreenContent(
key = results.itemKey { it.id } key = results.itemKey { it.id }
) { index -> ) { index ->
results[index]?.let { app -> results[index]?.let { app ->
AppListComposable( LargeAppListItem(
app = app, app = app,
onClick = { showDetailPane(app.packageName) } onClick = { showDetailPane(app.packageName) }
) )
@@ -261,7 +261,7 @@ private fun ScreenContent(
else -> { else -> {
if (isSearching && results.itemCount > 0) { if (isSearching && results.itemCount > 0) {
ErrorComposable( Error(
painter = painterResource(R.drawable.ic_round_search), painter = painterResource(R.drawable.ic_round_search),
message = stringResource(R.string.select_app_for_details) message = stringResource(R.string.select_app_for_details)
) )