compose: Move compact window checks to extension
Signed-off-by: Aayush Gupta <aayushgupta219@gmail.com>
This commit is contained in:
@@ -12,15 +12,19 @@ import androidx.compose.ui.res.painterResource
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.store.R
|
||||
|
||||
/**
|
||||
* Whether the device width is compact or not
|
||||
*
|
||||
*/
|
||||
val WindowAdaptiveInfo.isWindowCompact: Boolean
|
||||
get() = !windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND)
|
||||
|
||||
/**
|
||||
* Returns navigation icon for adaptive screens such as extra pane
|
||||
*/
|
||||
val WindowAdaptiveInfo.adaptiveNavigationIcon: Painter
|
||||
@Composable
|
||||
get() = when {
|
||||
windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
painterResource(R.drawable.ic_cancel)
|
||||
}
|
||||
|
||||
else -> painterResource(R.drawable.ic_arrow_back)
|
||||
isWindowCompact -> painterResource(R.drawable.ic_arrow_back)
|
||||
else -> painterResource(R.drawable.ic_cancel)
|
||||
}
|
||||
|
||||
@@ -22,10 +22,10 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.Constants.EXODUS_REPORT_URL
|
||||
import com.aurora.extensions.adaptiveNavigationIcon
|
||||
import com.aurora.extensions.browse
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.HeaderComposable
|
||||
@@ -51,11 +51,8 @@ fun ExodusScreen(
|
||||
val trackers by detailsExodusViewModel.trackers.collectAsStateWithLifecycle()
|
||||
|
||||
val topAppBarTitle = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
stringResource(R.string.details_privacy)
|
||||
}
|
||||
|
||||
else -> app!!.displayName
|
||||
windowAdaptiveInfo.isWindowCompact -> app!!.displayName
|
||||
else -> stringResource(R.string.details_privacy)
|
||||
}
|
||||
|
||||
ScreenContent(
|
||||
|
||||
@@ -47,8 +47,8 @@ import androidx.compose.ui.unit.dp
|
||||
import androidx.core.text.isDigitsOnly
|
||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.extensions.adaptiveNavigationIcon
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.extensions.toast
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.store.R
|
||||
@@ -70,11 +70,8 @@ fun ManualDownloadScreen(
|
||||
|
||||
val app by viewModel.app.collectAsStateWithLifecycle()
|
||||
val topAppBarTitle = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
stringResource(R.string.title_manual_download)
|
||||
}
|
||||
|
||||
else -> app!!.displayName
|
||||
windowAdaptiveInfo.isWindowCompact -> app!!.displayName
|
||||
else -> stringResource(R.string.title_manual_download)
|
||||
}
|
||||
|
||||
LaunchedEffect(key1 = Unit) {
|
||||
|
||||
@@ -31,9 +31,9 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import coil3.compose.LocalAsyncImagePreviewHandler
|
||||
import com.aurora.extensions.adaptiveNavigationIcon
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.HeaderComposable
|
||||
@@ -76,11 +76,8 @@ private fun ScreenContent(
|
||||
windowAdaptiveInfo: WindowAdaptiveInfo = currentWindowAdaptiveInfo()
|
||||
) {
|
||||
val topAppBarTitle = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
stringResource(R.string.details_more_about_app)
|
||||
}
|
||||
|
||||
else -> app.displayName
|
||||
windowAdaptiveInfo.isWindowCompact -> app.displayName
|
||||
else -> stringResource(R.string.details_more_about_app)
|
||||
}
|
||||
|
||||
Scaffold(
|
||||
|
||||
@@ -25,8 +25,8 @@ import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.extensions.adaptiveNavigationIcon
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.InfoComposable
|
||||
@@ -50,11 +50,8 @@ fun PermissionScreen(
|
||||
val permissionsInfo by detailsPermissionViewModel.permissionsInfo.collectAsStateWithLifecycle()
|
||||
|
||||
val topAppBarTitle = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
stringResource(R.string.details_permission)
|
||||
}
|
||||
|
||||
else -> app!!.displayName
|
||||
windowAdaptiveInfo.isWindowCompact -> app!!.displayName
|
||||
else -> stringResource(R.string.details_permission)
|
||||
}
|
||||
|
||||
ScreenContent(
|
||||
|
||||
@@ -37,9 +37,9 @@ import androidx.paging.PagingData
|
||||
import androidx.paging.compose.LazyPagingItems
|
||||
import androidx.paging.compose.collectAsLazyPagingItems
|
||||
import androidx.paging.compose.itemKey
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import coil3.compose.LocalAsyncImagePreviewHandler
|
||||
import com.aurora.extensions.adaptiveNavigationIcon
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.gplayapi.data.models.Review
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.ErrorComposable
|
||||
@@ -67,11 +67,8 @@ fun ReviewScreen(
|
||||
val reviews = detailsReviewViewModel.reviews.collectAsLazyPagingItems()
|
||||
|
||||
val topAppBarTitle = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
stringResource(R.string.details_ratings)
|
||||
}
|
||||
|
||||
else -> app!!.displayName
|
||||
windowAdaptiveInfo.isWindowCompact -> app!!.displayName
|
||||
else -> stringResource(R.string.details_ratings)
|
||||
}
|
||||
|
||||
ScreenContent(
|
||||
|
||||
@@ -21,8 +21,8 @@ import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.hilt.lifecycle.viewmodel.compose.hiltViewModel
|
||||
import androidx.lifecycle.compose.collectAsStateWithLifecycle
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.extensions.adaptiveNavigationIcon
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.gplayapi.data.models.Artwork
|
||||
import com.aurora.store.R
|
||||
import com.aurora.store.compose.composables.TopAppBarComposable
|
||||
@@ -40,11 +40,8 @@ fun ScreenshotScreen(
|
||||
val app by viewModel.app.collectAsStateWithLifecycle()
|
||||
|
||||
val topAppBarTitle = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
stringResource(R.string.details_more_about_app)
|
||||
}
|
||||
|
||||
else -> app!!.displayName
|
||||
windowAdaptiveInfo.isWindowCompact -> app!!.displayName
|
||||
else -> stringResource(R.string.details_more_about_app)
|
||||
}
|
||||
|
||||
ScreenContent(
|
||||
|
||||
@@ -21,7 +21,7 @@ import androidx.compose.ui.res.dimensionResource
|
||||
import androidx.compose.ui.res.stringResource
|
||||
import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.store.R
|
||||
|
||||
/**
|
||||
@@ -50,11 +50,8 @@ fun Actions(
|
||||
horizontalArrangement = Arrangement.spacedBy(dimensionResource(R.dimen.padding_medium))
|
||||
) {
|
||||
val buttonWidthModifier = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
Modifier.widthIn(min = dimensionResource(R.dimen.width_button))
|
||||
}
|
||||
|
||||
else -> Modifier.weight(1F)
|
||||
windowAdaptiveInfo.isWindowCompact -> Modifier.weight(1F)
|
||||
else -> Modifier.widthIn(min = dimensionResource(R.dimen.width_button))
|
||||
}
|
||||
|
||||
FilledTonalButton(
|
||||
|
||||
@@ -30,7 +30,7 @@ import androidx.compose.ui.text.style.TextOverflow
|
||||
import androidx.compose.ui.tooling.preview.Preview
|
||||
import androidx.compose.ui.tooling.preview.PreviewParameter
|
||||
import androidx.compose.ui.util.fastForEach
|
||||
import androidx.window.core.layout.WindowSizeClass
|
||||
import com.aurora.extensions.isWindowCompact
|
||||
import com.aurora.gplayapi.data.models.App
|
||||
import com.aurora.gplayapi.data.models.Rating
|
||||
import com.aurora.gplayapi.data.models.Review
|
||||
@@ -65,11 +65,13 @@ fun RatingAndReviews(
|
||||
}
|
||||
|
||||
val avgRating = when {
|
||||
windowAdaptiveInfo.windowSizeClass.isWidthAtLeastBreakpoint(WindowSizeClass.WIDTH_DP_MEDIUM_LOWER_BOUND) -> {
|
||||
String.format(Locale.getDefault(), "%.1f / 5.0", rating.average)
|
||||
windowAdaptiveInfo.isWindowCompact -> {
|
||||
String.format(Locale.getDefault(), "%.1f", rating.average)
|
||||
}
|
||||
|
||||
else -> String.format(Locale.getDefault(), "%.1f", rating.average)
|
||||
else -> {
|
||||
String.format(Locale.getDefault(), "%.1f / 5.0", rating.average)
|
||||
}
|
||||
}
|
||||
|
||||
HeaderComposable(
|
||||
|
||||
Reference in New Issue
Block a user