From 73ec3d121f4efe45b71279bda16592bbf8335622 Mon Sep 17 00:00:00 2001
From: Janne Koschinski <janne@kuschku.de>
Date: Sat, 24 Mar 2018 04:09:17 +0100
Subject: [PATCH] Attempt at fixing another hang

---
 .../de/kuschku/libquassel/util/helpers/ObservableHelper.kt   | 3 ++-
 .../de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt    | 5 ++---
 2 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ObservableHelper.kt b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ObservableHelper.kt
index 90facf688..981b13430 100644
--- a/lib/src/main/java/de/kuschku/libquassel/util/helpers/ObservableHelper.kt
+++ b/lib/src/main/java/de/kuschku/libquassel/util/helpers/ObservableHelper.kt
@@ -1,5 +1,6 @@
 package de.kuschku.libquassel.util.helpers
 
+import de.kuschku.libquassel.util.Optional
 import io.reactivex.Observable
 
 fun <T> Observable<T>.or(default: T): T = try {
@@ -9,4 +10,4 @@ fun <T> Observable<T>.or(default: T): T = try {
 }
 
 val <T> Observable<T>.value
-  get() = this.blockingLatest().firstOrNull()
\ No newline at end of file
+  get() = this.map { Optional.of(it) }.blockingMostRecent(Optional.empty()).firstOrNull()?.orNull()
\ No newline at end of file
diff --git a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
index 1eb9a5b0c..718d242dc 100644
--- a/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
+++ b/viewmodel/src/main/java/de/kuschku/quasseldroid/viewmodel/QuasselViewModel.kt
@@ -16,7 +16,6 @@ import de.kuschku.quasseldroid.util.helper.combineLatest
 import de.kuschku.quasseldroid.util.helper.toLiveData
 import de.kuschku.quasseldroid.viewmodel.data.*
 import io.reactivex.Observable
-import io.reactivex.functions.Function
 import io.reactivex.subjects.BehaviorSubject
 import java.util.concurrent.TimeUnit
 
@@ -55,9 +54,9 @@ class QuasselViewModel : ViewModel() {
     .map(Optional<BufferViewManager>::get)
 
   val bufferViewConfig = bufferViewManager.switchMap { manager ->
-    bufferViewConfigId.map(Function<Int, Optional<BufferViewConfig>> { id ->
+    bufferViewConfigId.map { id ->
       Optional.ofNullable(manager.bufferViewConfig(id))
-    })
+    }
   }
 
   val errors = session.switchMap(ISession::error)
-- 
GitLab