Skip to content

Commit 2840c55

Browse files
committed
Merge branch 'develop' into BOOK-212-feature/#98
# Conflicts: # feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/book/BookDetailUi.kt # feature/home/src/main/kotlin/com/ninecraft/booket/feature/home/HomeUiState.kt
2 parents d181491 + 838870e commit 2840c55

File tree

51 files changed

+898
-762
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+898
-762
lines changed

core/data/api/src/main/kotlin/com/ninecraft/booket/core/data/api/repository/AuthRepository.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ interface AuthRepository {
88

99
suspend fun logout(): Result<Unit>
1010

11+
suspend fun withdraw(): Result<Unit>
12+
1113
suspend fun agreeTerms(termsAgreed: Boolean): Result<Unit>
1214

1315
val autoLoginState: Flow<AutoLoginState>

core/data/impl/src/main/kotlin/com/ninecraft/booket/core/data/impl/repository/DefaultAuthRepository.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,11 @@ internal class DefaultAuthRepository @Inject constructor(
3131
clearTokens()
3232
}
3333

34+
override suspend fun withdraw() = runSuspendCatching {
35+
service.withdraw()
36+
clearTokens()
37+
}
38+
3439
override suspend fun agreeTerms(termsAgreed: Boolean) = runSuspendCatching {
3540
service.agreeTerms(TermsAgreementRequest(termsAgreed))
3641
Unit

core/designsystem/build.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ dependencies {
1313
implementations(
1414
projects.core.common,
1515

16+
libs.androidx.splash,
17+
1618
libs.coil.compose,
1719
libs.logger,
1820

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
<vector xmlns:android="http://schemas.android.com/apk/res/android"
2+
android:width="108dp"
3+
android:height="108dp"
4+
android:viewportWidth="192"
5+
android:viewportHeight="192">
6+
7+
<path
8+
android:fillColor="@color/green_500"
9+
android:pathData="M0,0h192v192h-192z" />
10+
11+
</vector>

core/designsystem/src/main/res/values/colors.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,5 @@
77
<color name="teal_700">#FF018786</color>
88
<color name="black">#FF000000</color>
99
<color name="white">#FFFFFFFF</color>
10+
<color name="green_500">#FF2F9647</color>
1011
</resources>
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<resources>
3+
4+
<style name="Theme.Booket.Splash" parent="Theme.SplashScreen">
5+
<item name="windowSplashScreenBackground">#FF2F9647</item>
6+
<item name="windowSplashScreenAnimatedIcon">@drawable/ic_dummy_splash</item>
7+
<item name="postSplashScreenTheme">@style/Theme.Booket</item>
8+
</style>
9+
10+
</resources>

core/network/src/main/kotlin/com/ninecraft/booket/core/network/service/ReedService.kt

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import com.ninecraft.booket.core.network.response.SeedResponse
1919
import com.ninecraft.booket.core.network.response.TermsAgreementResponse
2020
import com.ninecraft.booket.core.network.response.UserProfileResponse
2121
import retrofit2.http.Body
22+
import retrofit2.http.DELETE
2223
import retrofit2.http.GET
2324
import retrofit2.http.POST
2425
import retrofit2.http.PUT
@@ -37,10 +38,14 @@ interface ReedService {
3738
@POST("api/v1/auth/signout")
3839
suspend fun logout()
3940

40-
@PUT("api/v1/auth/terms-agreement")
41+
@DELETE("api/v1/auth/withdraw")
42+
suspend fun withdraw()
43+
44+
// User endpoints (auth required)
45+
@PUT("api/v1/users/terms-agreement")
4146
suspend fun agreeTerms(@Body termsAgreementRequest: TermsAgreementRequest): TermsAgreementResponse
4247

43-
@GET("api/v1/auth/me")
48+
@GET("api/v1/users/me")
4449
suspend fun getUserProfile(): UserProfileResponse
4550

4651
// Book endpoints (auth required)

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

Lines changed: 25 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.ninecraft.booket.feature.detail.book
33
import androidx.compose.foundation.clickable
44
import androidx.compose.foundation.layout.Box
55
import androidx.compose.foundation.layout.Column
6+
import androidx.compose.foundation.layout.PaddingValues
67
import androidx.compose.foundation.layout.Row
78
import androidx.compose.foundation.layout.Spacer
89
import androidx.compose.foundation.layout.fillMaxSize
@@ -22,28 +23,23 @@ import androidx.compose.runtime.Composable
2223
import androidx.compose.runtime.rememberCoroutineScope
2324
import androidx.compose.ui.Alignment
2425
import androidx.compose.ui.Modifier
26+
import androidx.compose.ui.draw.clip
2527
import androidx.compose.ui.graphics.vector.ImageVector
26-
import androidx.compose.ui.res.stringResource
28+
import androidx.compose.ui.res.painterResource
2729
import androidx.compose.ui.res.vectorResource
28-
import androidx.compose.ui.text.style.TextAlign
30+
import androidx.compose.ui.text.style.TextOverflow
2931
import androidx.compose.ui.unit.dp
3032
import com.ninecraft.booket.core.common.constants.BookStatus
3133
import com.ninecraft.booket.core.designsystem.ComponentPreview
34+
import com.ninecraft.booket.core.designsystem.component.NetworkImage
3235
import com.ninecraft.booket.core.designsystem.component.ReedDivider
3336
import com.ninecraft.booket.core.designsystem.component.button.ReedButton
3437
import com.ninecraft.booket.core.designsystem.component.button.ReedButtonColorStyle
3538
import com.ninecraft.booket.core.designsystem.component.button.largeButtonStyle
3639
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
37-
import com.ninecraft.booket.core.ui.component.InfinityLazyColumn
38-
import com.ninecraft.booket.core.ui.component.LoadStateFooter
40+
import com.ninecraft.booket.core.ui.ReedScaffold
3941
import com.ninecraft.booket.core.ui.component.ReedBackTopAppBar
40-
import com.ninecraft.booket.core.ui.component.ReedFullScreen
41-
import com.ninecraft.booket.feature.detail.R
42-
import com.ninecraft.booket.feature.detail.book.component.BookItem
4342
import com.ninecraft.booket.feature.detail.book.component.BookUpdateBottomSheet
44-
import com.ninecraft.booket.feature.detail.book.component.CollectedSeeds
45-
import com.ninecraft.booket.feature.detail.book.component.ReadingRecordsHeader
46-
import com.ninecraft.booket.feature.detail.book.component.RecordItem
4743
import com.ninecraft.booket.feature.detail.book.component.RecordSortBottomSheet
4844
import com.ninecraft.booket.feature.screens.BookDetailScreen
4945
import com.slack.circuit.codegen.annotations.CircuitInject
@@ -68,14 +64,13 @@ internal fun BookDetailUi(
6864
eventSink = state.eventSink,
6965
)
7066

71-
ReedFullScreen(modifier = modifier) {
72-
ReedBackTopAppBar(
73-
title = "",
74-
onBackClick = {
75-
state.eventSink(BookDetailUiEvent.OnBackClick)
76-
},
67+
ReedScaffold(
68+
modifier = modifier.fillMaxSize(),
69+
) { innerPadding ->
70+
BookDetailContent(
71+
state = state,
72+
innerPadding = innerPadding,
7773
)
78-
BookDetailContent(state = state)
7974
}
8075

8176
if (state.isBookUpdateBottomSheetVisible) {
@@ -125,16 +120,28 @@ internal fun BookDetailUi(
125120
@Composable
126121
internal fun BookDetailContent(
127122
state: BookDetailUiState,
123+
innerPadding: PaddingValues,
128124
modifier: Modifier = Modifier,
129125
lazyListState: LazyListState = rememberLazyListState(),
130126
) {
131127
InfinityLazyColumn(
132-
modifier = modifier.fillMaxSize(),
128+
modifier = modifier
129+
.fillMaxSize()
130+
.padding(innerPadding),
133131
state = lazyListState,
134132
loadMore = {
135133
state.eventSink(BookDetailUiEvent.OnLoadMore)
136134
},
137135
) {
136+
item {
137+
ReedBackTopAppBar(
138+
title = "",
139+
onBackClick = {
140+
state.eventSink(BookDetailUiEvent.OnBackClick)
141+
},
142+
)
143+
}
144+
138145
item {
139146
Column {
140147
BookItem(bookDetail = state.bookDetail)

feature/detail/src/main/kotlin/com/ninecraft/booket/feature/detail/record/RecordDetailUi.kt

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package com.ninecraft.booket.feature.detail.record
22

3-
import androidx.compose.foundation.background
43
import androidx.compose.foundation.layout.BoxWithConstraints
54
import androidx.compose.foundation.layout.Column
5+
import androidx.compose.foundation.layout.PaddingValues
66
import androidx.compose.foundation.layout.Row
77
import androidx.compose.foundation.layout.Spacer
88
import androidx.compose.foundation.layout.fillMaxSize
@@ -28,7 +28,7 @@ import com.ninecraft.booket.core.designsystem.component.ReedDivider
2828
import com.ninecraft.booket.core.designsystem.theme.ReedTheme
2929
import com.ninecraft.booket.core.designsystem.theme.White
3030
import com.ninecraft.booket.core.model.RecordDetailModel
31-
import com.ninecraft.booket.core.ui.component.ReedFullScreen
31+
import com.ninecraft.booket.core.ui.ReedScaffold
3232
import com.ninecraft.booket.core.ui.component.ReedTopAppBar
3333
import com.ninecraft.booket.feature.detail.R
3434
import com.ninecraft.booket.feature.detail.record.component.QuoteBox
@@ -48,26 +48,36 @@ internal fun RecordDetailUi(
4848
state = state,
4949
)
5050

51-
ReedFullScreen(modifier = modifier) {
52-
ReedTopAppBar(
53-
title = stringResource(R.string.review_detail_title),
54-
startIconRes = designR.drawable.ic_close,
55-
startIconDescription = "Close Icon",
56-
startIconOnClick = {
57-
state.eventSink(RecordDetailUiEvent.OnCloseClicked)
58-
},
51+
ReedScaffold(
52+
modifier = modifier.fillMaxSize(),
53+
containerColor = White,
54+
) { innerPadding ->
55+
ReviewDetailContent(
56+
state = state,
57+
innerPadding = innerPadding,
5958
)
60-
ReviewDetailContent(state = state, modifier = modifier)
6159
}
6260
}
6361

6462
@Composable
65-
private fun ReviewDetailContent(state: RecordDetailUiState, modifier: Modifier = Modifier) {
63+
private fun ReviewDetailContent(
64+
state: RecordDetailUiState,
65+
innerPadding: PaddingValues,
66+
modifier: Modifier = Modifier,
67+
) {
6668
Column(
67-
modifier = Modifier
69+
modifier = modifier
6870
.fillMaxSize()
69-
.background(White),
71+
.padding(innerPadding),
7072
) {
73+
ReedTopAppBar(
74+
title = stringResource(R.string.review_detail_title),
75+
startIconRes = designR.drawable.ic_close,
76+
startIconDescription = "Close Icon",
77+
startIconOnClick = {
78+
state.eventSink(RecordDetailUiEvent.OnCloseClicked)
79+
},
80+
)
7181
Row(
7282
modifier = modifier
7383
.fillMaxWidth()

feature/home/build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,5 @@ ksp {
1717
dependencies {
1818
implementations(
1919
libs.logger,
20-
21-
libs.compose.system.ui.controller,
2220
)
2321
}

0 commit comments

Comments
 (0)