summaryrefslogtreecommitdiff
path: root/anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt
diff options
context:
space:
mode:
Diffstat (limited to 'anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt')
-rw-r--r--anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt45
1 files changed, 44 insertions, 1 deletions
diff --git a/anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt b/anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt
index 0aed98f..fd527f6 100644
--- a/anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt
+++ b/anastasis/src/main/java/net/taler/anastasis/reducers/ReducerManager.kt
@@ -24,11 +24,14 @@ import kotlinx.coroutines.flow.catch
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.onEach
import kotlinx.coroutines.launch
+import kotlinx.serialization.json.Json
import net.taler.anastasis.Utils
+import net.taler.anastasis.Utils.encodeToNativeJson
import net.taler.anastasis.backend.AnastasisReducerApi
import net.taler.anastasis.models.AuthenticationProviderStatus
import net.taler.anastasis.models.ContinentInfo
import net.taler.anastasis.models.CountryInfo
+import net.taler.anastasis.models.Policy
import net.taler.anastasis.models.ReducerArgs
import net.taler.anastasis.models.ReducerState
import org.json.JSONObject
@@ -64,6 +67,15 @@ class ReducerManager(
}
}
+ fun next() = scope.launch {
+ state.value?.let { initialState ->
+ api.reduceAction(initialState, "next")
+ .onSuccess { newState ->
+ state.value = newState
+ }
+ }
+ }
+
fun selectContinent(continent: ContinentInfo) = scope.launch {
state.value?.let { initialState ->
api.reduceAction(initialState, "select_continent") {
@@ -147,10 +159,41 @@ class ReducerManager(
fun deleteAuthentication(index: Int) = scope.launch {
state.value?.let { initialState ->
api.reduceAction(initialState, "delete_authentication") {
- put("index", index)
+ put("authentication_method", index)
+ }.onSuccess { newState ->
+ state.value = newState
+ }
+ }
+ }
+
+ fun addPolicy(policy: Policy) = scope.launch {
+ state.value?.let { initialState ->
+ api.reduceAction(initialState, "add_policy") {
+ put("policy", Json.encodeToNativeJson(policy.methods))
+ }.onSuccess { newState ->
+ state.value = newState
+ }.onError { Log.d("ReducerManager", "$it") }
+ }
+ }
+
+ fun updatePolicy(index: Int, policy: Policy) = scope.launch {
+ state.value?.let { initialState ->
+ api.reduceAction(initialState, "update_policy") {
+ put("policy_index", index)
+ put("policy", Json.encodeToNativeJson(policy.methods))
}.onSuccess { newState ->
state.value = newState
}
}
}
+
+ fun deletePolicy(index: Int) = scope.launch {
+ state.value?.let { initialState ->
+ api.reduceAction(initialState, "delete_policy") {
+ put("policy_index", index)
+ }.onSuccess { newState ->
+ state.value = newState
+ }
+ }
+ }
} \ No newline at end of file