Skip to content

Commit 57b153f

Browse files
committed
Connect LaunchList to query
1 parent 9517746 commit 57b153f

File tree

2 files changed

+24
-5
lines changed

2 files changed

+24
-5
lines changed
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.example.rocketreserver
2+
3+
import com.apollographql.apollo.ApolloClient
4+
5+
val apolloClient = ApolloClient.Builder()
6+
.serverUrl("https://apollo-fullstack-tutorial.herokuapp.com/graphql")
7+
.build()

start/app/src/main/kotlin/com/example/rocketreserver/LaunchList.kt

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
package com.example.rocketreserver
44

5+
import android.R.attr.onClick
56
import androidx.compose.foundation.Image
67
import androidx.compose.foundation.clickable
78
import androidx.compose.foundation.layout.Box
@@ -10,32 +11,43 @@ import androidx.compose.foundation.layout.fillMaxWidth
1011
import androidx.compose.foundation.layout.padding
1112
import androidx.compose.foundation.layout.size
1213
import androidx.compose.foundation.lazy.LazyColumn
14+
import androidx.compose.foundation.lazy.items
1315
import androidx.compose.material3.CircularProgressIndicator
1416
import androidx.compose.material3.ExperimentalMaterial3Api
1517
import androidx.compose.material3.ListItem
1618
import androidx.compose.material3.Text
1719
import androidx.compose.runtime.Composable
20+
import androidx.compose.runtime.LaunchedEffect
21+
import androidx.compose.runtime.getValue
22+
import androidx.compose.runtime.mutableStateOf
23+
import androidx.compose.runtime.remember
24+
import androidx.compose.runtime.setValue
1825
import androidx.compose.ui.Alignment
1926
import androidx.compose.ui.Modifier
2027
import androidx.compose.ui.res.painterResource
2128
import androidx.compose.ui.unit.dp
2229

2330
@Composable
2431
fun LaunchList(onLaunchClick: (launchId: String) -> Unit) {
32+
var launchList by remember { mutableStateOf(emptyList<LaunchListQuery.Launch>()) }
33+
LaunchedEffect(Unit) {
34+
val resp = apolloClient.query(LaunchListQuery()).execute()
35+
launchList = resp.data?.launches?.launches?.filterNotNull() ?: emptyList()
36+
}
2537
LazyColumn(modifier = Modifier.fillMaxSize()) {
26-
items(20) {
27-
LaunchItem(launchId = it.toString(), onClick = onLaunchClick)
38+
items(launchList) { launch ->
39+
LaunchItem(launch, onLaunchClick)
2840
}
2941
}
3042
}
3143

3244
@Composable
33-
private fun LaunchItem(launchId: String, onClick: (launchId: String) -> Unit) {
45+
private fun LaunchItem(launch: LaunchListQuery.Launch, onClick: (launchId: String) -> Unit) {
3446
ListItem(
35-
modifier = Modifier.clickable { onClick(launchId) },
47+
modifier = Modifier.clickable { onClick(launch.id) },
3648
headlineContent = {
3749
// Mission name
38-
Text(text = "Launch $launchId")
50+
Text(text = "Launch ${launch.id}")
3951
},
4052
supportingContent = {
4153
// Site

0 commit comments

Comments
 (0)