summaryrefslogtreecommitdiffhomepage
path: root/android
diff options
context:
space:
mode:
authorAlbin <albin@mullvad.net>2022-07-13 15:31:16 +0200
committerAlbin <albin@mullvad.net>2022-07-20 09:59:02 +0200
commit040b6e0155612945f66c49d361c63c34c56a3357 (patch)
treea1c0784648fdedc849f6c22c74bbd55064c8e4f7 /android
parente47722cd17bd8cfd61f52445847bf931a5108892 (diff)
downloadmullvadvpn-040b6e0155612945f66c49d361c63c34c56a3357.tar.xz
mullvadvpn-040b6e0155612945f66c49d361c63c34c56a3357.zip
Add EventNotifier flow wrapper
Diffstat (limited to 'android')
-rw-r--r--android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt7
1 files changed, 7 insertions, 0 deletions
diff --git a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
index a0a809f8ff..de76ff5b0b 100644
--- a/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
+++ b/android/app/src/main/kotlin/net/mullvad/mullvadvpn/util/FlowUtils.kt
@@ -17,6 +17,7 @@ import kotlinx.coroutines.flow.flatMapLatest
import kotlinx.coroutines.flow.take
import net.mullvad.mullvadvpn.model.ServiceResult
import net.mullvad.mullvadvpn.ui.serviceconnection.ServiceConnectionState
+import net.mullvad.talpid.util.EventNotifier
fun <T> SendChannel<T>.safeOffer(element: T): Boolean {
return runCatching { offer(element) }.getOrDefault(false)
@@ -78,3 +79,9 @@ fun <R> Flow<ServiceConnectionState>.flatMapReadyConnectionOrDefault(
}
}
}
+
+fun <T> callbackFlowFromNotifier(notifier: EventNotifier<T>) = callbackFlow<T> {
+ val handler: (T) -> Unit = { value -> trySend(value) }
+ notifier.subscribe(this, handler)
+ awaitClose { notifier.unsubscribe(this) }
+}