Skip to content

Commit a165245

Browse files
committed
FEAT: 유저 이름 가져오도록 구현
1 parent 6dd7bf0 commit a165245

File tree

10 files changed

+94
-4
lines changed

10 files changed

+94
-4
lines changed
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package com.plottwist.core.data.mapper
2+
3+
import com.plottwist.core.domain.model.MemberInfo
4+
import com.plottwist.core.network.model.onboarding.MemberInfoData
5+
6+
fun MemberInfoData.toDomainModel() : MemberInfo {
7+
return MemberInfo(
8+
memberId = this.memberId,
9+
email = this.email,
10+
name = this.name
11+
)
12+
}

core/data/src/main/java/com/plottwist/core/data/onboarding/OnboardingRepositoryImpl.kt

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.plottwist.core.data.onboarding
22

3+
import com.plottwist.core.data.mapper.toDomainModel
4+
import com.plottwist.core.domain.model.MemberInfo
35
import com.plottwist.core.domain.onboarding.OnboardingRepository
46
import com.plottwist.core.network.model.onboarding.UpdateOnboardingInfoRequest
57
import com.plottwist.core.network.service.OnboardingService
@@ -27,4 +29,18 @@ class OnboardingRepositoryImpl @Inject constructor(
2729
return Result.failure(Exception(e))
2830
}
2931
}
32+
33+
override suspend fun getMemberInfo(): Result<MemberInfo> {
34+
try {
35+
val result = onboardingService.getMemberInfo()
36+
37+
if (result.success) {
38+
return Result.success(result.data.toDomainModel())
39+
}
40+
41+
return Result.failure(Exception("Fail to get member info"))
42+
} catch (e:Exception) {
43+
return Result.failure(Exception(e))
44+
}
45+
}
3046
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
package com.plottwist.core.domain.model
2+
3+
data class MemberInfo(
4+
val memberId: Long,
5+
val email: String,
6+
val name: String
7+
)
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package com.plottwist.core.domain.onboarding
22

3+
import com.plottwist.core.domain.model.MemberInfo
4+
35
interface OnboardingRepository {
46
suspend fun updateOnboardingInfo(
57
name: String
68
): Result<Unit>
9+
10+
suspend fun getMemberInfo(): Result<MemberInfo>
711
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package com.plottwist.core.domain.onboarding.usecase
2+
3+
import com.plottwist.core.domain.model.MemberInfo
4+
import com.plottwist.core.domain.onboarding.OnboardingRepository
5+
import javax.inject.Inject
6+
7+
class GetMemberInfoUseCase @Inject constructor(
8+
private val onboardingRepository: OnboardingRepository
9+
) {
10+
suspend operator fun invoke(): Result<MemberInfo> {
11+
return onboardingRepository.getMemberInfo()
12+
}
13+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package com.plottwist.core.network.model.onboarding
2+
3+
import com.plottwist.core.network.model.auth.Meta
4+
import kotlinx.serialization.Serializable
5+
6+
@Serializable
7+
data class MemberInfoResponse(
8+
val success: Boolean,
9+
val data: MemberInfoData,
10+
val meta: Meta?
11+
)
12+
13+
@Serializable
14+
data class MemberInfoData(
15+
val memberId: Long,
16+
val email: String,
17+
val name: String
18+
)

core/network/src/main/java/com/plottwist/core/network/service/OnboardingService.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
package com.plottwist.core.network.service
22

3-
import com.plottwist.core.network.model.auth.DeviceInfo
43
import com.plottwist.core.network.model.auth.DeviceInfoRequest
4+
import com.plottwist.core.network.model.onboarding.MemberInfoResponse
55
import com.plottwist.core.network.model.onboarding.UpdateDeviceInfoResponse
66
import com.plottwist.core.network.model.onboarding.UpdateOnboardingInfoRequest
77
import com.plottwist.core.network.model.onboarding.UpdateOnboardingInfoResponse
88
import retrofit2.http.Body
9+
import retrofit2.http.GET
910
import retrofit2.http.POST
1011
import retrofit2.http.PUT
1112

@@ -19,4 +20,7 @@ interface OnboardingService {
1920
suspend fun updateDeviceToken(
2021
@Body deviceInfo: DeviceInfoRequest
2122
): UpdateDeviceInfoResponse
23+
24+
@GET("/api/v1/members/me")
25+
suspend fun getMemberInfo(): MemberInfoResponse
2226
}

feature/home/src/main/java/com/plottwist/feature/home/HomeContract.kt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import com.plottwist.core.domain.model.Gatherings
44

55
data class HomeState(
66
val loginState: LoginState = LoginState.Loading,
7+
val userName: String = "",
78
val gatherings: Gatherings = Gatherings(),
89
val whenLabel: String = "",
910
val whereLabel: String = "",

feature/home/src/main/java/com/plottwist/feature/home/HomeScreen.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,6 +147,7 @@ fun HomeScreen(
147147
modifier = modifier.fillMaxSize(),
148148
screenHeight = configuration.screenHeightDp.dp,
149149
statusBarHeight = statusBarHeight,
150+
userName = state.userName,
150151
whenLabels = state.whenTags,
151152
whereLabels = state.whereTags,
152153
whatLabels = state.whatTags,
@@ -226,6 +227,7 @@ fun HomeScreen(
226227
private fun HomeScreen(
227228
screenHeight: Dp,
228229
statusBarHeight: Dp,
230+
userName: String,
229231
loginState: LoginState,
230232
gatherings: Gatherings,
231233
whenLabels: List<String>,
@@ -276,7 +278,8 @@ private fun HomeScreen(
276278
).verticalScroll(verticalScrollState)
277279
) {
278280
HomeTitle(
279-
modifier = Modifier.height(HOME_TITLE_HEIGHT.dp)
281+
modifier = Modifier.height(HOME_TITLE_HEIGHT.dp),
282+
name = userName
280283
)
281284

282285
HomeContent(
@@ -327,7 +330,7 @@ fun HomeAppBar(
327330

328331
@Composable
329332
fun HomeTitle(
330-
name: String = "",
333+
name: String,
331334
modifier: Modifier = Modifier
332335
) {
333336
Column (
@@ -445,6 +448,7 @@ fun HomeScreenPreview(modifier: Modifier = Modifier) {
445448
modifier = Modifier.fillMaxSize(),
446449
loginState = LoginState.LoggedIn,
447450
gatherings = Gatherings(),
451+
userName = "",
448452
onMyPageClick = {},
449453
onAddGatheringClick = {},
450454
onGatheringClick = {},

feature/home/src/main/java/com/plottwist/feature/home/HomeViewModel.kt

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import com.plottwist.core.domain.auth.usecase.CheckLoginStatusUseCase
66
import com.plottwist.core.domain.gathering.usecase.GetGatheringsUseCase
77
import com.plottwist.core.domain.gathering.usecase.GetPurposesUseCase
88
import com.plottwist.core.domain.model.Purposes
9+
import com.plottwist.core.domain.onboarding.usecase.GetMemberInfoUseCase
910
import com.plottwist.core.domain.onboarding.usecase.UpdateDeviceTokenUseCase
1011
import com.plottwist.core.weburl.WebUrlConfig
1112
import dagger.hilt.android.lifecycle.HiltViewModel
@@ -23,11 +24,13 @@ class HomeViewModel @Inject constructor(
2324
private val getGatheringsUseCase: GetGatheringsUseCase,
2425
private val getPurposesUseCase: GetPurposesUseCase,
2526
private val webViewConfig: WebUrlConfig,
26-
private val updateDeviceTokenUseCase: UpdateDeviceTokenUseCase
27+
private val updateDeviceTokenUseCase: UpdateDeviceTokenUseCase,
28+
private val getMemberInfoUseCase: GetMemberInfoUseCase
2729
) : ContainerHost<HomeState, HomeSideEffect>, ViewModel() {
2830
override val container = container<HomeState, HomeSideEffect>(HomeState()) {
2931
observeLoginState()
3032
getPurposes()
33+
getMemberInfo()
3134
}
3235

3336
private fun getPurposes() = intent {
@@ -43,7 +46,15 @@ class HomeViewModel @Inject constructor(
4346
whenLabel = result.whenTags.firstOrNull() ?: ""
4447
)
4548
}
49+
}
4650

51+
private fun getMemberInfo() = intent {
52+
val result = getMemberInfoUseCase()
53+
reduce {
54+
state.copy(
55+
userName = result.getOrNull()?.name ?: ""
56+
)
57+
}
4758
}
4859

4960
fun handleAction(action: HomeAction) {

0 commit comments

Comments
 (0)