From 2527682d0046c29e5c714797e128dd4845aa9bd8 Mon Sep 17 00:00:00 2001 From: Andrea Cavalli Date: Sun, 6 Mar 2022 13:21:08 +0100 Subject: [PATCH] Add EnableMinithumbnails --- .../transformer/EnableMinithumbnails.java | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 src/main/java/it/tdlight/reactiveapi/transformer/EnableMinithumbnails.java diff --git a/src/main/java/it/tdlight/reactiveapi/transformer/EnableMinithumbnails.java b/src/main/java/it/tdlight/reactiveapi/transformer/EnableMinithumbnails.java new file mode 100644 index 0000000..c76b668 --- /dev/null +++ b/src/main/java/it/tdlight/reactiveapi/transformer/EnableMinithumbnails.java @@ -0,0 +1,41 @@ +package it.tdlight.reactiveapi.transformer; + +import it.tdlight.jni.TdApi; +import it.tdlight.jni.TdApi.Ok; +import it.tdlight.jni.TdApi.OptionValueBoolean; +import it.tdlight.reactiveapi.Event.OnUpdateData; +import it.tdlight.reactiveapi.ResultingEvent; +import it.tdlight.reactiveapi.ResultingEvent.ClientBoundResultingEvent; +import it.tdlight.reactiveapi.ResultingEvent.TDLibBoundResultingEvent; +import it.tdlight.reactiveapi.ResultingEventTransformer; +import java.util.ArrayList; +import java.util.List; +import reactor.core.publisher.Flux; + +public class EnableMinithumbnails implements ResultingEventTransformer { + + @Override + public Flux transform(boolean isBot, Flux events) { + return events.concatMapIterable(event -> { + + // Append the options if the initial auth state is intercepted + if (event instanceof ClientBoundResultingEvent clientBoundResultingEvent + && clientBoundResultingEvent.event() instanceof OnUpdateData onUpdate + && onUpdate.update() instanceof TdApi.UpdateAuthorizationState authorizationState + && authorizationState.authorizationState instanceof TdApi.AuthorizationStateWaitEncryptionKey) { + + var resultingEvent = new ArrayList(2); + // Add the intercepted event + resultingEvent.add(event); + // Enable minithumbnails + resultingEvent.add(new TDLibBoundResultingEvent<>(new TdApi.SetOption("disable_minithumbnails", + new OptionValueBoolean(false)))); + return resultingEvent; + } else { + // Return just the intercepted event as-is + return List.of(event); + } + }); + } + +}