Skip to content

Commit 0234a4f

Browse files
authored
[launcher][Android] Final touches (expo#38433)
1 parent 5c6fc3b commit 0234a4f

File tree

8 files changed

+91
-45
lines changed

8 files changed

+91
-45
lines changed

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/primitives/Accordion.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ fun Accordion(
5757
contentDescription = "Accordion Arrow",
5858
modifier = Modifier
5959
.rotate(arrowRotation)
60+
.size(Theme.sizing.icon.extraSmall)
6061
)
6162
Spacer(Modifier.size(Theme.spacing.small))
6263
Text(

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/routes/Updates.kt

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package expo.modules.devlauncher.compose.routes
22

3+
import androidx.compose.animation.AnimatedContentTransitionScope
4+
import androidx.compose.animation.core.tween
35
import androidx.compose.runtime.Composable
46
import androidx.compose.runtime.getValue
57
import androidx.lifecycle.compose.collectAsStateWithLifecycle
@@ -25,7 +27,19 @@ fun UpdatesRoute(
2527
DefaultScreenContainer {
2628
NavHost(
2729
navController = updatesNavController,
28-
startDestination = Routes.Updates.Branches
30+
startDestination = Routes.Updates.Branches,
31+
enterTransition = {
32+
slideIntoContainer(
33+
AnimatedContentTransitionScope.SlideDirection.Up,
34+
animationSpec = tween(400)
35+
)
36+
},
37+
exitTransition = {
38+
slideOutOfContainer(
39+
AnimatedContentTransitionScope.SlideDirection.Down,
40+
animationSpec = tween(400)
41+
)
42+
}
2943
) {
3044
composable<Routes.Updates.Branches> {
3145
val viewModel = viewModel<BranchesViewModel>()

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/screens/BranchScreen.kt

Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.foundation.layout.Arrangement
44
import androidx.compose.foundation.layout.Box
55
import androidx.compose.foundation.layout.Column
66
import androidx.compose.foundation.layout.Row
7+
import androidx.compose.foundation.layout.fillMaxSize
78
import androidx.compose.foundation.layout.fillMaxWidth
89
import androidx.compose.foundation.layout.padding
910
import androidx.compose.foundation.layout.size
@@ -18,6 +19,7 @@ import androidx.compose.runtime.remember
1819
import androidx.compose.ui.Alignment
1920
import androidx.compose.ui.Modifier
2021
import androidx.compose.ui.draw.rotate
22+
import androidx.compose.ui.graphics.Color
2123
import androidx.compose.ui.res.painterResource
2224
import androidx.compose.ui.text.style.TextAlign
2325
import androidx.compose.ui.text.style.TextOverflow
@@ -45,24 +47,28 @@ fun BranchScreen(
4547
goBack: () -> Unit = {},
4648
onAction: (BranchAction) -> Unit = {}
4749
) {
48-
Column {
50+
Column(modifier = Modifier.fillMaxSize()) {
4951
ScreenHeaderContainer {
5052
Box(
5153
modifier = Modifier
5254
.fillMaxWidth()
5355
.padding(Theme.spacing.small)
5456
) {
55-
Button(
56-
onClick = goBack,
57+
RoundedSurface(
58+
color = Color.Transparent,
5759
modifier = Modifier.align(Alignment.CenterStart)
5860
) {
59-
DayNighIcon(
60-
R.drawable.chevron_right_icon,
61-
contentDescription = "Back icon",
62-
modifier = Modifier
63-
.rotate(180f)
64-
.size(Theme.sizing.icon.medium)
65-
)
61+
Button(
62+
onClick = goBack
63+
) {
64+
DayNighIcon(
65+
R.drawable.chevron_right_icon,
66+
contentDescription = "Back icon",
67+
modifier = Modifier
68+
.rotate(180f)
69+
.size(Theme.sizing.icon.small)
70+
)
71+
}
6672
}
6773

6874
Heading(branchName, modifier = Modifier.align(Alignment.Center))
@@ -126,7 +132,7 @@ fun BranchScreen(
126132
DayNighIcon(
127133
painter = painterResource(R.drawable.chevron_right_icon),
128134
contentDescription = "Chevron Right Icon",
129-
modifier = Modifier.size(Theme.sizing.icon.medium)
135+
modifier = Modifier.size(Theme.sizing.icon.extraSmall)
130136
)
131137
}
132138

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/screens/BranchesScreen.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import androidx.compose.foundation.background
44
import androidx.compose.foundation.layout.Arrangement
55
import androidx.compose.foundation.layout.Column
66
import androidx.compose.foundation.layout.Row
7+
import androidx.compose.foundation.layout.fillMaxSize
78
import androidx.compose.foundation.layout.fillMaxWidth
89
import androidx.compose.foundation.layout.padding
910
import androidx.compose.foundation.layout.size
@@ -85,7 +86,7 @@ fun BranchesScreen(
8586
onProfileClick: () -> Unit = {},
8687
onAction: (BranchesAction) -> Unit = { _ -> }
8788
) {
88-
Column {
89+
Column(modifier = Modifier.fillMaxSize()) {
8990
ScreenHeaderContainer(modifier = Modifier.padding(Theme.spacing.medium)) {
9091
AppHeader(
9192
onProfileClick = onProfileClick
@@ -134,7 +135,7 @@ fun BranchesScreen(
134135
DayNighIcon(
135136
painter = painterResource(R.drawable.chevron_right_icon),
136137
contentDescription = "Chevron Right Icon",
137-
modifier = Modifier.size(Theme.sizing.icon.medium)
138+
modifier = Modifier.size(Theme.sizing.icon.extraSmall)
138139
)
139140
}
140141

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/screens/HomeScreen.kt

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import androidx.compose.runtime.setValue
2222
import androidx.compose.ui.Modifier
2323
import androidx.compose.ui.draw.clip
2424
import androidx.compose.ui.draw.drawBehind
25+
import androidx.compose.ui.graphics.Color
2526
import androidx.compose.ui.graphics.SolidColor
2627
import androidx.compose.ui.res.painterResource
2728
import androidx.compose.ui.text.font.FontWeight
@@ -301,7 +302,7 @@ fun HomeScreen(
301302
Image(
302303
painter = painterResource(R.drawable.qr_code),
303304
contentDescription = "QR Code Icon",
304-
modifier = Modifier.size(24.dp)
305+
modifier = Modifier.size(Theme.spacing.medium)
305306
)
306307
}
307308
) {
@@ -338,18 +339,24 @@ fun HomeScreen(
338339
"Recently",
339340
rightIcon = {
340341
Row {
341-
Button(onClick = {
342-
onAction(HomeAction.ResetRecentlyOpenedApps)
343-
}) {
344-
Text(
345-
"Reset",
346-
color = Theme.colors.text.secondary,
347-
fontSize = Theme.typography.small,
348-
fontWeight = FontWeight.Bold
349-
)
342+
RoundedSurface(color = Color.Unspecified, borderRadius = Theme.sizing.borderRadius.extraSmall) {
343+
Button(
344+
onClick = {
345+
onAction(HomeAction.ResetRecentlyOpenedApps)
346+
}
347+
) {
348+
Text(
349+
"Reset",
350+
color = Theme.colors.text.secondary,
351+
fontSize = Theme.typography.small,
352+
fontWeight = FontWeight.Bold,
353+
modifier = Modifier
354+
.padding(horizontal = Theme.spacing.tiny, vertical = Theme.spacing.micro)
355+
)
356+
}
350357
}
351358

352-
Spacer(Theme.spacing.small)
359+
Spacer(Theme.spacing.small - Theme.spacing.tiny)
353360
}
354361
}
355362
)

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/screens/NoUpdatesScreen.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package expo.modules.devlauncher.compose.screens
33
import androidx.compose.foundation.Image
44
import androidx.compose.foundation.layout.Column
55
import androidx.compose.foundation.layout.Row
6+
import androidx.compose.foundation.layout.fillMaxSize
67
import androidx.compose.foundation.layout.padding
78
import androidx.compose.runtime.Composable
89
import androidx.compose.ui.Alignment
@@ -26,7 +27,7 @@ import expo.modules.devmenu.compose.theme.Theme
2627

2728
@Composable
2829
fun NoUpdatesScreen(onProfileClick: () -> Unit = {}) {
29-
Column {
30+
Column(modifier = Modifier.fillMaxSize()) {
3031
ScreenHeaderContainer(modifier = Modifier.padding(Theme.spacing.medium)) {
3132
AppHeader(
3233
onProfileClick = onProfileClick

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/ui/AppHeader.kt

Lines changed: 18 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package expo.modules.devlauncher.compose.ui
22

3-
import androidx.compose.foundation.clickable
43
import androidx.compose.foundation.layout.Column
54
import androidx.compose.foundation.layout.padding
65
import androidx.compose.foundation.shape.RoundedCornerShape
76
import androidx.compose.runtime.Composable
87
import androidx.compose.ui.Modifier
98
import androidx.compose.ui.tooling.preview.Preview
109
import androidx.lifecycle.compose.collectAsStateWithLifecycle
10+
import com.composeunstyled.Button
1111
import expo.modules.devlauncher.MeQuery
1212
import expo.modules.devlauncher.R
1313
import expo.modules.devlauncher.services.AppService
@@ -65,18 +65,24 @@ fun AppHeader(
6565
},
6666
rightComponent = {
6767
if (currentAccount != null) {
68-
AccountAvatar(
69-
url = currentAccount.ownerUserActor?.profilePhoto,
70-
size = Theme.sizing.icon.medium,
71-
modifier = Modifier.clickable(onClick = onProfileClick)
72-
)
68+
Surface(shape = RoundedCornerShape(Theme.sizing.borderRadius.full)) {
69+
Button(onClick = onProfileClick) {
70+
AccountAvatar(
71+
url = currentAccount.ownerUserActor?.profilePhoto,
72+
size = Theme.sizing.icon.medium
73+
)
74+
}
75+
}
7376
} else {
74-
Surface(shape = RoundedCornerShape(Theme.sizing.borderRadius.full), modifier = Modifier.clickable(onClick = onProfileClick)) {
75-
DayNighIcon(
76-
id = R.drawable.user_icon,
77-
contentDescription = "Expo Logo",
78-
modifier = Modifier.padding(Theme.spacing.tiny)
79-
)
77+
Surface(shape = RoundedCornerShape(Theme.sizing.borderRadius.full)) {
78+
Button(onClick = onProfileClick) {
79+
DayNighIcon(
80+
id = R.drawable.user_icon,
81+
contentDescription = "Expo Logo",
82+
modifier = Modifier
83+
.padding(Theme.spacing.tiny)
84+
)
85+
}
8086
}
8187
}
8288
}

packages/expo-dev-launcher/android/src/debug/java/expo/modules/devlauncher/compose/ui/ProfileLayout.kt

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,17 @@ import androidx.compose.foundation.layout.Column
55
import androidx.compose.foundation.layout.Row
66
import androidx.compose.foundation.layout.fillMaxWidth
77
import androidx.compose.foundation.layout.padding
8+
import androidx.compose.foundation.layout.size
89
import androidx.compose.runtime.Composable
910
import androidx.compose.ui.Alignment
1011
import androidx.compose.ui.Modifier
12+
import androidx.compose.ui.graphics.Color
1113
import androidx.compose.ui.unit.dp
1214
import com.composeunstyled.Button
1315
import expo.modules.devlauncher.R
1416
import expo.modules.devmenu.compose.primitives.DayNighIcon
1517
import expo.modules.devmenu.compose.primitives.Heading
18+
import expo.modules.devmenu.compose.primitives.RoundedSurface
1619
import expo.modules.devmenu.compose.primitives.Spacer
1720
import expo.modules.devmenu.compose.theme.Theme
1821

@@ -26,13 +29,20 @@ fun ProfileLayout(
2629
.padding(horizontal = 12.dp)
2730
.padding(top = 12.dp)
2831
) {
29-
Row(verticalAlignment = Alignment.CenterVertically, horizontalArrangement = Arrangement.SpaceBetween, modifier = Modifier.fillMaxWidth()) {
30-
Heading("Account", fontSize = Theme.typography.size25)
31-
Button(onClick = onClose) {
32-
DayNighIcon(
33-
id = R.drawable.x_icon,
34-
contentDescription = "Close"
35-
)
32+
Row(
33+
verticalAlignment = Alignment.CenterVertically,
34+
horizontalArrangement = Arrangement.SpaceBetween,
35+
modifier = Modifier.fillMaxWidth()
36+
) {
37+
Heading("Account", fontSize = Theme.typography.size22)
38+
RoundedSurface(color = Color.Unspecified) {
39+
Button(onClick = onClose) {
40+
DayNighIcon(
41+
id = R.drawable.x_icon,
42+
contentDescription = "Close",
43+
modifier = Modifier.size(Theme.sizing.icon.small)
44+
)
45+
}
3646
}
3747
}
3848

0 commit comments

Comments
 (0)