compose: details: Load description of permissions as well
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -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)
|
||||||
|
)
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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>
|
||||||
|
|||||||
Reference in New Issue
Block a user