diff --git a/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java b/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java index 6f03799..cbf2a3f 100644 --- a/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java +++ b/src/main/java/it/tdlight/tdlibsession/td/easy/AsyncTdEasy.java @@ -259,8 +259,8 @@ public class AsyncTdEasy { public Mono getOptionString(String name) { return this .sendDirectly(new TdApi.GetOption(name), DEFAULT_TIMEOUT, false) - .flatMap(MonoUtils::orElseThrow) - .flatMap((TdApi.OptionValue value) -> { + .handle(MonoUtils::orElseThrow) + .flatMap(value -> { switch (value.getConstructor()) { case OptionValueString.CONSTRUCTOR: return Mono.just(((OptionValueString) value).value); @@ -281,8 +281,8 @@ public class AsyncTdEasy { public Mono getOptionInteger(String name) { return this .sendDirectly(new TdApi.GetOption(name), DEFAULT_TIMEOUT, false) - .flatMap(MonoUtils::orElseThrow) - .flatMap((TdApi.OptionValue value) -> { + .handle(MonoUtils::orElseThrow) + .flatMap(value -> { switch (value.getConstructor()) { case OptionValueInteger.CONSTRUCTOR: return Mono.just(((OptionValueInteger) value).value); @@ -303,8 +303,8 @@ public class AsyncTdEasy { public Mono getOptionBoolean(String name) { return this .sendDirectly(new TdApi.GetOption(name), DEFAULT_TIMEOUT, false) - .flatMap(MonoUtils::orElseThrow) - .flatMap((TdApi.OptionValue value) -> { + .handle(MonoUtils::orElseThrow) + .flatMap(value -> { switch (value.getConstructor()) { case OptionValueBoolean.CONSTRUCTOR: return Mono.just(((OptionValueBoolean) value).value); diff --git a/src/main/java/it/tdlight/utils/MonoUtils.java b/src/main/java/it/tdlight/utils/MonoUtils.java index d869e80..83b246d 100644 --- a/src/main/java/it/tdlight/utils/MonoUtils.java +++ b/src/main/java/it/tdlight/utils/MonoUtils.java @@ -16,7 +16,6 @@ import io.vertx.reactivex.core.streams.ReadStream; import io.vertx.reactivex.core.streams.WriteStream; import it.tdlight.jni.TdApi; import it.tdlight.jni.TdApi.Chat; -import it.tdlight.jni.TdApi.Object; import it.tdlight.tdlibsession.td.TdError; import it.tdlight.tdlibsession.td.TdResult; import java.time.Duration; @@ -86,11 +85,11 @@ public class MonoUtils { } } - public static Mono orElseThrow(TdResult value) { + public static void orElseThrow(TdResult value, SynchronousSink sink) { if (value.succeeded()) { - return Mono.just(value.result()); + sink.next(value.result()); } else { - return Mono.error(new TdError(value.cause().code, value.cause().message)); + sink.error(new TdError(value.cause().code, value.cause().message)); } }