-
Notifications
You must be signed in to change notification settings - Fork 0
feat: 홈 화면 UI 구현 #75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: 홈 화면 UI 구현 #75
Changes from 5 commits
f9fe278
d039317
013983d
168e58a
1d853ff
bc1d6be
ac5f247
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -17,5 +17,7 @@ ksp { | |
| dependencies { | ||
| implementations( | ||
| libs.logger, | ||
|
|
||
| libs.compose.system.ui.controller, | ||
| ) | ||
| } | ||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -1,21 +1,38 @@ | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| package com.ninecraft.booket.feature.home | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.background | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Arrangement | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Box | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Column | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.PaddingValues | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Row | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.Spacer | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxSize | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.fillMaxWidth | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.height | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.material3.Button | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.padding | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.layout.size | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.pager.HorizontalPager | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.pager.rememberPagerState | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.foundation.shape.CircleShape | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.material3.Text | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.runtime.Composable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Alignment | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.runtime.DisposableEffect | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.draw.clip | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.res.stringResource | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import androidx.compose.ui.unit.dp | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.core.designsystem.DevicePreview | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.core.designsystem.theme.HomeBg | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.core.designsystem.theme.ReedTheme | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.core.designsystem.theme.White | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.feature.home.component.BookCard | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.feature.home.component.HomeBanner | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.feature.home.component.HomeHeader | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.ninecraft.booket.feature.screens.HomeScreen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import com.slack.circuit.codegen.annotations.CircuitInject | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import dagger.hilt.android.components.ActivityRetainedComponent | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| import tech.thdev.compose.exteions.system.ui.controller.rememberSystemUiController | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @CircuitInject(HomeScreen::class, ActivityRetainedComponent::class) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -25,8 +42,6 @@ internal fun HomeUi( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = modifier.fillMaxSize(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| horizontalAlignment = Alignment.CenterHorizontally, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| verticalArrangement = Arrangement.Center, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HomeContent( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state = state, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
@@ -35,28 +50,90 @@ internal fun HomeUi( | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Suppress("unused") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| @Composable | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| internal fun HomeContent( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state: HomeUiState, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier: Modifier = Modifier, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Text(text = "홈") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(16.dp)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Button( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onClick = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state.eventSink(HomeUiEvent.OnButtonClick) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Text(text = "도서 검색 이동") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| val dummyBooks = listOf( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Book("여름은 오래 그곳에 남아", "마쓰이에 마사시", "비채", "https://image.aladin.co.kr/product/7492/9/cover200/8934972203_1.jpg", 3), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Book("여름은 오래 그곳에 남아", "마쓰이에 마사시", "비채", "https://image.aladin.co.kr/product/7492/9/cover200/8934972203_1.jpg", 3), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Book("여름은 오래 그곳에 남아", "마쓰이에 마사시", "비채", "https://image.aladin.co.kr/product/7492/9/cover200/8934972203_1.jpg", 3) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 더미 데이터 위치 개선 필요 더미 데이터가 UI 레이어에 하드코딩되어 있습니다. 이는 Presenter나 State에서 관리하는 것이 더 적절합니다. HomeUiState에 books 필드를 추가하고 Presenter에서 더미 데이터를 제공하는 방식으로 변경을 고려해보세요. 🤖 Prompt for AI Agents
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. UI 보여주기 위해 하드코딩한거고 서버 연동할 때 바꿀거야 There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @seoyoon513 네, 이해했습니다! UI 구현을 위한 임시 더미 데이터군요. 서버 연동 시점에 적절히 리팩토링하시면 됩니다. ✏️ Learnings added
🧠 Learnings used |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| val systemUiController = rememberSystemUiController() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| DisposableEffect(systemUiController) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| systemUiController.setStatusBarColor( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color = HomeBg, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| darkIcons = true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onDispose { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| systemUiController.setStatusBarColor( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color = White, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| darkIcons = true, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(16.dp)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Button( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onClick = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state.eventSink(HomeUiEvent.OnRecordButtonClick) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HomeHeader( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onSettingsClick = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state.eventSink(HomeUiEvent.OnSettingsClick) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = modifier, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HomeBanner( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onBookRegisterClick = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state.eventSink(HomeUiEvent.OnBookRegisterClick) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = modifier, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Column( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .fillMaxSize() | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .background(ReedTheme.colors.baseSecondary), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Text(text = "독서 기록 작성") | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing6)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Text( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| text = stringResource(R.string.home_content_label_reading_now), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.padding(start = ReedTheme.spacing.spacing5), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| color = ReedTheme.colors.contentSecondary, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| style = ReedTheme.typography.headline2Medium, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing3)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| val pagerState = rememberPagerState(pageCount = { dummyBooks.size }) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| HorizontalPager( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state = pagerState, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.fillMaxWidth(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| contentPadding = PaddingValues(horizontal = ReedTheme.spacing.spacing5), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| pageSpacing = ReedTheme.spacing.spacing5, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { page -> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| BookCard( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| bookInfo = dummyBooks[page], | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onBookDetailClick = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state.eventSink(HomeUiEvent.OnBookDetailClick) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| }, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| onRecordButtonClick = { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| state.eventSink(HomeUiEvent.OnRecordButtonClick) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+104
to
+120
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🛠️ Refactor suggestion 빈 리스트 처리 추가 필요
val pagerState = rememberPagerState(pageCount = { dummyBooks.size })
+if (dummyBooks.isEmpty()) {
+ // EmptyBookCard 표시 또는 다른 빈 상태 UI
+ return
+}
HorizontalPager(또는 📝 Committable suggestion
Suggested change
🤖 Prompt for AI Agents
Contributor
Author
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 어차피 dummy 데이터로 하는거라 EmtyBookCard 적용은 API 연결 때 할 예정! There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @seoyoon513 네, 이해했습니다! 더미 데이터 단계에서는 현재 구현으로 충분하고, API 연동 시점에 실제 데이터와 함께 빈 상태 처리를 구현하는 것이 합리적인 접근 방식이네요. 👍 🧠 Learnings used |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing5)) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Row( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier.fillMaxWidth(), | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| horizontalArrangement = Arrangement.Center, | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) { | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| repeat(pagerState.pageCount) { iteration -> | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| val color = if (pagerState.currentPage == iteration) ReedTheme.colors.bgPrimary else ReedTheme.colors.bgSecondaryPressed | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Box( | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| modifier = Modifier | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .size(12.dp) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .padding(3.dp) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .clip(CircleShape) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| .background(color) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| } | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
BookDetailScreen 파라미터 확인 필요
BookDetailScreen에 빈 문자열이 전달되고 있습니다. 실제 책 ID나 데이터가 전달되어야 하는지 확인이 필요합니다.
다음 스크립트로 BookDetailScreen의 파라미터 요구사항을 확인해보세요:
🏁 Script executed:
Length of output: 102
BookDetailScreen 선언 위치 확인을 위해 전체 코드베이스에서 해당 이름을 검색해 주세요:
🏁 Script executed:
Length of output: 1736
BookDetailScreen에 ISBN 파라미터 전달 필요
BookDetailScreen은
data class BookDetailScreen(val isbn: String)로 선언되어 있어, 빈 문자열이 아닌 실제 ISBN을 전달하셔야 합니다.파일:
feature/home/src/main/kotlin/com/ninecraft/booket/feature/home/HomePresenter.kt
라인: 42
수정 제안:
예를 들어, 이벤트에 ISBN이 담겨 있다면:
📝 Committable suggestion
🤖 Prompt for AI Agents
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
여기도 서버 연동할 때 변경사항이 생길 예정이라 그때 바꿀게
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@seoyoon513 알겠습니다! 팀에서 UI 구현 단계에서 더미 데이터를 사용하고 서버 연동 시점에 실제 데이터로 교체하는 방식을 사용하신다는 점을 고려하면, 서버 연동할 때 함께 수정하시는 것이 합리적이네요.
그때 실제 책 데이터와 함께 올바른 ISBN 파라미터를 전달하도록 수정해주시면 됩니다! 🐰
🧠 Learnings used