From 564c0e4bc69a35e99a9d17f4e3f3b7883afbab5e Mon Sep 17 00:00:00 2001
From: Janne Mareike Koschinski <janne@kuschku.de>
Date: Mon, 10 Jan 2022 00:40:55 +0100
Subject: [PATCH] fix: avoid memory leak in subscriber

thanks soni
---
 .../libquassel/util/helper/ObservableHelper.kt       | 12 ++++--------
 1 file changed, 4 insertions(+), 8 deletions(-)

diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helper/ObservableHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helper/ObservableHelper.kt
index 07c2f4b12..174d35b5a 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helper/ObservableHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helper/ObservableHelper.kt
@@ -24,14 +24,10 @@ import io.reactivex.Observable
 import io.reactivex.ObservableSource
 import io.reactivex.functions.BiFunction
 
-fun <T> Observable<T>.or(default: T): T = try {
-  this.blockingLatest().firstOrNull() ?: default
-} catch (_: Throwable) {
-  default
-}
+fun <T> Observable<T>.or(default: T): T = this.blockingFirst(default)
 
-val <T : Any> Observable<T>.value
-  get() = this.map { Optional.of(it) }.blockingMostRecent(Optional.empty()).firstOrNull()?.orNull()
+val <T : Any> Observable<T>.value: T?
+  get() = this.blockingFirst(null)
 
 fun <T : Any, U : Any> Observable<Optional<T>>.mapMap(mapper: (T) -> U): Observable<Optional<U>> =
   map { it.map(mapper) }
@@ -132,7 +128,7 @@ inline fun <reified T> combineLatest(
   else Observable.combineLatest(sources) { t -> t.toList() as List<T> }
 
 inline operator fun <T, U> Observable<T>.invoke(f: (T) -> U?) =
-  blockingLatest().firstOrNull()?.let(f)
+  blockingFirst()?.let(f)
 
 data class Tuple4<out A, out B, out C, out D>(
   val first: A,
-- 
GitLab