Skip to content

Commit 0d74a87

Browse files
committed
[BOOK-188] fix: 도서 상세 화면 전체 화면에 대해 단일 스크롤 방식으로 구조 변경
1 parent 18d7186 commit 0d74a87

4 files changed

Lines changed: 79 additions & 51 deletions

File tree

feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/book/BookDetailUi.kt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,15 @@ package com.ninecraft.booket.feature.detail.book
33
import androidx.compose.foundation.layout.Column
44
import androidx.compose.foundation.layout.Row
55
import androidx.compose.foundation.layout.Spacer
6+
import androidx.compose.foundation.layout.fillMaxSize
67
import androidx.compose.foundation.layout.fillMaxWidth
78
import androidx.compose.foundation.layout.height
89
import androidx.compose.foundation.layout.padding
910
import androidx.compose.foundation.layout.size
1011
import androidx.compose.foundation.layout.width
12+
import androidx.compose.foundation.rememberScrollState
1113
import androidx.compose.foundation.shape.RoundedCornerShape
14+
import androidx.compose.foundation.verticalScroll
1215
import androidx.compose.material3.Icon
1316
import androidx.compose.material3.Text
1417
import androidx.compose.material3.VerticalDivider
@@ -64,7 +67,11 @@ internal fun BookDetailContent(
6467
state: BookDetailUiState,
6568
modifier: Modifier = Modifier,
6669
) {
67-
Column {
70+
Column(
71+
modifier = modifier
72+
.fillMaxSize()
73+
.verticalScroll(rememberScrollState()),
74+
) {
6875
Row(
6976
modifier = modifier
7077
.fillMaxWidth()

feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/book/component/CollectedSeed.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@ import com.ninecraft.booket.core.designsystem.theme.ReedTheme
2424
import com.ninecraft.booket.feature.detail.R
2525
import com.ninecraft.booket.feature.detail.book.BookDetailUiState
2626

27-
// TODO 필요한 파라미터만 선언하여 사용하기
2827
@Composable
2928
internal fun CollectedSeed(
3029
state: BookDetailUiState,
30+
modifier: Modifier = Modifier,
3131
) {
3232
Column(
33-
modifier = Modifier
33+
modifier = modifier
3434
.fillMaxWidth()
3535
.padding(
3636
start = ReedTheme.spacing.spacing5,

feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/book/component/RecordsCollection.kt

Lines changed: 13 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -2,29 +2,19 @@ package com.ninecraft.booket.feature.detail.book.component
22

33
import androidx.compose.foundation.layout.Arrangement
44
import androidx.compose.foundation.layout.PaddingValues
5-
import androidx.compose.foundation.layout.Row
65
import androidx.compose.foundation.layout.Spacer
76
import androidx.compose.foundation.layout.fillMaxWidth
87
import androidx.compose.foundation.layout.height
98
import androidx.compose.foundation.layout.padding
10-
import androidx.compose.foundation.layout.width
119
import androidx.compose.foundation.lazy.LazyColumn
12-
import androidx.compose.material3.Icon
13-
import androidx.compose.material3.Text
1410
import androidx.compose.runtime.Composable
15-
import androidx.compose.ui.Alignment
1611
import androidx.compose.ui.Modifier
17-
import androidx.compose.ui.graphics.vector.ImageVector
18-
import androidx.compose.ui.res.stringResource
19-
import androidx.compose.ui.res.vectorResource
12+
import androidx.compose.ui.unit.dp
2013
import com.ninecraft.booket.core.designsystem.ComponentPreview
2114
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
22-
import com.ninecraft.booket.feature.detail.R
23-
import com.ninecraft.booket.core.designsystem.R as designR
2415
import com.ninecraft.booket.feature.detail.book.BookDetailUiState
2516
import kotlinx.collections.immutable.toImmutableList
2617

27-
// TODO 필요한 파라미터만 선언하여 사용
2818
@Composable
2919
internal fun RecordsCollection(
3020
state: BookDetailUiState,
@@ -33,53 +23,28 @@ internal fun RecordsCollection(
3323
LazyColumn(
3424
modifier = modifier
3525
.fillMaxWidth()
36-
.padding(horizontal = ReedTheme.spacing.spacing5),
26+
.padding(horizontal = ReedTheme.spacing.spacing5)
27+
.height((192 * state.recordCollections.size).dp + 40.dp),
3728
contentPadding = PaddingValues(vertical = ReedTheme.spacing.spacing6),
3829
verticalArrangement = Arrangement.spacedBy(ReedTheme.spacing.spacing3),
30+
userScrollEnabled = false,
3931
) {
4032
item {
41-
Row(
42-
modifier = Modifier.fillMaxWidth(),
43-
verticalAlignment = Alignment.CenterVertically,
44-
horizontalArrangement = Arrangement.SpaceBetween,
45-
) {
46-
Row {
47-
Text(
48-
text = stringResource(R.string.record_collection),
49-
color = ReedTheme.colors.contentPrimary,
50-
style = ReedTheme.typography.headline2SemiBold,
51-
)
52-
Spacer(modifier = Modifier.width(ReedTheme.spacing.spacing1))
53-
Text(
54-
text = "${state.recordCollections.size}",
55-
color = ReedTheme.colors.contentPrimary,
56-
style = ReedTheme.typography.headline2SemiBold,
57-
)
58-
}
59-
Row {
60-
Text(
61-
text = stringResource(state.currentRecordSort.getDisplayNameRes()),
62-
color = ReedTheme.colors.contentSecondary,
63-
style = ReedTheme.typography.label1Medium,
64-
)
65-
Icon(
66-
imageVector = ImageVector.vectorResource(designR.drawable.ic_chevron_down),
67-
contentDescription = "Dropdown Icon",
68-
)
69-
}
70-
}
33+
RecordsCollectionHeader(state = state)
7134
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing1))
7235
}
7336
items(
7437
count = state.recordCollections.size,
7538
key = { index -> state.recordCollections[index].id },
7639
) { index ->
77-
RecordItem(
78-
quote = state.recordCollections[index].quote,
79-
emotionTags = state.recordCollections[index].emotionTags.toImmutableList(),
80-
pageNumber = state.recordCollections[index].pageNumber,
81-
createdAt = state.recordCollections[index].createdAt,
82-
)
40+
state.recordCollections[index].apply {
41+
RecordItem(
42+
quote = quote,
43+
emotionTags = emotionTags.toImmutableList(),
44+
pageNumber = pageNumber,
45+
createdAt = createdAt,
46+
)
47+
}
8348
}
8449
}
8550
}
Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,56 @@
1+
package com.ninecraft.booket.feature.detail.book.component
2+
3+
import androidx.compose.foundation.layout.Arrangement
4+
import androidx.compose.foundation.layout.Row
5+
import androidx.compose.foundation.layout.Spacer
6+
import androidx.compose.foundation.layout.fillMaxWidth
7+
import androidx.compose.foundation.layout.width
8+
import androidx.compose.material3.Icon
9+
import androidx.compose.material3.Text
10+
import androidx.compose.runtime.Composable
11+
import androidx.compose.ui.Alignment
12+
import androidx.compose.ui.Modifier
13+
import androidx.compose.ui.graphics.vector.ImageVector
14+
import androidx.compose.ui.res.stringResource
15+
import androidx.compose.ui.res.vectorResource
16+
import com.ninecraft.booket.core.designsystem.R as designR
17+
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
18+
import com.ninecraft.booket.feature.detail.R
19+
import com.ninecraft.booket.feature.detail.book.BookDetailUiState
20+
21+
@Composable
22+
internal fun RecordsCollectionHeader(
23+
state: BookDetailUiState,
24+
modifier: Modifier = Modifier,
25+
) {
26+
Row(
27+
modifier = modifier.fillMaxWidth(),
28+
verticalAlignment = Alignment.CenterVertically,
29+
horizontalArrangement = Arrangement.SpaceBetween,
30+
) {
31+
Row {
32+
Text(
33+
text = stringResource(R.string.record_collection),
34+
color = ReedTheme.colors.contentPrimary,
35+
style = ReedTheme.typography.headline2SemiBold,
36+
)
37+
Spacer(modifier = Modifier.width(ReedTheme.spacing.spacing1))
38+
Text(
39+
text = "${state.recordCollections.size}",
40+
color = ReedTheme.colors.contentBrand,
41+
style = ReedTheme.typography.headline2SemiBold,
42+
)
43+
}
44+
Row {
45+
Text(
46+
text = stringResource(state.currentRecordSort.getDisplayNameRes()),
47+
color = ReedTheme.colors.contentSecondary,
48+
style = ReedTheme.typography.label1Medium,
49+
)
50+
Icon(
51+
imageVector = ImageVector.vectorResource(designR.drawable.ic_chevron_down),
52+
contentDescription = "Dropdown Icon",
53+
)
54+
}
55+
}
56+
}

0 commit comments

Comments
 (0)