compose: details: Load description of permissions as well

Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
Aayush Gupta
2025-06-26 14:33:46 +08:00
parent 30dc819fa8
commit 0a721fa571
2 changed files with 23 additions and 6 deletions

View File

@@ -6,13 +6,12 @@
package com.aurora.store.compose.ui.details package com.aurora.store.compose.ui.details
import android.content.pm.PermissionInfo import android.content.pm.PermissionInfo
import androidx.compose.foundation.layout.Arrangement
import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.items
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.material3.adaptive.WindowAdaptiveInfo import androidx.compose.material3.adaptive.WindowAdaptiveInfo
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
@@ -21,6 +20,7 @@ import androidx.compose.ui.Modifier
import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.res.dimensionResource import androidx.compose.ui.res.dimensionResource
import androidx.compose.ui.res.stringResource import androidx.compose.ui.res.stringResource
import androidx.compose.ui.text.AnnotatedString
import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.hilt.navigation.compose.hiltViewModel import androidx.hilt.navigation.compose.hiltViewModel
@@ -29,10 +29,12 @@ import androidx.window.core.layout.WindowWidthSizeClass
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.InfoComposable
import com.aurora.store.compose.composables.TopAppBarComposable import com.aurora.store.compose.composables.TopAppBarComposable
import com.aurora.store.compose.composables.preview.AppPreviewProvider import com.aurora.store.compose.composables.preview.AppPreviewProvider
import com.aurora.store.viewmodel.details.AppDetailsViewModel import com.aurora.store.viewmodel.details.AppDetailsViewModel
import com.aurora.store.viewmodel.details.DetailsPermissionViewModel import com.aurora.store.viewmodel.details.DetailsPermissionViewModel
import java.util.Locale
@Composable @Composable
fun DetailsPermissionScreen( fun DetailsPermissionScreen(
@@ -80,15 +82,29 @@ private fun ScreenContent(
modifier = Modifier modifier = Modifier
.padding(paddingValues) .padding(paddingValues)
.fillMaxSize() .fillMaxSize()
.padding(horizontal = dimensionResource(R.dimen.padding_medium)) .padding(horizontal = dimensionResource(R.dimen.padding_medium)),
verticalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.margin_medium))
) { ) {
items(items = permissionsInfo.keys.toList(), key = { it }) { permission -> items(items = permissionsInfo.keys.toList(), key = { it }) { permission ->
// 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
Text( InfoComposable(
text = permissionInfo.loadLabel(packageManager).toString(), title = AnnotatedString(
style = MaterialTheme.typography.bodyMedium text = permissionInfo.loadLabel(packageManager)
.toString()
.replaceFirstChar {
if (it.isLowerCase()) {
it.titlecase(Locale.getDefault())
} else {
it.toString()
}
}
),
description = AnnotatedString(
text = permissionInfo.loadDescription(packageManager)?.toString()
?: stringResource(R.string.no_description)
)
) )
} }
} }

View File

@@ -485,6 +485,7 @@
<string name="available_spoof">Available</string> <string name="available_spoof">Available</string>
<!-- AppDetailsFragment --> <!-- AppDetailsFragment -->
<string name="no_description">No description available</string>
<string name="permissions_requested"><xliff:g id="number_of_permissions">%1$d</xliff:g> permissions</string> <string name="permissions_requested"><xliff:g id="number_of_permissions">%1$d</xliff:g> permissions</string>
<string name="details_more_info">More info</string> <string name="details_more_info">More info</string>
<string name="details_more_target_api">Targets</string> <string name="details_more_target_api">Targets</string>