Skip to content

Commit 5f2e7b1

Browse files
bngshyonghanJu
andcommitted
✨ 러닝 종료 시 RunningActivity 종료 및 화면 전환 처리
Co-authored-by: yonghanJu <[email protected]>
1 parent 390baea commit 5f2e7b1

File tree

4 files changed

+35
-9
lines changed

4 files changed

+35
-9
lines changed
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.whyranoid.presentation.running
22

33
sealed interface Event {
4-
data class TrackingButtonClick(val mode: TrackingMode) : Event
4+
data class FinishButtonClick(val runningFinishData: RunningFinishData) : Event
5+
object RunningFinishFailure : Event
56
}

presentation/src/main/java/com/whyranoid/presentation/running/RunningActivity.kt

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.whyranoid.presentation.running
22

3+
import android.content.Intent
34
import android.os.Bundle
45
import androidx.activity.viewModels
56
import com.naver.maps.geometry.LatLng
@@ -138,6 +139,15 @@ internal class RunningActivity :
138139
}
139140
}
140141
}
142+
143+
repeatWhenUiStarted {
144+
viewModel.eventFlow.collect { event ->
145+
when (event) {
146+
is Event.FinishButtonClick -> handleRunningFinishSuccessState(event.runningFinishData)
147+
is Event.RunningFinishFailure -> handleRunningFinishFailureState()
148+
}
149+
}
150+
}
141151
}
142152

143153
private fun observeStateOnMapReady() {
@@ -199,6 +209,15 @@ internal class RunningActivity :
199209
}
200210
}
201211

212+
private fun handleRunningFinishSuccessState(runningFinishData: RunningFinishData) {
213+
setResult(RESULT_OK, Intent().putExtra(RunningViewModel.RUNNING_FINISH_DATA_KEY, runningFinishData))
214+
finish()
215+
}
216+
217+
private fun handleRunningFinishFailureState() {
218+
finish()
219+
}
220+
202221
companion object {
203222
const val MAP_MAX_ZOOM = 18.0
204223
const val MAP_MIN_ZOOM = 10.0

presentation/src/main/java/com/whyranoid/presentation/running/RunningViewModel.kt

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,11 @@ class RunningViewModel @Inject constructor(
107107
}
108108

109109
fun onFinishButtonClicked() {
110-
// TODO: 액티비티에 이벤트 알려주기
111-
runningDataManager.finishRunning()
110+
runningDataManager.finishRunning().onSuccess { runningFinishData ->
111+
emitEvent(Event.FinishButtonClick(runningFinishData))
112+
}.onFailure {
113+
emitEvent(Event.RunningFinishFailure)
114+
}
112115
}
113116

114117
companion object {

presentation/src/main/java/com/whyranoid/presentation/runningstart/RunningStartFragment.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -51,12 +51,15 @@ internal class RunningStartFragment :
5151
RUNNING_FINISH_DATA_KEY
5252
)
5353

54-
// 결과 넘겨주기
55-
val direction =
56-
RunningStartFragmentDirections.actionRunningStartFragmentToRunningFinish(
57-
runningFinishData
58-
)
59-
findNavController().navigate(direction)
54+
runningFinishData?.let {
55+
// 결과 넘겨주기
56+
val direction =
57+
RunningStartFragmentDirections.actionRunningStartFragmentToRunningFinish(
58+
runningFinishData
59+
)
60+
findNavController().navigate(direction)
61+
} ?: Snackbar.make(binding.root, "러닝 도중 에러가 발생했어요! 죄송해요..", Snackbar.LENGTH_SHORT)
62+
.show()
6063
}
6164
}
6265

0 commit comments

Comments
 (0)