Skip to content

Commit 2d914fa

Browse files
authored
Merge pull request #458 from android/jdk/adaptive-codelab-end/clean-up
[AdaptiveUiCodelab] Remove unused code and other cleanup
2 parents 7457502 + eacac32 commit 2d914fa

File tree

6 files changed

+33
-139
lines changed

6 files changed

+33
-139
lines changed

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/MainActivity.kt

Lines changed: 14 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,12 @@ import android.os.Bundle
2020
import androidx.activity.ComponentActivity
2121
import androidx.activity.compose.setContent
2222
import androidx.activity.viewModels
23-
import androidx.compose.material3.adaptive.currentWindowAdaptiveInfo
2423
import androidx.compose.runtime.Composable
25-
import androidx.compose.runtime.collectAsState
24+
import androidx.compose.runtime.getValue
2625
import androidx.compose.ui.tooling.preview.Preview
27-
import androidx.lifecycle.flowWithLifecycle
28-
import androidx.lifecycle.lifecycleScope
29-
import androidx.window.core.layout.WindowWidthSizeClass
30-
import androidx.window.layout.FoldingFeature
31-
import androidx.window.layout.WindowInfoTracker
26+
import androidx.lifecycle.compose.collectAsStateWithLifecycle
3227
import com.example.reply.data.local.LocalEmailsDataProvider
3328
import com.example.reply.ui.theme.ReplyTheme
34-
import com.example.reply.ui.utils.DevicePosture
35-
import com.example.reply.ui.utils.isBookPosture
36-
import com.example.reply.ui.utils.isSeparating
37-
import kotlinx.coroutines.flow.SharingStarted
38-
import kotlinx.coroutines.flow.map
39-
import kotlinx.coroutines.flow.stateIn
4029

4130
class MainActivity : ComponentActivity() {
4231

@@ -45,42 +34,12 @@ class MainActivity : ComponentActivity() {
4534
override fun onCreate(savedInstanceState: Bundle?) {
4635
super.onCreate(savedInstanceState)
4736

48-
/**
49-
* Flow of [DevicePosture] that emits every time there's a change in the windowLayoutInfo
50-
*/
51-
val devicePostureFlow = WindowInfoTracker.getOrCreate(this).windowLayoutInfo(this)
52-
.flowWithLifecycle(this.lifecycle)
53-
.map { layoutInfo ->
54-
val foldingFeature =
55-
layoutInfo.displayFeatures
56-
.filterIsInstance<FoldingFeature>()
57-
.firstOrNull()
58-
when {
59-
isBookPosture(foldingFeature) ->
60-
DevicePosture.BookPosture(foldingFeature.bounds)
61-
62-
isSeparating(foldingFeature) ->
63-
DevicePosture.Separating(foldingFeature.bounds, foldingFeature.orientation)
64-
65-
else -> DevicePosture.NormalPosture
66-
}
67-
}
68-
.stateIn(
69-
scope = lifecycleScope,
70-
started = SharingStarted.Eagerly,
71-
initialValue = DevicePosture.NormalPosture
72-
)
73-
7437
setContent {
7538
ReplyTheme {
76-
val windowAdaptiveInfo = currentWindowAdaptiveInfo()
77-
val devicePosture = devicePostureFlow.collectAsState().value
78-
val uiState = viewModel.uiState.collectAsState().value
39+
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
7940
ReplyApp(
80-
windowAdaptiveInfo.windowSizeClass.windowWidthSizeClass,
81-
devicePosture,
82-
uiState,
83-
viewModel::setSelectedEmail
41+
replyHomeUIState = uiState,
42+
onEmailClick = viewModel::setSelectedEmail
8443
)
8544
}
8645
}
@@ -92,9 +51,9 @@ class MainActivity : ComponentActivity() {
9251
fun ReplyAppPreview() {
9352
ReplyTheme {
9453
ReplyApp(
95-
replyHomeUIState = ReplyHomeUIState(emails = LocalEmailsDataProvider.allEmails),
96-
windowSize = WindowWidthSizeClass.COMPACT,
97-
foldingDevicePosture = DevicePosture.NormalPosture,
54+
replyHomeUIState = ReplyHomeUIState(
55+
emails = LocalEmailsDataProvider.allEmails
56+
),
9857
onEmailClick = {}
9958
)
10059
}
@@ -105,9 +64,9 @@ fun ReplyAppPreview() {
10564
fun ReplyAppPreviewTablet() {
10665
ReplyTheme {
10766
ReplyApp(
108-
replyHomeUIState = ReplyHomeUIState(emails = LocalEmailsDataProvider.allEmails),
109-
windowSize = WindowWidthSizeClass.MEDIUM,
110-
foldingDevicePosture = DevicePosture.NormalPosture,
67+
replyHomeUIState = ReplyHomeUIState(
68+
emails = LocalEmailsDataProvider.allEmails
69+
),
11170
onEmailClick = {}
11271
)
11372
}
@@ -118,9 +77,9 @@ fun ReplyAppPreviewTablet() {
11877
fun ReplyAppPreviewDesktop() {
11978
ReplyTheme {
12079
ReplyApp(
121-
replyHomeUIState = ReplyHomeUIState(emails = LocalEmailsDataProvider.allEmails),
122-
windowSize = WindowWidthSizeClass.EXPANDED,
123-
foldingDevicePosture = DevicePosture.NormalPosture,
80+
replyHomeUIState = ReplyHomeUIState(
81+
emails = LocalEmailsDataProvider.allEmails
82+
),
12483
onEmailClick = {}
12584
)
12685
}

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/ReplyApp.kt

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -38,16 +38,12 @@ import androidx.compose.ui.platform.LocalDensity
3838
import androidx.compose.ui.res.stringResource
3939
import androidx.compose.ui.unit.dp
4040
import androidx.compose.ui.unit.toSize
41-
import androidx.window.core.layout.WindowWidthSizeClass
4241
import com.example.reply.data.Email
43-
import com.example.reply.ui.utils.DevicePosture
4442

4543
private val WINDOW_WIDTH_LARGE = 1200.dp
4644

4745
@Composable
4846
fun ReplyApp(
49-
windowSize: WindowWidthSizeClass,
50-
foldingDevicePosture: DevicePosture,
5147
replyHomeUIState: ReplyHomeUIState,
5248
onEmailClick: (Email) -> Unit,
5349
) {

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/ReplyHomeViewModel.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ import kotlinx.coroutines.flow.catch
2727
import kotlinx.coroutines.flow.update
2828
import kotlinx.coroutines.launch
2929

30-
class ReplyHomeViewModel(private val emailsRepository: EmailsRepository = EmailsRepositoryImpl()): ViewModel() {
30+
class ReplyHomeViewModel(
31+
private val emailsRepository: EmailsRepository = EmailsRepositoryImpl()
32+
): ViewModel() {
3133

3234
// UI state exposed to the UI
3335
private val _uiState = MutableStateFlow(ReplyHomeUIState(loading = true))

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/ReplyListContent.kt

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ import androidx.compose.material3.Button
3434
import androidx.compose.material3.ButtonDefaults
3535
import androidx.compose.material3.Card
3636
import androidx.compose.material3.CardDefaults
37-
import androidx.compose.material3.ExperimentalMaterial3Api
3837
import androidx.compose.material3.Icon
3938
import androidx.compose.material3.IconButton
4039
import androidx.compose.material3.MaterialTheme
@@ -78,13 +77,12 @@ fun ReplyDetailPane(
7877
item {
7978
ReplyEmailThreadItem(email)
8079
}
81-
items(email.replies) {
82-
ReplyEmailThreadItem(it)
80+
items(email.replies) { reply ->
81+
ReplyEmailThreadItem(reply)
8382
}
8483
}
8584
}
8685

87-
@OptIn(ExperimentalMaterial3Api::class)
8886
@Composable
8987
fun ReplyEmailListItem(
9088
email: Email,
@@ -152,7 +150,6 @@ fun ReplyEmailListItem(
152150
}
153151
}
154152

155-
@OptIn(ExperimentalMaterial3Api::class)
156153
@Composable
157154
fun ReplyEmailThreadItem(
158155
email: Email,
@@ -251,21 +248,24 @@ fun ReplyEmailThreadItem(
251248
fun ReplyProfileImage(
252249
drawableResource: Int,
253250
description: String,
254-
modifier: Modifier = Modifier.size(40.dp),
251+
modifier: Modifier = Modifier,
255252
) {
256253
Image(
257-
modifier = modifier.clip(CircleShape),
254+
modifier = modifier
255+
.size(40.dp)
256+
.clip(CircleShape),
258257
painter = painterResource(id = drawableResource),
259258
contentDescription = description,
260259
)
261260
}
262261

263262
@Composable
264263
fun ReplySearchBar(modifier: Modifier = Modifier) {
265-
Row(modifier = modifier
266-
.fillMaxWidth()
267-
.padding(16.dp)
268-
.background(MaterialTheme.colorScheme.surface, CircleShape),
264+
Row(
265+
modifier = modifier
266+
.fillMaxWidth()
267+
.padding(16.dp)
268+
.background(MaterialTheme.colorScheme.surface, CircleShape),
269269
verticalAlignment = Alignment.CenterVertically
270270
) {
271271
Icon(
@@ -274,7 +274,8 @@ fun ReplySearchBar(modifier: Modifier = Modifier) {
274274
modifier = Modifier.padding(start = 16.dp),
275275
tint = MaterialTheme.colorScheme.outline
276276
)
277-
Text(text = stringResource(id = R.string.search_replies),
277+
Text(
278+
text = stringResource(id = R.string.search_replies),
278279
modifier = Modifier
279280
.weight(1f)
280281
.padding(16.dp),

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/ReplyNavigation.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,17 +19,18 @@ package com.example.reply.ui
1919
import androidx.annotation.StringRes
2020
import androidx.compose.material.icons.Icons
2121
import androidx.compose.material.icons.filled.Article
22-
import androidx.compose.material.icons.filled.Menu
22+
import androidx.compose.material.icons.filled.Inbox
2323
import androidx.compose.material.icons.outlined.Chat
2424
import androidx.compose.material.icons.outlined.People
2525
import androidx.compose.ui.graphics.vector.ImageVector
2626
import com.example.reply.R
2727

28+
/** Navigation destinations in the app. */
2829
enum class ReplyDestination(
2930
@StringRes val labelRes: Int,
3031
val icon: ImageVector,
3132
) {
32-
Inbox(R.string.tab_inbox, Icons.Default.Menu),
33+
Inbox(R.string.tab_inbox, Icons.Default.Inbox),
3334

3435
Articles(R.string.tab_article, Icons.Default.Article),
3536

AdaptiveUiCodelab/app/src/main/java/com/example/reply/ui/utils/WindowStateUtils.kt

Lines changed: 0 additions & 65 deletions
This file was deleted.

0 commit comments

Comments
 (0)