-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathReposSuccessScreen.kt
90 lines (84 loc) · 2.95 KB
/
ReposSuccessScreen.kt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
package nextstep.github.ui.repos
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxWidth
import androidx.compose.foundation.layout.height
import androidx.compose.foundation.layout.padding
import androidx.compose.foundation.lazy.LazyColumn
import androidx.compose.foundation.lazy.items
import androidx.compose.material3.HorizontalDivider
import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.Scaffold
import androidx.compose.material3.Text
import androidx.compose.runtime.Composable
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.res.stringResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.tooling.preview.PreviewParameter
import androidx.compose.ui.tooling.preview.PreviewParameterProvider
import androidx.compose.ui.unit.dp
import nextstep.github.R
import nextstep.github.ui.model.UiGitHubRepoInfo
import nextstep.github.ui.repos.component.GitHubRepoInfoItem
@Composable
internal fun ReposSuccessScreen(
repos: List<UiGitHubRepoInfo>,
modifier: Modifier = Modifier
) {
Scaffold(
modifier = modifier,
topBar = {
Box(
modifier = Modifier
.height(56.dp)
.fillMaxWidth(),
contentAlignment = Alignment.Center
) {
Text(
text = stringResource(R.string.repos_successscreen_title),
style = MaterialTheme.typography.titleLarge
)
}
},
content = { paddingValues ->
LazyColumn(modifier = Modifier.padding(paddingValues)) {
items(repos) { r ->
GitHubRepoInfoItem(
gitHubRepoInfo = r,
modifier = Modifier.fillMaxWidth()
)
HorizontalDivider(
thickness = 1.dp,
color = MaterialTheme.colorScheme.outlineVariant
)
}
}
}
)
}
private data class ReposSuccessScreenPreviewParameter(
val repos: List<UiGitHubRepoInfo>
)
private class ReposSuccessScreenPreviewParameterProvider :
PreviewParameterProvider<ReposSuccessScreenPreviewParameter> {
override val values: Sequence<ReposSuccessScreenPreviewParameter> = sequenceOf(
ReposSuccessScreenPreviewParameter(
repos = List(10) {
UiGitHubRepoInfo(
fullName = "next-step/nextstep-docs",
description = "NextStep 메뉴얼 및 문서를 관리하는 저장소"
)
}
)
)
}
@Preview
@Composable
private fun ReposSuccessScreenPreview(
@PreviewParameter(ReposSuccessScreenPreviewParameterProvider::class)
parameter: ReposSuccessScreenPreviewParameter
) {
MaterialTheme {
ReposSuccessScreen(repos = parameter.repos)
}
}