summaryrefslogtreecommitdiff
path: root/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt')
-rw-r--r--app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt34
1 files changed, 29 insertions, 5 deletions
diff --git a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt
index deca4c1..29bfbfa 100644
--- a/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt
+++ b/app/src/main/java/foundation/e/advancedprivacy/features/location/FakeLocationViewModel.kt
@@ -52,24 +52,32 @@ class FakeLocationViewModel(
val singleEvents = _singleEvents.asSharedFlow()
private val specificLocationInputFlow = MutableSharedFlow<Action.SetSpecificLocationAction>()
+ private val mockLocationParametersInputFlow = MutableSharedFlow<Action.UpdateMockLocationParameters>()
@OptIn(FlowPreview::class)
suspend fun doOnStartedState() = withContext(Dispatchers.Main) {
launch {
merge(
- fakeLocationStateUseCase.configuredLocationMode.map { (mode, lat, lon) ->
+ fakeLocationStateUseCase.configuredLocationMode.map { ss ->
_state.update { s ->
s.copy(
- mode = mode,
- specificLatitude = lat,
- specificLongitude = lon
+ mode = ss.mode,
+ altitude = ss.altitude,
+ speed = ss.speed,
+ jitter = ss.jitter,
+ specificLatitude = ss.specificLatitude,
+ specificLongitude = ss.specificLongitude
)
}
},
specificLocationInputFlow
.debounce(SET_SPECIFIC_LOCATION_DELAY).map { action ->
fakeLocationStateUseCase.setSpecificLocation(action.latitude, action.longitude)
- }
+ },
+ mockLocationParametersInputFlow
+ .debounce(SET_SPECIFIC_LOCATION_DELAY).map { action ->
+ fakeLocationStateUseCase.setFakeLocationParameters(action.altitude, action.speed, action.jitter)
+ },
).collect {}
}
}
@@ -82,6 +90,8 @@ class FakeLocationViewModel(
is Action.UseRandomLocationAction -> fakeLocationStateUseCase.setRandomLocation()
is Action.UseRealLocationAction ->
fakeLocationStateUseCase.stopFakeLocation()
+ is Action.UpdateMockLocationParameters -> updateMockLocationParameters(action)
+ is Action.UseJoystick -> enableJoystick()
}
}
@@ -96,6 +106,14 @@ class FakeLocationViewModel(
specificLocationInputFlow.emit(action)
}
+ private suspend fun updateMockLocationParameters(action: Action.UpdateMockLocationParameters) {
+ mockLocationParametersInputFlow.emit(action)
+ }
+
+ private suspend fun enableJoystick() {
+
+ }
+
sealed class SingleEvent {
object RequestLocationPermission : SingleEvent()
data class ErrorEvent(val error: String) : SingleEvent()
@@ -106,6 +124,12 @@ class FakeLocationViewModel(
object StopListeningLocation : Action()
object UseRealLocationAction : Action()
object UseRandomLocationAction : Action()
+ object UseJoystick : Action()
+ data class UpdateMockLocationParameters(
+ val altitude: Float,
+ val speed: Float,
+ val jitter: Float
+ ) : Action()
data class SetSpecificLocationAction(
val latitude: Float,
val longitude: Float