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:
@@ -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
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -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()
|
||||||
}
|
}
|
||||||
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
@@ -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))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 = {}
|
||||||
@@ -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)
|
||||||
@@ -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),
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
@@ -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),
|
||||||
@@ -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()
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
@@ -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) {
|
||||||
@@ -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 = {}
|
||||||
)
|
)
|
||||||
@@ -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,
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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)
|
||||||
)
|
)
|
||||||
@@ -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.",
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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 ?: "")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -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
|
||||||
|
|
||||||
@@ -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) {
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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) }
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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) }
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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))
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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())
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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"
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
@@ -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(),
|
||||||
|
|||||||
@@ -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),
|
||||||
|
|||||||
@@ -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))
|
||||||
|
|||||||
@@ -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
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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)))
|
||||||
|
|||||||
@@ -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)))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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(
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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) }
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -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) },
|
||||||
|
|||||||
@@ -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) },
|
||||||
|
|||||||
@@ -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)
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user