Skip to content

Commit a902afd

Browse files
committed
refactor: GetLastTransportTimeUseCaseImpl 리턴 타입 수정
1 parent c150e12 commit a902afd

File tree

3 files changed

+10
-17
lines changed

3 files changed

+10
-17
lines changed
Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
package com.stop.domain.usecase.route
22

3-
import com.stop.domain.model.route.TransportLastTimeInfo
43
import com.stop.domain.model.route.tmap.custom.Itinerary
54

65
interface GetLastTransportTimeUseCase {
76

8-
suspend fun invoke(itinerary: Itinerary): TransportLastTimeInfo?
7+
suspend operator fun invoke(itinerary: Itinerary): List<String?>
98
}

domain/src/main/java/com/stop/domain/usecase/route/GetLastTransportTimeUseCaseImpl.kt

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package com.stop.domain.usecase.route
33
import com.stop.domain.model.geoLocation.AddressType
44
import com.stop.domain.model.route.Area
55
import com.stop.domain.model.route.TransportIdRequest
6-
import com.stop.domain.model.route.TransportLastTimeInfo
76
import com.stop.domain.model.route.TransportMoveType
87
import com.stop.domain.model.route.gyeonggi.GyeonggiBusStation
98
import com.stop.domain.model.route.seoul.bus.BusStationInfo
@@ -21,15 +20,12 @@ internal class GetLastTransportTimeUseCaseImpl @Inject constructor(
2120

2221
private val allowedSubwayLineForUse = (SUBWAY_LINE_ONE..SUBWAY_LINE_EIGHT)
2322

24-
override suspend fun invoke(itinerary: Itinerary): TransportLastTimeInfo {
23+
override suspend fun invoke(itinerary: Itinerary): List<String?> {
2524
var transportIdRequests: List<TransportIdRequest?> = createTransportIdRequests(itinerary)
2625
transportIdRequests = convertStationId(transportIdRequests)
2726
transportIdRequests = convertRouteId(transportIdRequests)
2827

29-
val dataWithLastTime: List<String?> = getLastTransportTime(transportIdRequests)
30-
31-
// 막차 시간 중 가장 빠른 시간과 dataWithLastTime을 가지는 데이터 클래스 반환하기
32-
return TransportLastTimeInfo(dataWithLastTime.sortedBy { it }.first() ?: "")
28+
return getLastTransportTime(transportIdRequests)
3329
}
3430

3531
private suspend fun getLastTransportTime(transportIdRequests: List<TransportIdRequest?>): List<String?> {
@@ -121,10 +117,10 @@ internal class GetLastTransportTimeUseCaseImpl @Inject constructor(
121117
}
122118

123119
// 승차지, 도착지, 고유 번호를 알아내는데 필요한 정보로만 구성된 데이터 클래스로 변환하기
124-
private suspend fun createTransportIdRequests(itinerary: Itinerary): List<TransportIdRequest> {
125-
return itinerary.routes.fold(listOf<TransportIdRequest>()) { transportIdRequests, route ->
120+
private suspend fun createTransportIdRequests(itinerary: Itinerary): List<TransportIdRequest?> {
121+
return itinerary.routes.fold(listOf()) { transportIdRequests, route ->
126122
when (route) {
127-
is WalkRoute -> transportIdRequests
123+
is WalkRoute -> transportIdRequests + null
128124
is TransportRoute -> {
129125
val startStation = route.stations.first()
130126
val transportMoveType = TransportMoveType.getMoveTypeByName(route.mode.name)
@@ -144,7 +140,7 @@ internal class GetLastTransportTimeUseCaseImpl @Inject constructor(
144140
destinationStationId = UNKNOWN_ID,
145141
)
146142
}
147-
else -> transportIdRequests
143+
else -> transportIdRequests + null
148144
}
149145
}
150146
}

presentation/src/main/java/com/stop/ui/route/RouteViewModel.kt

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import androidx.lifecycle.LiveData
44
import androidx.lifecycle.MutableLiveData
55
import androidx.lifecycle.ViewModel
66
import androidx.lifecycle.viewModelScope
7-
import com.stop.domain.model.route.TransportLastTimeInfo
87
import com.stop.domain.model.route.tmap.RouteRequest
98
import com.stop.domain.model.route.tmap.custom.Itinerary
109
import com.stop.domain.usecase.route.GetLastTransportTimeUseCase
@@ -35,8 +34,8 @@ class RouteViewModel @Inject constructor(
3534
val routeResponse: LiveData<List<Itinerary>>
3635
get() = _routeResponse
3736

38-
private val _lastTimeResponse = MutableLiveData<TransportLastTimeInfo>()
39-
val lastTimeResponse: LiveData<TransportLastTimeInfo>
37+
private val _lastTimeResponse = MutableLiveData<List<String?>>()
38+
val lastTimeResponse: LiveData<List<String?>>
4039
get() = _lastTimeResponse
4140

4241
private val _errorMessage = MutableLiveData<Event<ErrorType>>()
@@ -68,8 +67,7 @@ class RouteViewModel @Inject constructor(
6867

6968
fun calculateLastTransportTime(itinerary: Itinerary) {
7069
viewModelScope.launch(Dispatchers.IO) {
71-
val lastTimeInfo =
72-
getLastTransportTimeUseCase.invoke(itinerary) ?: return@launch
70+
val lastTimeInfo = getLastTransportTimeUseCase(itinerary)
7371

7472
_lastTimeResponse.postValue(lastTimeInfo)
7573
}

0 commit comments

Comments
 (0)