summaryrefslogtreecommitdiff
path: root/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
diff options
context:
space:
mode:
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/MainViewModel.kt')
-rw-r--r--wallet/src/main/java/net/taler/wallet/MainViewModel.kt26
1 files changed, 18 insertions, 8 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
index b4da875..4b53d15 100644
--- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
+++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt
@@ -24,6 +24,9 @@ import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.viewModelScope
import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.flow.MutableStateFlow
+import kotlinx.coroutines.flow.StateFlow
+import kotlinx.coroutines.flow.getAndUpdate
import kotlinx.coroutines.launch
import kotlinx.serialization.encodeToString
import net.taler.common.Amount
@@ -57,6 +60,11 @@ private val transactionNotifications = listOf(
"transaction-state-transition",
)
+private val observabilityNotifications = listOf(
+ "task-observability-event",
+ "request-observability-event",
+)
+
class MainViewModel(
app: Application,
) : AndroidViewModel(app), VersionReceiver, NotificationReceiver {
@@ -89,8 +97,8 @@ class MainViewModel(
private val mTransactionsEvent = MutableLiveData<Event<ScopeInfo>>()
val transactionsEvent: LiveData<Event<ScopeInfo>> = mTransactionsEvent
- private val mObservabilityLog = MutableLiveData<List<ObservabilityEvent>>(emptyList())
- val observabilityLog: LiveData<List<ObservabilityEvent>> = mObservabilityLog
+ private val mObservabilityLog = MutableStateFlow<List<ObservabilityEvent>>(emptyList())
+ val observabilityLog: StateFlow<List<ObservabilityEvent>> = mObservabilityLog
private val mScanCodeEvent = MutableLiveData<Event<Boolean>>()
val scanCodeEvent: LiveData<Event<Boolean>> = mScanCodeEvent
@@ -113,14 +121,16 @@ class MainViewModel(
balanceManager.loadBalances()
}
- if (payload.type == "task-observability-event"
+ if (payload.type in observabilityNotifications
&& payload.event != null
&& devMode.value == true) {
- val logs = mObservabilityLog.value
- ?.takeLast(OBSERVABILITY_LIMIT)
- ?.toMutableList() ?: mutableListOf()
- logs.add(payload.event)
- mObservabilityLog.postValue(logs)
+ mObservabilityLog.getAndUpdate { logs ->
+ logs.takeLast(OBSERVABILITY_LIMIT)
+ .toMutableList().apply {
+ add(payload.event)
+ }
+
+ }
}
if (payload.type in transactionNotifications) viewModelScope.launch(Dispatchers.Main) {