Skip to content

Commit 16237ed

Browse files
committed
[BOOK-252] fix: 기록 목록 조회 DTO 변경사항 반영
1 parent 91462f8 commit 16237ed

File tree

7 files changed

+35
-22
lines changed

7 files changed

+35
-22
lines changed

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/mapper/ResponseToModel.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -170,8 +170,11 @@ internal fun RecordRegisterResponse.toModel(): RecordRegisterModel {
170170

171171
internal fun ReadingRecordsResponse.toModel(): ReadingRecordsModel {
172172
return ReadingRecordsModel(
173-
content = content.map { it.toModel() },
174-
page = page.toModel(),
173+
lastPage = lastPage,
174+
totalResults = totalResults,
175+
startIndex = startIndex,
176+
itemsPerPage = itemsPerPage,
177+
readingRecords = readingRecords.map { it.toModel() },
175178
)
176179
}
177180

@@ -188,6 +191,7 @@ internal fun ReadingRecord.toModel(): ReadingRecordModel {
188191
bookTitle = bookTitle,
189192
bookPublisher = bookPublisher,
190193
bookCoverImageUrl = bookCoverImageUrl,
194+
author = author,
191195
)
192196
}
193197

core/model/src/main/kotlin/com/ninecraft/booket/core/model/ReadingRecordsModel.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package com.ninecraft.booket.core.model
22

33
data class ReadingRecordsModel(
4-
val content: List<ReadingRecordModel> = emptyList(),
5-
val page: PageInfoModel = PageInfoModel(),
4+
val lastPage: Boolean = true,
5+
val totalResults: Int = 0,
6+
val startIndex: Int = 0,
7+
val itemsPerPage: Int = 0,
8+
val readingRecords: List<ReadingRecordModel> = emptyList(),
69
)
710

811
data class ReadingRecordModel(
@@ -17,4 +20,5 @@ data class ReadingRecordModel(
1720
val bookTitle: String = "",
1821
val bookPublisher: String = "",
1922
val bookCoverImageUrl: String = "",
23+
val author: String = "",
2024
)

core/network/src/main/kotlin/com/ninecraft/booket/core/network/response/ReadingRecordsResponse.kt

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,16 @@ import kotlinx.serialization.Serializable
55

66
@Serializable
77
data class ReadingRecordsResponse(
8-
@SerialName("content")
9-
val content: List<ReadingRecord>,
10-
@SerialName("page")
11-
val page: PageInfo,
8+
@SerialName("lastPage")
9+
val lastPage: Boolean,
10+
@SerialName("totalResults")
11+
val totalResults: Int,
12+
@SerialName("startIndex")
13+
val startIndex: Int,
14+
@SerialName("itemsPerPage")
15+
val itemsPerPage: Int,
16+
@SerialName("readingRecords")
17+
val readingRecords: List<ReadingRecord>,
1218
)
1319

1420
@Serializable
@@ -35,4 +41,6 @@ data class ReadingRecord(
3541
val bookPublisher: String,
3642
@SerialName("bookCoverImageUrl")
3743
val bookCoverImageUrl: String,
44+
@SerialName("author")
45+
val author: String,
3846
)

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

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@ import com.ninecraft.booket.core.data.api.repository.BookRepository
1515
import com.ninecraft.booket.core.data.api.repository.RecordRepository
1616
import com.ninecraft.booket.core.model.BookDetailModel
1717
import com.ninecraft.booket.core.model.EmotionModel
18-
import com.ninecraft.booket.core.model.PageInfoModel
1918
import com.ninecraft.booket.core.model.ReadingRecordModel
2019
import com.ninecraft.booket.core.ui.component.FooterState
2120
import com.ninecraft.booket.feature.screens.BookDetailScreen
@@ -65,7 +64,7 @@ class BookDetailPresenter @AssistedInject constructor(
6564
var bookDetail by rememberRetained { mutableStateOf(BookDetailModel()) }
6665
var seedsStates by rememberRetained { mutableStateOf<ImmutableList<EmotionModel>>(persistentListOf()) }
6766
var readingRecords by rememberRetained { mutableStateOf(persistentListOf<ReadingRecordModel>()) }
68-
var readingRecordsPageInfo by rememberRetained { mutableStateOf(PageInfoModel()) }
67+
var readingRecordsTotalCount by rememberRetained { mutableIntStateOf(0) }
6968
var currentStartIndex by rememberRetained { mutableIntStateOf(START_INDEX) }
7069
var isLastPage by rememberRetained { mutableStateOf(false) }
7170
var currentBookStatus by rememberRetained { mutableStateOf(BookStatus.READING) }
@@ -99,10 +98,10 @@ class BookDetailPresenter @AssistedInject constructor(
9998
currentBookStatus = BookStatus.fromValue(detail.userBookStatus) ?: BookStatus.BEFORE_READING
10099
selectedBookStatus = currentBookStatus
101100
seedsStates = seeds.categories.toImmutableList()
102-
readingRecords = records.content.toPersistentList()
103-
readingRecordsPageInfo = records.page
101+
readingRecords = records.readingRecords.toPersistentList()
102+
readingRecordsTotalCount = records.totalResults
104103

105-
isLastPage = records.content.size < PAGE_SIZE
104+
isLastPage = records.lastPage
106105
currentStartIndex = START_INDEX
107106

108107
uiState = UiState.Success
@@ -170,9 +169,9 @@ class BookDetailPresenter @AssistedInject constructor(
170169
page = startIndex,
171170
size = PAGE_SIZE,
172171
).onSuccess { result ->
173-
readingRecords = (readingRecords + result.content).toPersistentList()
172+
readingRecords = (readingRecords + result.readingRecords).toPersistentList()
174173
currentStartIndex = startIndex
175-
isLastPage = result.content.size < PAGE_SIZE
174+
isLastPage = result.lastPage
176175
footerState = if (isLastPage) FooterState.End else FooterState.Idle
177176
}.onFailure { exception ->
178177
Logger.d(exception)
@@ -254,7 +253,7 @@ class BookDetailPresenter @AssistedInject constructor(
254253
bookDetail = bookDetail,
255254
seedsStats = seedsStates,
256255
readingRecords = readingRecords,
257-
readingRecordsPageInfo = readingRecordsPageInfo,
256+
readingRecordsTotalCount = readingRecordsTotalCount,
258257
isBookUpdateBottomSheetVisible = isBookUpdateBottomSheetVisible,
259258
isRecordSortBottomSheetVisible = isRecordSortBottomSheetVisible,
260259
currentBookStatus = currentBookStatus,

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -223,7 +223,7 @@ internal fun BookDetailContent(
223223
) {
224224
Spacer(modifier = Modifier.height(ReedTheme.spacing.spacing6))
225225
ReadingRecordsHeader(
226-
pageInfo = state.readingRecordsPageInfo,
226+
totalCount = state.readingRecordsTotalCount,
227227
currentRecordSort = state.currentRecordSort,
228228
onReadingRecordClick = {
229229
state.eventSink(BookDetailUiEvent.OnRecordSortButtonClick)

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import com.ninecraft.booket.core.common.R
55
import com.ninecraft.booket.core.common.constants.BookStatus
66
import com.ninecraft.booket.core.model.BookDetailModel
77
import com.ninecraft.booket.core.model.EmotionModel
8-
import com.ninecraft.booket.core.model.PageInfoModel
98
import com.ninecraft.booket.core.model.ReadingRecordModel
109
import com.ninecraft.booket.core.ui.component.FooterState
1110
import com.slack.circuit.runtime.CircuitUiEvent
@@ -28,7 +27,7 @@ data class BookDetailUiState(
2827
val bookDetail: BookDetailModel = BookDetailModel(),
2928
val seedsStats: ImmutableList<EmotionModel> = persistentListOf(),
3029
val readingRecords: ImmutableList<ReadingRecordModel> = persistentListOf(),
31-
val readingRecordsPageInfo: PageInfoModel = PageInfoModel(),
30+
val readingRecordsTotalCount: Int = 0,
3231
val currentStartIndex: Int = 1,
3332
val isLastPage: Boolean = false,
3433
val currentBookStatus: BookStatus = BookStatus.BEFORE_READING,

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,13 @@ import androidx.compose.ui.graphics.vector.ImageVector
1515
import androidx.compose.ui.res.stringResource
1616
import androidx.compose.ui.res.vectorResource
1717
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
18-
import com.ninecraft.booket.core.model.PageInfoModel
1918
import com.ninecraft.booket.feature.detail.R
2019
import com.ninecraft.booket.feature.detail.book.RecordSort
2120
import com.ninecraft.booket.core.designsystem.R as designR
2221

2322
@Composable
2423
internal fun ReadingRecordsHeader(
25-
pageInfo: PageInfoModel,
24+
totalCount: Int,
2625
currentRecordSort: RecordSort,
2726
onReadingRecordClick: () -> Unit,
2827
modifier: Modifier = Modifier,
@@ -40,7 +39,7 @@ internal fun ReadingRecordsHeader(
4039
)
4140
Spacer(modifier = Modifier.width(ReedTheme.spacing.spacing1))
4241
Text(
43-
text = "${pageInfo.totalElements}",
42+
text = "$totalCount",
4443
color = ReedTheme.colors.contentBrand,
4544
style = ReedTheme.typography.headline2SemiBold,
4645
)

0 commit comments

Comments
 (0)