Skip to content

Commit e8b1b83

Browse files
committed
Merge pull request #347 from Runnect/feature/refactor-presentation-response
[Refactor] Presentation Layer에서 Response 사용 중인 부분 수정
1 parent 2176bd5 commit e8b1b83

File tree

14 files changed

+88
-116
lines changed

14 files changed

+88
-116
lines changed

app/src/main/java/com/runnect/runnect/data/dto/response/ResponsePostMyDrawCourse.kt

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,8 @@ import kotlinx.serialization.Serializable
55

66
@Serializable
77
data class ResponsePostMyDrawCourse(
8-
@SerialName("data")
9-
val data: Data
10-
) {
11-
@Serializable
12-
data class Data(
13-
@SerialName("id")
14-
val id: Int,
15-
@SerialName("createdAt")
16-
val createdAt: String
17-
)
18-
}
8+
@SerialName("id")
9+
val id: Int,
10+
@SerialName("createdAt")
11+
val createdAt: String
12+
)

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

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ 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
99
import com.runnect.runnect.data.dto.response.ResponseGetMyDrawDetail
10-
import com.runnect.runnect.data.dto.response.ResponsePostDiscoverUpload
11-
import com.runnect.runnect.data.dto.response.ResponsePostMyDrawCourse
12-
import com.runnect.runnect.data.dto.response.ResponsePostMyHistory
13-
import com.runnect.runnect.data.dto.response.ResponsePutMyDrawCourse
1410
import com.runnect.runnect.data.network.mapToFlowResult
1511
import com.runnect.runnect.data.source.remote.RemoteCourseDataSource
1612
import com.runnect.runnect.domain.entity.CourseDetail
@@ -26,8 +22,9 @@ import okhttp3.MultipartBody
2622
import okhttp3.RequestBody
2723
import javax.inject.Inject
2824

29-
class CourseRepositoryImpl @Inject constructor(private val remoteCourseDataSource: RemoteCourseDataSource) :
30-
CourseRepository {
25+
class CourseRepositoryImpl @Inject constructor(
26+
private val remoteCourseDataSource: RemoteCourseDataSource
27+
) : CourseRepository {
3128

3229
override suspend fun getMarathonCourse(): Flow<Result<List<MarathonCourse>>> {
3330
return remoteCourseDataSource.getMarathonCourse().mapToFlowResult {
@@ -67,8 +64,8 @@ class CourseRepositoryImpl @Inject constructor(private val remoteCourseDataSourc
6764
return remoteCourseDataSource.getMyDrawDetail(courseId = courseId).mapToFlowResult { it }
6865
}
6966

70-
override suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<ResponsePutMyDrawCourse>> {
71-
return remoteCourseDataSource.deleteMyDrawCourse(deleteCourseList = deleteCourseList).mapToFlowResult { it }
67+
override suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<Unit>> {
68+
return remoteCourseDataSource.deleteMyDrawCourse(deleteCourseList = deleteCourseList).mapToFlowResult {}
7269
}
7370

7471
override suspend fun postCourseScrap(
@@ -79,17 +76,17 @@ class CourseRepositoryImpl @Inject constructor(private val remoteCourseDataSourc
7976
}
8077
}
8178

79+
override suspend fun postUploadMyCourse(requestPostPublicCourse: RequestPostPublicCourse): Flow<Result<Unit>> {
80+
return remoteCourseDataSource.postUploadMyCourse(requestPostPublicCourse = requestPostPublicCourse).mapToFlowResult {}
81+
}
82+
8283
override suspend fun patchMyDrawCourseTitle(
8384
courseId: Int,
8485
requestPatchMyDrawCourseTitle: RequestPatchMyDrawCourseTitle
8586
) = runCatching {
8687
remoteCourseDataSource.patchMyDrawCourseTitle(courseId, requestPatchMyDrawCourseTitle).data?.toEditableMyDrawCourseDetail()
8788
}
8889

89-
override suspend fun postUploadMyCourse(requestPostPublicCourse: RequestPostPublicCourse): Flow<Result<ResponsePostDiscoverUpload>> {
90-
return remoteCourseDataSource.postUploadMyCourse(requestPostPublicCourse = requestPostPublicCourse).mapToFlowResult { it }
91-
}
92-
9390
override suspend fun patchPublicCourse(
9491
publicCourseId: Int,
9592
requestPatchPublicCourse: RequestPatchPublicCourse
@@ -101,14 +98,16 @@ class CourseRepositoryImpl @Inject constructor(private val remoteCourseDataSourc
10198
it.toEditableCourseDetail()
10299
}
103100

104-
override suspend fun postRecord(request: RequestPostRunningHistory): Flow<Result<ResponsePostMyHistory>> {
105-
return remoteCourseDataSource.postRecord(request = request).mapToFlowResult { it }
101+
override suspend fun postRecord(request: RequestPostRunningHistory): Flow<Result<Unit>> {
102+
return remoteCourseDataSource.postRecord(request = request).mapToFlowResult {}
106103
}
107104

108105
override suspend fun uploadCourse(
109106
image: MultipartBody.Part,
110107
data: RequestBody
111-
): Flow<Result<ResponsePostMyDrawCourse>> {
112-
return remoteCourseDataSource.uploadCourse(image = image, data = data).mapToFlowResult { it }
108+
): Flow<Result<Int>> {
109+
return remoteCourseDataSource.uploadCourse(image = image, data = data).mapToFlowResult {
110+
it.id
111+
}
113112
}
114113
}

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

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.runnect.runnect.data.repository
22

33
import com.runnect.runnect.data.dto.request.RequestPutMyDrawCourse
4-
import com.runnect.runnect.data.dto.response.ResponsePutMyDrawCourse
54
import com.runnect.runnect.data.dto.response.toMyDrawCourse
65
import com.runnect.runnect.data.network.mapToFlowResult
76
import com.runnect.runnect.data.source.remote.RemoteStorageDataSource
@@ -18,8 +17,8 @@ class StorageRepositoryImpl @Inject constructor(
1817
override suspend fun getMyDrawCourse(): Flow<Result<List<MyDrawCourse>>> =
1918
remoteStorageDataSource.getMyDrawCourse().mapToFlowResult { it.toMyDrawCourse() }
2019

21-
override suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<ResponsePutMyDrawCourse>> {
22-
return remoteStorageDataSource.deleteMyDrawCourse(deleteCourseList = deleteCourseList).mapToFlowResult { it }
20+
override suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<Unit>> {
21+
return remoteStorageDataSource.deleteMyDrawCourse(deleteCourseList = deleteCourseList).mapToFlowResult {}
2322
}
2423

2524
override suspend fun getMyScrapCourse(): Flow<Result<List<MyScrapCourse>>> =

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

Lines changed: 16 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,22 @@
11
package com.runnect.runnect.data.repository
22

33
import com.runnect.runnect.data.dto.HistoryInfoDTO
4-
import com.runnect.runnect.domain.entity.UserProfile
54
import com.runnect.runnect.data.dto.request.RequestDeleteHistory
65
import com.runnect.runnect.data.dto.request.RequestDeleteUploadCourse
76
import com.runnect.runnect.data.dto.request.RequestPatchHistoryTitle
87
import com.runnect.runnect.data.dto.request.RequestPatchNickName
9-
import com.runnect.runnect.data.dto.response.ResponseDeleteHistory
10-
import com.runnect.runnect.data.dto.response.ResponseDeleteUploadCourse
11-
import com.runnect.runnect.data.dto.response.ResponseDeleteUser
12-
import com.runnect.runnect.data.dto.response.ResponsePatchHistoryTitle
13-
import com.runnect.runnect.data.dto.response.ResponsePatchUserNickName
148
import com.runnect.runnect.data.network.mapToFlowResult
159
import com.runnect.runnect.data.source.remote.RemoteUserDataSource
1610
import com.runnect.runnect.domain.entity.User
11+
import com.runnect.runnect.domain.entity.UserProfile
1712
import com.runnect.runnect.domain.entity.UserUploadCourse
1813
import com.runnect.runnect.domain.repository.UserRepository
1914
import kotlinx.coroutines.flow.Flow
2015
import javax.inject.Inject
2116

22-
class UserRepositoryImpl @Inject constructor(private val remoteUserDataSource: RemoteUserDataSource) :
23-
UserRepository {
17+
class UserRepositoryImpl @Inject constructor(
18+
private val remoteUserDataSource: RemoteUserDataSource
19+
) : UserRepository {
2420

2521
override suspend fun getUserInfo(): Flow<Result<User>> = remoteUserDataSource.getUserInfo()
2622
.mapToFlowResult { it.toUser() }
@@ -33,29 +29,31 @@ class UserRepositoryImpl @Inject constructor(private val remoteUserDataSource: R
3329

3430
override suspend fun putDeleteUploadCourse(
3531
requestDeleteUploadCourse: RequestDeleteUploadCourse
36-
): Flow<Result<ResponseDeleteUploadCourse>> {
37-
return remoteUserDataSource.putDeleteUploadCourse(requestDeleteUploadCourse).mapToFlowResult { it }
32+
): Flow<Result<Unit>> {
33+
return remoteUserDataSource.putDeleteUploadCourse(requestDeleteUploadCourse).mapToFlowResult {}
3834
}
3935

4036
override suspend fun putDeleteHistory(
4137
requestDeleteHistory: RequestDeleteHistory
42-
): Flow<Result<ResponseDeleteHistory>> {
43-
return remoteUserDataSource.putDeleteHistory(requestDeleteHistory).mapToFlowResult { it }
38+
): Flow<Result<Unit>> {
39+
return remoteUserDataSource.putDeleteHistory(requestDeleteHistory).mapToFlowResult {}
4440
}
4541

4642
override suspend fun patchHistoryTitle(
4743
historyId: Int, requestPatchHistoryTitle: RequestPatchHistoryTitle
48-
): Flow<Result<ResponsePatchHistoryTitle>> =
49-
remoteUserDataSource.patchHistoryTitle(historyId, requestPatchHistoryTitle).mapToFlowResult { it }
44+
): Flow<Result<String>> =
45+
remoteUserDataSource.patchHistoryTitle(historyId, requestPatchHistoryTitle).mapToFlowResult {
46+
it.record.title
47+
}
5048

51-
override suspend fun deleteUser(): Flow<Result<ResponseDeleteUser>> {
52-
return remoteUserDataSource.deleteUser().mapToFlowResult { it }
49+
override suspend fun deleteUser(): Flow<Result<Unit>> {
50+
return remoteUserDataSource.deleteUser().mapToFlowResult {}
5351
}
5452

5553
override suspend fun updateNickName(
5654
requestPatchNickName: RequestPatchNickName
57-
): Flow<Result<ResponsePatchUserNickName>> =
58-
remoteUserDataSource.updateNickName(requestPatchNickName).mapToFlowResult { it }
55+
): Flow<Result<Unit>> =
56+
remoteUserDataSource.updateNickName(requestPatchNickName).mapToFlowResult {}
5957

6058
override suspend fun getRecord(): Flow<Result<List<HistoryInfoDTO>>> {
6159
return remoteUserDataSource.getRecord().mapToFlowResult {

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

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,6 @@ 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
99
import com.runnect.runnect.data.dto.response.ResponseGetMyDrawDetail
10-
import com.runnect.runnect.data.dto.response.ResponsePostDiscoverUpload
11-
import com.runnect.runnect.data.dto.response.ResponsePostMyDrawCourse
12-
import com.runnect.runnect.data.dto.response.ResponsePostMyHistory
13-
import com.runnect.runnect.data.dto.response.ResponsePutMyDrawCourse
1410
import com.runnect.runnect.domain.entity.CourseDetail
1511
import com.runnect.runnect.domain.entity.DiscoverMultiViewItem.MarathonCourse
1612
import com.runnect.runnect.domain.entity.DiscoverSearchCourse
@@ -24,6 +20,7 @@ import okhttp3.MultipartBody
2420
import okhttp3.RequestBody
2521

2622
interface CourseRepository {
23+
2724
suspend fun getMarathonCourse(): Flow<Result<List<MarathonCourse>>>
2825

2926
suspend fun getRecommendCourse(
@@ -39,25 +36,25 @@ interface CourseRepository {
3936

4037
suspend fun getMyDrawDetail(courseId: Int): Flow<Result<ResponseGetMyDrawDetail>>
4138

42-
suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<ResponsePutMyDrawCourse>>
43-
4439
suspend fun postCourseScrap(requestPostCourseScrap: RequestPostCourseScrap): Flow<Result<PostScrap>>
4540

41+
suspend fun postUploadMyCourse(requestPostPublicCourse: RequestPostPublicCourse): Flow<Result<Unit>>
42+
43+
suspend fun postRecord(request: RequestPostRunningHistory): Flow<Result<Unit>>
44+
45+
suspend fun uploadCourse(
46+
image: MultipartBody.Part, data: RequestBody
47+
): Flow<Result<Int>>
48+
4649
suspend fun patchMyDrawCourseTitle(
4750
courseId: Int,
4851
requestPatchMyDrawCourseTitle: RequestPatchMyDrawCourseTitle
4952
): Result<EditableMyDrawCourseDetail?>
5053

51-
suspend fun postUploadMyCourse(requestPostPublicCourse: RequestPostPublicCourse): Flow<Result<ResponsePostDiscoverUpload>>
52-
5354
suspend fun patchPublicCourse(
5455
publicCourseId: Int,
5556
requestPatchPublicCourse: RequestPatchPublicCourse
5657
): Flow<Result<EditableCourseDetail>>
5758

58-
suspend fun postRecord(request: RequestPostRunningHistory): Flow<Result<ResponsePostMyHistory>>
59-
60-
suspend fun uploadCourse(
61-
image: MultipartBody.Part, data: RequestBody
62-
): Flow<Result<ResponsePostMyDrawCourse>>
59+
suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse): Flow<Result<Unit>>
6360
}

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,5 +9,5 @@ import kotlinx.coroutines.flow.Flow
99
interface StorageRepository {
1010
suspend fun getMyDrawCourse(): Flow<Result<List<MyDrawCourse>>>
1111
suspend fun getMyScrapCourse(): Flow<Result<List<MyScrapCourse>>>
12-
suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse) : Flow<Result<ResponsePutMyDrawCourse>>
12+
suspend fun deleteMyDrawCourse(deleteCourseList: RequestPutMyDrawCourse) : Flow<Result<Unit>>
1313
}
Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,12 @@
11
package com.runnect.runnect.domain.repository
22

33
import com.runnect.runnect.data.dto.HistoryInfoDTO
4-
import com.runnect.runnect.domain.entity.UserProfile
54
import com.runnect.runnect.data.dto.request.RequestDeleteHistory
65
import com.runnect.runnect.data.dto.request.RequestDeleteUploadCourse
76
import com.runnect.runnect.data.dto.request.RequestPatchHistoryTitle
87
import com.runnect.runnect.data.dto.request.RequestPatchNickName
9-
import com.runnect.runnect.data.dto.response.ResponseDeleteHistory
10-
import com.runnect.runnect.data.dto.response.ResponseDeleteUploadCourse
11-
import com.runnect.runnect.data.dto.response.ResponseDeleteUser
12-
import com.runnect.runnect.data.dto.response.ResponsePatchHistoryTitle
13-
import com.runnect.runnect.data.dto.response.ResponsePatchUserNickName
148
import com.runnect.runnect.domain.entity.User
9+
import com.runnect.runnect.domain.entity.UserProfile
1510
import com.runnect.runnect.domain.entity.UserUploadCourse
1611
import kotlinx.coroutines.flow.Flow
1712

@@ -22,11 +17,11 @@ interface UserRepository {
2217

2318
suspend fun putDeleteUploadCourse(
2419
requestDeleteUploadCourse: RequestDeleteUploadCourse
25-
): Flow<Result<ResponseDeleteUploadCourse>>
20+
): Flow<Result<Unit>>
2621

27-
suspend fun putDeleteHistory(requestDeleteHistory: RequestDeleteHistory): Flow<Result<ResponseDeleteHistory>>
22+
suspend fun putDeleteHistory(requestDeleteHistory: RequestDeleteHistory): Flow<Result<Unit>>
2823

29-
suspend fun deleteUser(): Flow<Result<ResponseDeleteUser>>
24+
suspend fun deleteUser(): Flow<Result<Unit>>
3025

3126
suspend fun getRecord(): Flow<Result<List<HistoryInfoDTO>>>
3227

@@ -35,11 +30,11 @@ interface UserRepository {
3530
suspend fun patchHistoryTitle(
3631
historyId: Int,
3732
requestPatchHistoryTitle: RequestPatchHistoryTitle
38-
): Flow<Result<ResponsePatchHistoryTitle>>
33+
): Flow<Result<String>>
3934

4035
suspend fun updateNickName(
4136
requestPatchNickName: RequestPatchNickName
42-
): Flow<Result<ResponsePatchUserNickName>>
37+
): Flow<Result<Unit>>
4338

4439
suspend fun getUserProfile(userId: Int): Flow<Result<UserProfile>>
4540
}

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ class CourseDetailViewModel @Inject constructor(
3434
val coursePatchState: LiveData<UiStateV2<EditableCourseDetail?>>
3535
get() = _coursePatchState
3636

37-
private val _courseDeleteState = MutableLiveData<UiStateV2<ResponseDeleteUploadCourse?>>()
38-
val courseDeleteState: LiveData<UiStateV2<ResponseDeleteUploadCourse?>>
37+
private val _courseDeleteState = MutableLiveData<UiStateV2<Unit>>()
38+
val courseDeleteState: LiveData<UiStateV2<Unit>>
3939
get() = _courseDeleteState
4040

4141
private val _courseScrapState = MutableLiveData<UiStateV2<PostScrap>>()

app/src/main/java/com/runnect/runnect/presentation/draw/DrawActivity.kt

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ class DrawActivity : BindingActivity<ActivityDrawBinding>(R.layout.activity_draw
162162

163163
binding.tvGuide.isVisible = false
164164
viewModel.searchResult.value = searchResult
165-
viewModel.departureName.value = searchResult.name
165+
viewModel.departureName = searchResult.name
166166

167167
setDepartureLatLng(
168168
latLng = LatLng(
@@ -515,11 +515,11 @@ class DrawActivity : BindingActivity<ActivityDrawBinding>(R.layout.activity_draw
515515
if (isCustomLocationMode) departureLatLng = customDepartureLatLng
516516

517517
val courseData = CourseData(
518-
courseId = viewModel.uploadResult.value?.data?.id,
518+
courseId = viewModel.uploadCourseId,
519519
publicCourseId = null, //직접 생성하는 코스는 publicCourseId가 없지만 코스 발견 -> 러닝 등의 루트로 넘어올 시 기록 업로드에서 requestBody에 필요함
520520
touchList = touchList,
521521
startLatLng = departureLatLng,
522-
departure = viewModel.departureName.value,
522+
departure = viewModel.departureName,
523523
distance = viewModel.distanceSum.value,
524524
image = captureUri.toString(),
525525
dataFrom = "fromDrawCourse"
@@ -791,18 +791,18 @@ class DrawActivity : BindingActivity<ActivityDrawBinding>(R.layout.activity_draw
791791
val uploadLatLngList: List<UploadLatLng> = distanceList.map { latLng ->
792792
UploadLatLng(latLng.latitude, latLng.longitude)
793793
}
794-
viewModel.path.value = uploadLatLngList
794+
viewModel.path = uploadLatLngList
795795

796796
when {
797797
isSearchLocationMode -> {
798-
viewModel.departureAddress.value = searchResult.fullAddress
799-
viewModel.departureName.value = searchResult.name
798+
viewModel.departureAddress = searchResult.fullAddress
799+
viewModel.departureName = searchResult.name
800800
}
801801

802802
isCurrentLocationMode || isCustomLocationMode -> {
803-
viewModel.departureAddress.value =
804-
viewModel.reverseGeocodingResult.value?.fullAddress
805-
viewModel.departureName.value =
803+
viewModel.departureAddress =
804+
viewModel.reverseGeocodingResult.value?.fullAddress ?: ""
805+
viewModel.departureName =
806806
viewModel.reverseGeocodingResult.value?.buildingName ?: "내가 설정한 출발지"
807807
}
808808
}

0 commit comments

Comments
 (0)