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