Skip to content

Commit 086d74c

Browse files
committed
Merge branch 'develop' into prepare-demo
2 parents 724f122 + 0634efd commit 086d74c

File tree

17 files changed

+155
-70
lines changed

17 files changed

+155
-70
lines changed

โ€Ždata/src/main/java/com/stop/data/remote/model/route/gyeonggi/GyeonggiBusLastTimeResponse.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,5 @@ import com.tickaroo.tikxml.annotation.Xml
88
internal data class GyeonggiBusLastTimeResponse(
99
@Path("msgBody")
1010
@Element(name = "busRouteInfoItem")
11-
val lastTimes: List<GyeonggiBusLastTime>
11+
val lastTimes: List<GyeonggiBusLastTime>?
1212
)

โ€Ždata/src/main/java/com/stop/data/remote/source/route/RouteRemoteDataSource.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,10 +29,10 @@ internal interface RouteRemoteDataSource {
2929

3030
suspend fun getSeoulBusStationArsId(stationName: String): List<BusStationInfo>
3131
suspend fun getSeoulBusRoute(stationId: String): List<BusRouteInfo>
32-
suspend fun getSeoulBusLastTime(stationId: String, lineId: String): List<LastTimeInfo>
32+
suspend fun getSeoulBusLastTime(stationId: String, lineId: String): List<LastTimeInfo>?
3333

3434
suspend fun getGyeonggiBusStationId(stationName: String): List<GyeonggiBusStation>
3535
suspend fun getGyeonggiBusRoute(stationId: String): List<GyeonggiBusRoute>
36-
suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime>
36+
suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime>?
3737
suspend fun getGyeonggiBusRouteStations(lineId: String): List<GyeonggiBusStation>
3838
}

โ€Ždata/src/main/java/com/stop/data/remote/source/route/RouteRemoteDataSourceImpl.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ internal class RouteRemoteDataSourceImpl @Inject constructor(
140140
override suspend fun getSeoulBusLastTime(
141141
stationId: String,
142142
lineId: String
143-
): List<LastTimeInfo> {
143+
): List<LastTimeInfo>? {
144144
with(wsBusApiService.getBusLastTime(stationId, lineId)) {
145145
return when (this) {
146146
is NetworkResult.Success -> this.data.lastTimeMsgBody.lastTimes
@@ -173,10 +173,10 @@ internal class RouteRemoteDataSourceImpl @Inject constructor(
173173
}
174174
}
175175

176-
override suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime> {
176+
override suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime>? {
177177
with(apisDataService.getBusLastTime(lineId)) {
178178
return when (this) {
179-
is NetworkResult.Success -> this.data.lastTimes.map { it.toDomain() }
179+
is NetworkResult.Success -> this.data.lastTimes?.map { it.toDomain() }
180180
is NetworkResult.Failure -> throw IllegalArgumentException(this.message)
181181
is NetworkResult.NetworkError -> throw this.exception
182182
is NetworkResult.Unexpected -> throw this.exception

โ€Ždata/src/main/java/com/stop/data/repository/RouteRepositoryImpl.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ internal class RouteRepositoryImpl @Inject constructor(
7676
return remoteDataSource.getSeoulBusRoute(stationId)
7777
}
7878

79-
override suspend fun getSeoulBusLastTime(stationId: String, lineId: String): List<LastTimeInfo> {
79+
override suspend fun getSeoulBusLastTime(stationId: String, lineId: String): List<LastTimeInfo>? {
8080
return remoteDataSource.getSeoulBusLastTime(stationId, lineId)
8181
}
8282

@@ -88,7 +88,7 @@ internal class RouteRepositoryImpl @Inject constructor(
8888
return remoteDataSource.getGyeonggiBusRoute(stationId)
8989
}
9090

91-
override suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime> {
91+
override suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime>? {
9292
return remoteDataSource.getGyeonggiBusLastTime(lineId)
9393
}
9494

โ€Ždomain/src/main/java/com/stop/domain/model/route/seoul/bus/LastTimeMsgBody.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,5 @@ import com.squareup.moshi.JsonClass
66
@JsonClass(generateAdapter = true)
77
data class LastTimeMsgBody(
88
@Json(name = "itemList")
9-
val lastTimes: List<LastTimeInfo>
9+
val lastTimes: List<LastTimeInfo>?
1010
)

โ€Ždomain/src/main/java/com/stop/domain/repository/RouteRepository.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ interface RouteRepository {
3030

3131
suspend fun getSeoulBusStationArsId(stationName: String): List<BusStationInfo>
3232
suspend fun getSeoulBusRoute(stationId: String): List<BusRouteInfo>
33-
suspend fun getSeoulBusLastTime(stationId: String, lineId: String): List<LastTimeInfo>
33+
suspend fun getSeoulBusLastTime(stationId: String, lineId: String): List<LastTimeInfo>?
3434
suspend fun getSubwayRoute(
3535
routeRequest: RouteRequest,
3636
subwayLine: String,
@@ -40,6 +40,6 @@ interface RouteRepository {
4040

4141
suspend fun getGyeonggiBusStationId(stationName: String): List<GyeonggiBusStation>
4242
suspend fun getGyeonggiBusRoute(stationId: String): List<GyeonggiBusRoute>
43-
suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime>
43+
suspend fun getGyeonggiBusLastTime(lineId: String): List<GyeonggiBusLastTime>?
4444
suspend fun getGyeonggiBusRouteStations(lineId: String): List<GyeonggiBusStation>
4545
}

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

Lines changed: 43 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,23 +299,44 @@ internal class GetLastTransportTimeUseCaseImpl @Inject constructor(
299299
private suspend fun getSeoulBusLastTransportTime(
300300
transportIdRequest: TransportIdRequest
301301
): String {
302-
var lastTime = routeRepository.getSeoulBusLastTime(
302+
val lastTimes = routeRepository.getSeoulBusLastTime(
303303
transportIdRequest.stationId,
304304
transportIdRequest.routeId
305-
).first().lastTime?.toInt() ?: throw ApiServerDataException()
305+
) ?: return getRectifiedGyeonggiBusLastTransportTime(transportIdRequest)
306+
307+
var lastTime = lastTimes.first().lastTime?.toInt() ?: throw ApiServerDataException()
306308

307309
if (lastTime < MID_NIGHT) {
308310
lastTime += TIME_CORRECTION_VALUE
309311
}
310312
return lastTime.toString().chunked(2).joinToString(":")
311313
}
312314

315+
private suspend fun getRectifiedGyeonggiBusLastTransportTime(
316+
transportIdRequest: TransportIdRequest
317+
): String {
318+
var newTransportIdRequest = convertGyeonggiBusStationId(transportIdRequest)
319+
newTransportIdRequest = convertGyeonggiBusRouteId(newTransportIdRequest)
320+
321+
val lastTime = routeRepository.getGyeonggiBusLastTime(
322+
newTransportIdRequest.routeId
323+
)?.first() ?: throw ApiServerDataException()
324+
325+
val destinationIsLastStation = checkGyeonggiBusDestinationIsLastStation(newTransportIdRequest)
326+
327+
return if (destinationIsLastStation) {
328+
addSecondsFormat(lastTime.upLastTime)
329+
} else {
330+
addSecondsFormat(lastTime.downLastTime)
331+
}
332+
}
333+
313334
private suspend fun getGyeonggiBusLastTransportTime(
314335
transportIdRequest: TransportIdRequest
315336
): String {
316337
val lastTime = routeRepository.getGyeonggiBusLastTime(
317338
transportIdRequest.routeId
318-
).first()
339+
)?.first() ?: return getRectifiedSeoulBusLastTransportTime(transportIdRequest)
319340

320341
val destinationIsLastStation = checkGyeonggiBusDestinationIsLastStation(transportIdRequest)
321342

@@ -326,6 +347,25 @@ internal class GetLastTransportTimeUseCaseImpl @Inject constructor(
326347
}
327348
}
328349

350+
private suspend fun getRectifiedSeoulBusLastTransportTime(
351+
transportIdRequest: TransportIdRequest
352+
) : String {
353+
var newTransportIdRequest = convertSeoulBusStationId(transportIdRequest)
354+
newTransportIdRequest = convertSeoulBusRouteId(newTransportIdRequest)
355+
356+
val lastTimes = routeRepository.getSeoulBusLastTime(
357+
newTransportIdRequest.stationId,
358+
newTransportIdRequest.routeId
359+
) ?: throw ApiServerDataException()
360+
361+
var lastTime = lastTimes.first().lastTime?.toInt() ?: throw ApiServerDataException()
362+
363+
if (lastTime < MID_NIGHT) {
364+
lastTime += TIME_CORRECTION_VALUE
365+
}
366+
return lastTime.toString().chunked(2).joinToString(":")
367+
}
368+
329369
private fun addSecondsFormat(time: String): String {
330370
return "$time:00"
331371
}

โ€Žpresentation/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins {
33
id 'org.jetbrains.kotlin.android'
44
id 'androidx.navigation.safeargs'
55
id 'kotlin-kapt'
6+
id 'kotlin-parcelize'
67
id 'com.google.dagger.hilt.android'
78
}
89

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.stop.model.route
22

3+
import android.os.Parcelable
4+
import kotlinx.parcelize.Parcelize
5+
6+
@Parcelize
37
data class Coordinate(
48
val latitude: String,
59
val longitude: String,
6-
)
10+
) : Parcelable
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
package com.stop.model.route
22

3+
import android.os.Parcelable
4+
import kotlinx.parcelize.Parcelize
5+
6+
@Parcelize
37
data class Place(
48
val name: String,
59
val coordinate: Coordinate,
6-
)
10+
) : Parcelable

0 commit comments

Comments
ย (0)