Skip to content

Commit faf5d71

Browse files
yonghanJubngsh
andcommitted
✨ RunningDataManager.kt 에서 현재 프로젝트의 의존성 제거
Co-authored-by: bngsh <[email protected]>
1 parent 1d6c90d commit faf5d71

File tree

14 files changed

+104
-51
lines changed

14 files changed

+104
-51
lines changed

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

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

3+
import com.whyranoid.presentation.running.runningdatamanager.RunningFinishData
4+
35
sealed interface Event {
46
data class FinishButtonClick(val runningFinishData: RunningFinishData) : Event
57
object RunningFinishFailure : Event

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

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,14 @@ import com.naver.maps.map.overlay.PathOverlay
1717
import com.whyranoid.presentation.R
1818
import com.whyranoid.presentation.base.BaseActivity
1919
import com.whyranoid.presentation.databinding.ActivityRunningBinding
20+
import com.whyranoid.presentation.running.runningdatamanager.RunningData
21+
import com.whyranoid.presentation.running.runningdatamanager.RunningFinishData
22+
import com.whyranoid.presentation.running.runningdatamanager.RunningState
23+
import com.whyranoid.presentation.running.runningdatamanager.toLatLng
2024
import com.whyranoid.presentation.util.dateToString
2125
import com.whyranoid.presentation.util.repeatWhenUiStarted
2226
import dagger.hilt.android.AndroidEntryPoint
23-
import java.util.*
27+
import java.util.Date
2428

2529
@AndroidEntryPoint
2630
internal class RunningActivity :

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

Lines changed: 0 additions & 15 deletions
This file was deleted.

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

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@ import androidx.work.WorkInfo
1212
import androidx.work.WorkManager
1313
import com.whyranoid.domain.usecase.FinishRunningUseCase
1414
import com.whyranoid.domain.usecase.StartRunningUseCase
15-
import com.whyranoid.presentation.model.toRunningHistory
15+
import com.whyranoid.presentation.running.runningdatamanager.RunningDataManager
16+
import com.whyranoid.presentation.running.runningdatamanager.RunningState
17+
import com.whyranoid.presentation.running.runningdatamanager.toRunningHistory
1618
import dagger.hilt.android.lifecycle.HiltViewModel
1719
import dagger.hilt.android.qualifiers.ApplicationContext
1820
import kotlinx.coroutines.flow.MutableSharedFlow
@@ -26,10 +28,10 @@ import javax.inject.Inject
2628
class RunningViewModel @Inject constructor(
2729
@ApplicationContext context: Context,
2830
startRunningUseCase: StartRunningUseCase,
29-
private val finishRunningUseCase: FinishRunningUseCase,
30-
private val runningDataManager: RunningDataManager
31+
private val finishRunningUseCase: FinishRunningUseCase
3132
) : ViewModel() {
3233

34+
private val runningDataManager = RunningDataManager.getInstance()
3335
val runningState = runningDataManager.runningState
3436

3537
private val _trackingModeState = MutableStateFlow(TrackingMode.FOLLOW)

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

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,17 +22,20 @@ import com.google.android.gms.location.LocationServices
2222
import com.google.android.gms.location.Priority
2323
import com.whyranoid.presentation.MainActivity
2424
import com.whyranoid.presentation.R
25+
import com.whyranoid.presentation.running.runningdatamanager.RunningDataManager
26+
import com.whyranoid.presentation.running.runningdatamanager.RunningState
2527
import dagger.assisted.Assisted
2628
import dagger.assisted.AssistedInject
2729
import kotlinx.coroutines.delay
2830

2931
@HiltWorker
3032
class RunningWorker @AssistedInject constructor(
3133
@Assisted private val context: Context,
32-
@Assisted params: WorkerParameters,
33-
private val runningDataManager: RunningDataManager
34+
@Assisted params: WorkerParameters
3435
) : CoroutineWorker(context, params) {
3536

37+
private val runningDataManager = RunningDataManager.getInstance()
38+
3639
private val fusedLocationClient = LocationServices.getFusedLocationProviderClient(context)
3740
private val locationRequest =
3841
LocationRequest.Builder(Priority.PRIORITY_HIGH_ACCURACY, UPDATE_INTERVAL_MS).build()

presentation/src/main/java/com/whyranoid/presentation/running/RunningDataManager.kt renamed to presentation/src/main/java/com/whyranoid/presentation/running/runningdatamanager/RunningDataManager.kt

Lines changed: 24 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,11 @@
1-
package com.whyranoid.presentation.running
1+
package com.whyranoid.presentation.running.runningdatamanager
22

33
import android.location.Location
4-
import com.whyranoid.presentation.model.RunningHistoryUiModel
54
import kotlinx.coroutines.flow.MutableStateFlow
65
import kotlinx.coroutines.flow.asStateFlow
7-
import java.util.*
8-
import javax.inject.Inject
9-
import javax.inject.Singleton
6+
import java.util.UUID
107

11-
@Singleton
12-
class RunningDataManager @Inject constructor() {
8+
class RunningDataManager {
139
private var _runningState = MutableStateFlow<RunningState>(
1410
RunningState.NotRunning()
1511
)
@@ -107,6 +103,16 @@ class RunningDataManager @Inject constructor() {
107103
it.runningData.copy(runningTime = it.runningData.runningTime + 1)
108104
}.let { RunningState.Running(it) }
109105
}
106+
107+
companion object {
108+
private var INSTANCE: RunningDataManager? = null
109+
110+
fun getInstance(): RunningDataManager {
111+
return INSTANCE ?: RunningDataManager().also {
112+
INSTANCE = it
113+
}
114+
}
115+
}
110116
}
111117

112118
// TODO : 모델 파일 분리
@@ -120,7 +126,7 @@ data class RunningData(
120126
)
121127

122128
data class RunningFinishData(
123-
val runningHistory: RunningHistoryUiModel,
129+
val runningHistory: RunningHistoryModel,
124130
val runningPositionList: List<List<RunningPosition>>
125131
) : java.io.Serializable
126132

@@ -136,9 +142,8 @@ sealed interface RunningState {
136142

137143
fun RunningData.toRunningFinishData() =
138144
RunningFinishData(
139-
RunningHistoryUiModel(
145+
RunningHistoryModel(
140146
historyId = UUID.randomUUID().toString(),
141-
date = startTime,
142147
startedAt = startTime,
143148
finishedAt = System.currentTimeMillis(),
144149
totalRunningTime = runningTime,
@@ -147,3 +152,12 @@ fun RunningData.toRunningFinishData() =
147152
),
148153
runningPositionList
149154
)
155+
156+
data class RunningHistoryModel(
157+
val historyId: String = "",
158+
val startedAt: Long = 0L,
159+
val finishedAt: Long = 0L,
160+
val totalRunningTime: Int = 0,
161+
val pace: Double = 0.0,
162+
val totalDistance: Double = 0.0
163+
) : java.io.Serializable
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.whyranoid.presentation.running.runningdatamanager
2+
3+
import com.naver.maps.geometry.LatLng
4+
import com.whyranoid.domain.model.RunningHistory
5+
import com.whyranoid.presentation.model.RunningHistoryUiModel
6+
7+
data class RunningPosition(
8+
val latitude: Double,
9+
val longitude: Double
10+
) : java.io.Serializable
11+
12+
fun RunningPosition.toLatLng(): LatLng {
13+
return LatLng(
14+
this.latitude,
15+
this.longitude
16+
)
17+
}
18+
19+
fun RunningHistoryModel.toRunningHistoryUiModel() =
20+
RunningHistoryUiModel(
21+
historyId = historyId,
22+
date = startedAt,
23+
startedAt = startedAt,
24+
finishedAt = finishedAt,
25+
totalRunningTime = totalRunningTime,
26+
pace = pace,
27+
totalDistance = totalDistance
28+
)
29+
30+
fun RunningHistoryModel.toRunningHistory() =
31+
RunningHistory(
32+
historyId = historyId,
33+
startedAt = startedAt,
34+
finishedAt = finishedAt,
35+
totalRunningTime = totalRunningTime,
36+
pace = pace,
37+
totalDistance = totalDistance
38+
)

presentation/src/main/java/com/whyranoid/presentation/runningfinish/RunningFinishFragment.kt

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,11 @@ import com.whyranoid.presentation.base.BaseFragment
1515
import com.whyranoid.presentation.databinding.FragmentRunningFinishBinding
1616
import com.whyranoid.presentation.model.RunningHistoryUiModel
1717
import com.whyranoid.presentation.model.UiState
18-
import com.whyranoid.presentation.running.RunningFinishData
19-
import com.whyranoid.presentation.running.RunningPosition
20-
import com.whyranoid.presentation.running.toLatLng
21-
import com.whyranoid.presentation.util.pxdp.PxDpUtil
18+
import com.whyranoid.presentation.running.runningdatamanager.RunningFinishData
19+
import com.whyranoid.presentation.running.runningdatamanager.RunningPosition
20+
import com.whyranoid.presentation.running.runningdatamanager.toLatLng
21+
import com.whyranoid.presentation.running.runningdatamanager.toRunningHistoryUiModel
22+
import com.whyranoid.presentation.util.converters.UnitConverters
2223
import com.whyranoid.presentation.util.repeatWhenUiStarted
2324
import dagger.hilt.android.AndroidEntryPoint
2425
import timber.log.Timber
@@ -72,7 +73,8 @@ internal class RunningFinishFragment :
7273
}
7374

7475
private fun handleDataStateSuccess(runningFinishData: RunningFinishData) {
75-
binding.runningHistoryItem.runningHistory = runningFinishData.runningHistory
76+
binding.runningHistoryItem.runningHistory =
77+
runningFinishData.runningHistory.toRunningHistoryUiModel()
7678

7779
moveCamera(runningFinishData)
7880
updatePathsOverlay(runningFinishData.runningPositionList)
@@ -95,9 +97,10 @@ internal class RunningFinishFragment :
9597
}
9698

9799
private fun handlePositiveButtonClicked(runningHistory: RunningHistoryUiModel) {
98-
val direction = RunningFinishFragmentDirections.actionRunningFinishFragmentToCreateRunningPostFragment(
99-
runningHistory
100-
)
100+
val direction =
101+
RunningFinishFragmentDirections.actionRunningFinishFragmentToCreateRunningPostFragment(
102+
runningHistory
103+
)
101104
findNavController().navigate(direction)
102105
}
103106

@@ -118,7 +121,7 @@ internal class RunningFinishFragment :
118121
position.toLatLng()
119122
}
120123
).build(),
121-
PxDpUtil.pxToDp(requireContext(), 200)
124+
UnitConverters.pxToDp(requireContext(), 200)
122125
)
123126
it.moveCamera(cameraUpdate)
124127
}

presentation/src/main/java/com/whyranoid/presentation/runningfinish/RunningFinishViewModel.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,9 @@ import androidx.lifecycle.viewModelScope
66
import com.whyranoid.domain.model.MoGakRunException
77
import com.whyranoid.domain.usecase.SaveRunningHistoryUseCase
88
import com.whyranoid.presentation.model.UiState
9-
import com.whyranoid.presentation.running.RunningFinishData
109
import com.whyranoid.presentation.running.RunningViewModel.Companion.RUNNING_FINISH_DATA_KEY
10+
import com.whyranoid.presentation.running.runningdatamanager.RunningFinishData
11+
import com.whyranoid.presentation.running.runningdatamanager.toRunningHistoryUiModel
1112
import dagger.hilt.android.lifecycle.HiltViewModel
1213
import kotlinx.coroutines.flow.MutableSharedFlow
1314
import kotlinx.coroutines.flow.MutableStateFlow
@@ -58,7 +59,7 @@ class RunningFinishViewModel @Inject constructor(
5859

5960
fun onPositiveButtonClicked() {
6061
(runningFinishDataState.value as? UiState.Success<RunningFinishData>)?.value?.let { runningFinishData ->
61-
emitEvent(Event.PositiveButtonClick(runningFinishData.runningHistory))
62+
emitEvent(Event.PositiveButtonClick(runningFinishData.runningHistory.toRunningHistoryUiModel()))
6263
} ?: kotlin.run {
6364
_runningFinishDataState.value = UiState.Failure(
6465
MoGakRunException.FileNotFoundedException

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,9 +17,9 @@ import com.whyranoid.presentation.R
1717
import com.whyranoid.presentation.base.BaseFragment
1818
import com.whyranoid.presentation.databinding.FragmentRunningStartBinding
1919
import com.whyranoid.presentation.running.RunningActivity
20-
import com.whyranoid.presentation.running.RunningFinishData
21-
import com.whyranoid.presentation.running.RunningState
2220
import com.whyranoid.presentation.running.RunningViewModel.Companion.RUNNING_FINISH_DATA_KEY
21+
import com.whyranoid.presentation.running.runningdatamanager.RunningFinishData
22+
import com.whyranoid.presentation.running.runningdatamanager.RunningState
2323
import com.whyranoid.presentation.util.getSerializableData
2424
import com.whyranoid.presentation.util.gpsstate.GPSState
2525
import com.whyranoid.presentation.util.repeatWhenUiStarted

0 commit comments

Comments
 (0)