Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/develop' into feat/#146-place-de…
Browse files Browse the repository at this point in the history
…tail-user-info-api

# Conflicts:
#	app/src/main/java/com/spoony/spoony/presentation/placeDetail/PlaceDetailViewModel.kt
  • Loading branch information
Roel4990 committed Jan 23, 2025
2 parents 14ddc61 + dc7e181 commit 50c794c
Show file tree
Hide file tree
Showing 9 changed files with 56 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package com.spoony.spoony.data.datasource

import com.spoony.spoony.data.dto.base.BaseResponse
import com.spoony.spoony.data.dto.response.UserInfoResponseDto
import com.spoony.spoony.data.dto.response.UserSpoonCountResponseDto

interface AuthRemoteDataSource {
suspend fun getUserInfo(userId: Int): BaseResponse<UserInfoResponseDto>
suspend fun getSpoonCount(userId: Int): BaseResponse<UserSpoonCountResponseDto>
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@ package com.spoony.spoony.data.datasourceimpl
import com.spoony.spoony.data.datasource.AuthRemoteDataSource
import com.spoony.spoony.data.dto.base.BaseResponse
import com.spoony.spoony.data.dto.response.UserInfoResponseDto
import com.spoony.spoony.data.dto.response.UserSpoonCountResponseDto
import com.spoony.spoony.data.service.AuthService
import javax.inject.Inject

Expand All @@ -11,4 +12,6 @@ class AuthRemoteDataSourceImpl @Inject constructor(
) : AuthRemoteDataSource {
override suspend fun getUserInfo(userId: Int): BaseResponse<UserInfoResponseDto> =
authService.getUserInfo(userId)
override suspend fun getSpoonCount(userId: Int): BaseResponse<UserSpoonCountResponseDto> =
authService.getSpoonCount(userId)
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package com.spoony.spoony.data.dto.response

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable

@Serializable
data class UserSpoonCountResponseDto(
@SerialName("spoonAmount")
val spoonAmount: Int
)
Original file line number Diff line number Diff line change
Expand Up @@ -13,4 +13,9 @@ class AuthRepositoryImpl @Inject constructor(
runCatching {
authRemoteDataSource.getUserInfo(userId).data!!.toDomain()
}

override suspend fun getSpoonCount(userId: Int): Result<Int> =
runCatching {
authRemoteDataSource.getSpoonCount(userId = userId).data!!.spoonAmount
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package com.spoony.spoony.data.service

import com.spoony.spoony.data.dto.base.BaseResponse
import com.spoony.spoony.data.dto.response.UserInfoResponseDto
import com.spoony.spoony.data.dto.response.UserSpoonCountResponseDto
import retrofit2.http.GET
import retrofit2.http.Path

Expand All @@ -10,4 +11,9 @@ interface AuthService {
suspend fun getUserInfo(
@Path("userId") userId: Int
): BaseResponse<UserInfoResponseDto>

@GET("/api/v1/spoon/{userId}")
suspend fun getSpoonCount(
@Path("userId") userId: Int
): BaseResponse<UserSpoonCountResponseDto>
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,5 @@ import com.spoony.spoony.domain.entity.UserEntity

interface AuthRepository {
suspend fun getUserInfo(userId: Int): Result<UserEntity>
suspend fun getSpoonCount(userId: Int): Result<Int>
}
Original file line number Diff line number Diff line change
Expand Up @@ -86,11 +86,6 @@ fun PlaceDetailRoute(
}
}

val spoonAmount = when (state.spoonAmountEntity) {
is UiState.Success -> (state.spoonAmountEntity as UiState.Success<Int>).data
else -> 99
}

LaunchedEffect(viewModel.sideEffect, lifecycleOwner) {
viewModel.sideEffect.flowWithLifecycle(lifecycleOwner.lifecycle).collect { effect ->
when (effect) {
Expand All @@ -101,6 +96,11 @@ fun PlaceDetailRoute(
}
}

val spoonAmount = when (state.spoonCount) {
is UiState.Success -> (state.spoonCount as UiState.Success<Int>).data
else -> 0
}

val postId = (state.postId as? UiState.Success)?.data ?: return
val userId = (state.userId as? UiState.Success)?.data ?: return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,6 @@ data class PlaceDetailState(
val addMapCount: Int = 0,
val postModel: UiState<PostModel> = UiState.Loading,
val userEntity: UiState<UserEntity> = UiState.Loading,
val spoonAmountEntity: UiState<Int> = UiState.Loading,
val spoonCount: UiState<Int> = UiState.Loading,
val dropDownMenuList: ImmutableList<String> = persistentListOf("신고하기")
)
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ class PlaceDetailViewModel @Inject constructor(
)
getPost(postArgs.postId, postArgs.userId)
getUserInfo(postArgs.userId)
getUserSpoonCount(postArgs.userId)
}

private fun getUserInfo(userId: Int) {
Expand Down Expand Up @@ -88,6 +89,28 @@ class PlaceDetailViewModel @Inject constructor(
}
}

private fun getUserSpoonCount(userId: Int) {
viewModelScope.launch {
authRepository.getSpoonCount(userId = userId)
.onSuccess { response ->
_state.update {
it.copy(
spoonCount = UiState.Success(
response
)
)
}
}
.onFailure {
_state.update {
it.copy(
spoonCount = UiState.Failure("유저 스푼 개수 조회 실패")
)
}
}
}
}

fun useSpoon(postId: Int, userId: Int) {
viewModelScope.launch {
postRepository.postScoopPost(postId = postId, userId = userId)
Expand Down

0 comments on commit 50c794c

Please sign in to comment.