Skip to content

Commit 1d98350

Browse files
committed
[mod] 병합 과정에서 누락된 부분 수정
1 parent e8b1b83 commit 1d98350

File tree

6 files changed

+63
-72
lines changed

6 files changed

+63
-72
lines changed

app/src/main/java/com/runnect/runnect/data/repository/CourseRepositoryImpl.kt

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ import com.runnect.runnect.data.dto.request.RequestPostCourseScrap
66
import com.runnect.runnect.data.dto.request.RequestPostPublicCourse
77
import com.runnect.runnect.data.dto.request.RequestPostRunningHistory
88
import com.runnect.runnect.data.dto.request.RequestPutMyDrawCourse
9-
import com.runnect.runnect.data.dto.response.ResponseGetMyDrawDetail
109
import com.runnect.runnect.data.network.mapToFlowResult
1110
import com.runnect.runnect.data.source.remote.RemoteCourseDataSource
1211
import com.runnect.runnect.domain.entity.CourseDetail
1312
import com.runnect.runnect.domain.entity.DiscoverMultiViewItem.MarathonCourse
1413
import com.runnect.runnect.domain.entity.DiscoverSearchCourse
1514
import com.runnect.runnect.domain.entity.DiscoverUploadCourse
1615
import com.runnect.runnect.domain.entity.EditableCourseDetail
16+
import com.runnect.runnect.domain.entity.EditableMyDrawCourseDetail
17+
import com.runnect.runnect.domain.entity.MyDrawCourseDetail
1718
import com.runnect.runnect.domain.entity.PostScrap
1819
import com.runnect.runnect.domain.entity.RecommendCoursePagingData
1920
import com.runnect.runnect.domain.repository.CourseRepository
@@ -60,8 +61,10 @@ class CourseRepositoryImpl @Inject constructor(
6061
}
6162
}
6263

63-
override suspend fun getMyDrawDetail(courseId: Int): Flow<Result<ResponseGetMyDrawDetail>> {
64-
return remoteCourseDataSource.getMyDrawDetail(courseId = courseId).mapToFlowResult { it }
64+
override suspend fun getMyDrawDetail(courseId: Int): Flow<Result<MyDrawCourseDetail>> {
65+
return remoteCourseDataSource.getMyDrawDetail(courseId = courseId).mapToFlowResult {
66+
it.toMyDrawCourseDetail()
67+
}
6568
}
6669

6770
override suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<Unit>> {
@@ -83,9 +86,10 @@ class CourseRepositoryImpl @Inject constructor(
8386
override suspend fun patchMyDrawCourseTitle(
8487
courseId: Int,
8588
requestPatchMyDrawCourseTitle: RequestPatchMyDrawCourseTitle
86-
) = runCatching {
87-
remoteCourseDataSource.patchMyDrawCourseTitle(courseId, requestPatchMyDrawCourseTitle).data?.toEditableMyDrawCourseDetail()
88-
}
89+
): Flow<Result<EditableMyDrawCourseDetail>> =
90+
remoteCourseDataSource.patchMyDrawCourseTitle(courseId, requestPatchMyDrawCourseTitle).mapToFlowResult {
91+
it.toEditableMyDrawCourseDetail()
92+
}
8993

9094
override suspend fun patchPublicCourse(
9195
publicCourseId: Int,

app/src/main/java/com/runnect/runnect/data/service/CourseService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ interface CourseService {
107107
suspend fun patchMyDrawCourseTitle(
108108
@Path("courseId") courseId: Int,
109109
@Body requestPatchMyDrawCourseTitle: RequestPatchMyDrawCourseTitle
110-
): BaseResponse<ResponsePatchMyDrawCourseTitle>
110+
): Result<ResponsePatchMyDrawCourseTitle>
111111

112112
// 내가 그린 코스 삭제
113113
@PUT("/api/course")

app/src/main/java/com/runnect/runnect/data/source/remote/RemoteCourseDataSource.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.runnect.runnect.data.dto.request.RequestPutMyDrawCourse
99
import com.runnect.runnect.data.dto.response.ResponseGetCourseDetail
1010
import com.runnect.runnect.data.dto.response.ResponseGetDiscoverMarathon
1111
import com.runnect.runnect.data.dto.response.ResponseGetDiscoverRecommend
12+
import com.runnect.runnect.data.dto.response.ResponsePatchMyDrawCourseTitle
1213
import com.runnect.runnect.data.dto.response.ResponsePatchPublicCourse
1314
import com.runnect.runnect.data.dto.response.ResponsePostScrap
1415
import com.runnect.runnect.data.service.CourseService
@@ -55,7 +56,7 @@ class RemoteCourseDataSource @Inject constructor(
5556
suspend fun patchMyDrawCourseTitle(
5657
courseId: Int,
5758
requestPatchMyDrawCourseTitle: RequestPatchMyDrawCourseTitle
58-
) = courseService.patchMyDrawCourseTitle(courseId, requestPatchMyDrawCourseTitle)
59+
): Result<ResponsePatchMyDrawCourseTitle> = courseService.patchMyDrawCourseTitle(courseId, requestPatchMyDrawCourseTitle)
5960

6061
suspend fun postRecord(request: RequestPostRunningHistory) = courseService.postRecord(request)
6162

app/src/main/java/com/runnect/runnect/domain/repository/CourseRepository.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,13 @@ import com.runnect.runnect.data.dto.request.RequestPostCourseScrap
66
import com.runnect.runnect.data.dto.request.RequestPostPublicCourse
77
import com.runnect.runnect.data.dto.request.RequestPostRunningHistory
88
import com.runnect.runnect.data.dto.request.RequestPutMyDrawCourse
9-
import com.runnect.runnect.data.dto.response.ResponseGetMyDrawDetail
109
import com.runnect.runnect.domain.entity.CourseDetail
1110
import com.runnect.runnect.domain.entity.DiscoverMultiViewItem.MarathonCourse
1211
import com.runnect.runnect.domain.entity.DiscoverSearchCourse
1312
import com.runnect.runnect.domain.entity.DiscoverUploadCourse
1413
import com.runnect.runnect.domain.entity.EditableCourseDetail
1514
import com.runnect.runnect.domain.entity.EditableMyDrawCourseDetail
15+
import com.runnect.runnect.domain.entity.MyDrawCourseDetail
1616
import com.runnect.runnect.domain.entity.PostScrap
1717
import com.runnect.runnect.domain.entity.RecommendCoursePagingData
1818
import kotlinx.coroutines.flow.Flow
@@ -34,7 +34,7 @@ interface CourseRepository {
3434

3535
suspend fun getMyCourseLoad(): Flow<Result<List<DiscoverUploadCourse>>>
3636

37-
suspend fun getMyDrawDetail(courseId: Int): Flow<Result<ResponseGetMyDrawDetail>>
37+
suspend fun getMyDrawDetail(courseId: Int): Flow<Result<MyDrawCourseDetail>>
3838

3939
suspend fun postCourseScrap(requestPostCourseScrap: RequestPostCourseScrap): Flow<Result<PostScrap>>
4040

@@ -49,7 +49,7 @@ interface CourseRepository {
4949
suspend fun patchMyDrawCourseTitle(
5050
courseId: Int,
5151
requestPatchMyDrawCourseTitle: RequestPatchMyDrawCourseTitle
52-
): Result<EditableMyDrawCourseDetail?>
52+
): Flow<Result<EditableMyDrawCourseDetail>>
5353

5454
suspend fun patchPublicCourse(
5555
publicCourseId: Int,

app/src/main/java/com/runnect/runnect/presentation/detail/CourseDetailActivity.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -417,17 +417,11 @@ class CourseDetailActivity :
417417
applyScreenExitAnimation()
418418
}
419419

420-
private fun setupFromDeepLinkObserver() {
421-
viewModel.isDeepLinkLogin.observe(this) { result ->
422-
// 딥링크로 진입했는데 로그인이 안 되어있는 경우
423-
if (!result) {
424-
// CHECK 로그인 액티비티 이동시 Task 모두 제거하도록 수정 (확인 필요)
425-
Intent(this, LoginActivity::class.java).apply {
426-
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK)
427-
}.let(::startActivity)
428-
429-
viewModel.isDeepLinkLogin.value = true
430-
}
420+
private fun navigateToUserProfile() {
421+
Intent(this@CourseDetailActivity, ProfileActivity::class.java).apply {
422+
putExtra(EXTRA_COURSE_USER_ID, courseDetail.userId)
423+
addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT)
424+
startActivity(this)
431425
}
432426
applyScreenEnterAnimation()
433427
Analytics.logClickedItemEvent(EVENT_CLICK_USER_PROFILE)

app/src/main/java/com/runnect/runnect/presentation/storage/mydrawdetail/MyDrawDetailViewModel.kt

Lines changed: 42 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,25 @@ package com.runnect.runnect.presentation.storage.mydrawdetail
22

33
import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
5-
import androidx.lifecycle.ViewModel
6-
import androidx.lifecycle.viewModelScope
75
import com.runnect.runnect.data.dto.CourseData
86
import com.runnect.runnect.data.dto.request.RequestPatchMyDrawCourseTitle
97
import com.runnect.runnect.data.dto.request.RequestPutMyDrawCourse
8+
import com.runnect.runnect.domain.common.toLog
109
import com.runnect.runnect.domain.entity.EditableMyDrawCourseDetail
1110
import com.runnect.runnect.domain.entity.MyDrawCourseDetail
1211
import com.runnect.runnect.domain.repository.CourseRepository
12+
import com.runnect.runnect.presentation.base.BaseViewModel
1313
import com.runnect.runnect.presentation.state.UiStateV2
14+
import com.runnect.runnect.util.extension.collectResult
1415
import dagger.hilt.android.lifecycle.HiltViewModel
15-
import kotlinx.coroutines.launch
1616
import timber.log.Timber
1717
import javax.inject.Inject
1818

1919
@HiltViewModel
20-
class MyDrawDetailViewModel @Inject constructor(private val courseRepository: CourseRepository) :
21-
ViewModel() {
20+
class MyDrawDetailViewModel @Inject constructor(
21+
private val courseRepository: CourseRepository
22+
) : BaseViewModel() {
23+
2224
private val _courseGetState = MutableLiveData<UiStateV2<MyDrawCourseDetail>>()
2325
val courseGetState: LiveData<UiStateV2<MyDrawCourseDetail>>
2426
get() = _courseGetState
@@ -36,61 +38,51 @@ class MyDrawDetailViewModel @Inject constructor(private val courseRepository: Co
3638
private var _courseTitle = ""
3739
val courseTitle get() = _courseTitle
3840

39-
fun getMyDrawDetail(courseId: Int) {
40-
viewModelScope.launch {
41-
courseRepository.getMyDrawDetail(
42-
courseId = courseId
43-
).onSuccess { response ->
44-
if (response == null) {
45-
_courseGetState.value = UiStateV2.Failure("MyDrawCourseDetail is null")
46-
return@launch
47-
}
48-
41+
fun getMyDrawDetail(courseId: Int) = launchWithHandler {
42+
courseRepository.getMyDrawDetail(
43+
courseId = courseId
44+
).collectResult(
45+
onSuccess = { response ->
4946
Timber.d("SUCCESS GET MY DRAW COURSE")
5047
_courseGetState.value = UiStateV2.Success(response)
5148
_courseTitle = response.title
52-
}.onFailure { t ->
53-
Timber.e("FAIL GET MY DRAW COURSE: ${t.message}")
54-
_courseGetState.value = UiStateV2.Failure(t.message.toString())
49+
},
50+
onFailure = { t ->
51+
Timber.e("FAIL GET MY DRAW COURSE: ${t.toLog()}")
52+
_courseGetState.value = UiStateV2.Failure(t.toLog())
5553
}
56-
}
54+
)
5755
}
5856

59-
fun deleteMyDrawCourse(deleteList: MutableList<Int>) {
60-
viewModelScope.launch {
61-
runCatching {
62-
courseRepository.deleteMyDrawCourse(
63-
RequestPutMyDrawCourse(
64-
courseIdList = deleteList
65-
)
66-
)
67-
}.onSuccess { response ->
68-
Timber.d("SUCCESS DELETE MY DRAW COURSE: ${response.body()}")
57+
fun deleteMyDrawCourse(deleteList: MutableList<Int>) = launchWithHandler {
58+
courseRepository.deleteMyDrawCourse(
59+
RequestPutMyDrawCourse(deleteList)
60+
).collectResult(
61+
onSuccess = {
62+
Timber.d("SUCCESS DELETE MY DRAW COURSE")
6963
_courseDeleteState.value = UiStateV2.Success(Unit)
70-
}.onFailure { t ->
71-
Timber.e("FAIL DELETE MY DRAW COURSE: ${t.message}")
72-
_courseDeleteState.value = UiStateV2.Failure(t.message.toString())
64+
},
65+
onFailure = { t ->
66+
Timber.e("FAIL DELETE MY DRAW COURSE: ${t.toLog()}")
67+
_courseDeleteState.value = UiStateV2.Failure(t.toLog())
7368
}
74-
}
69+
)
7570
}
7671

77-
fun patchCourseTitle(courseId: Int) {
78-
viewModelScope.launch {
79-
courseRepository.patchMyDrawCourseTitle(courseId, RequestPatchMyDrawCourseTitle(courseTitle))
80-
.onSuccess { response ->
81-
if(response == null){
82-
_coursePatchState.value = UiStateV2.Failure("PATCH MY DRAW COURSE RESPONSE IS NULL")
83-
return@launch
84-
}
85-
86-
Timber.d("SUCCESS PATCH MY DRAW COURSE TITLE")
87-
_coursePatchState.value = UiStateV2.Success(response)
88-
}
89-
.onFailure { t ->
90-
Timber.e("FAIL PATCH MY DRAW COURSE TITLE: ${t.message}")
91-
_coursePatchState.value = UiStateV2.Failure(t.message.toString())
92-
}
93-
}
72+
fun patchCourseTitle(courseId: Int) = launchWithHandler {
73+
courseRepository.patchMyDrawCourseTitle(
74+
courseId,
75+
RequestPatchMyDrawCourseTitle(courseTitle)
76+
).collectResult(
77+
onSuccess = { response ->
78+
Timber.d("SUCCESS PATCH MY DRAW COURSE TITLE")
79+
_coursePatchState.value = UiStateV2.Success(response)
80+
},
81+
onFailure = { t ->
82+
Timber.e("FAIL PATCH MY DRAW COURSE TITLE: ${t.toLog()}")
83+
_coursePatchState.value = UiStateV2.Failure(t.toLog())
84+
}
85+
)
9486
}
9587

9688
fun updateCourseTitle(title: String) {

0 commit comments

Comments
 (0)