4444import org .thunderdog .challegram .tool .Strings ;
4545import org .thunderdog .challegram .tool .UI ;
4646import org .thunderdog .challegram .unsorted .Settings ;
47- import org .thunderdog .challegram .util .CancellableResultHandler ;
4847
4948import java .util .ArrayList ;
5049import java .util .Calendar ;
@@ -111,7 +110,7 @@ public class MessagesLoader implements Client.ResultHandler {
111110 private @ Nullable ThreadInfo messageThread ;
112111 private @ Nullable TdApi .MessageTopic topicId ;
113112
114- private CancellableResultHandler sponsoredResultHandler ;
113+ private Tdlib . CancellableResultHandler < TdApi . SponsoredMessages > sponsoredResultHandler ;
115114 private final MessagesSearchManagerMiddleware searchManagerMiddleware ;
116115
117116 private long contextId ;
@@ -120,36 +119,25 @@ private boolean canShowSponsoredMessage (long chatId) {
120119 return tdlib .isChannel (chatId ) && !manager .controller ().isInForceTouchMode () && !manager .controller ().inPreviewMode () && !manager .controller ().areScheduledOnly () && !manager .controller ().arePinnedMessages ();
121120 }
122121
123- // Callback is called only on successful load
124- public void requestSponsoredMessage (long chatId , RunnableData <TdApi .SponsoredMessages > callback ) {
122+ public void requestSponsoredMessages (long chatId , RunnableData <TdApi .SponsoredMessages > callback ) {
125123 if (!canShowSponsoredMessage (chatId ) || isLoadingSponsoredMessage ) {
126124 return ;
127125 }
128-
129126 isLoadingSponsoredMessage = true ;
130- sponsoredResultHandler = new CancellableResultHandler () {
127+ final long contextId = this .contextId ;
128+ sponsoredResultHandler = new Tdlib .CancellableResultHandler <>() {
131129 @ Override
132- public void processResult (TdApi .Object object ) {
130+ public void act (TdApi .SponsoredMessages sponsoredMessages , @ Nullable TdApi . Error error ) {
133131 UI .post (() -> {
134132 isLoadingSponsoredMessage = false ;
135133 sponsoredResultHandler = null ;
136-
137- TdApi .SponsoredMessages message ;
138-
139- if (object .getConstructor () == TdApi .SponsoredMessages .CONSTRUCTOR ) {
140- message = ((TdApi .SponsoredMessages ) object );
141- } else {
142- message = null ;
143- }
144-
145- if (chatId == getChatId ()) {
146- callback .runWithData (message );
134+ if (chatId == getChatId () && MessagesLoader .this .contextId == contextId ) {
135+ callback .runWithData (sponsoredMessages );
147136 }
148137 });
149138 }
150139 };
151-
152- tdlib .client ().send (new TdApi .GetChatSponsoredMessages (chatId ), sponsoredResultHandler );
140+ tdlib .send (new TdApi .GetChatSponsoredMessages (chatId ), sponsoredResultHandler );
153141 }
154142
155143 public MessagesLoader (MessagesManager manager , MessagesSearchManagerMiddleware searchMiddleware ) {
@@ -569,6 +557,7 @@ public void reuse () {
569557
570558 if (sponsoredResultHandler != null ) {
571559 sponsoredResultHandler .cancel ();
560+ sponsoredResultHandler = null ;
572561 }
573562
574563 synchronized (lock ) {
@@ -1774,13 +1763,13 @@ public boolean canLoadTop () {
17741763
17751764 @ Nullable
17761765 private MessageId getStartBottom () {
1777- TGMessage msg = manager .getAdapter ().getBottomMessage ();
1766+ TGMessage msg = manager .getAdapter ().getBottomActiveMessage ();
17781767 return msg != null ? new MessageId (msg .getChatId (), msg .getBiggestId ()) : null ;
17791768 }
17801769
17811770 @ Nullable
17821771 private MessageId getStartTop () {
1783- TGMessage msg = manager .getAdapter ().getTopMessage ();
1772+ TGMessage msg = manager .getAdapter ().getTopActiveMessage ();
17841773 return msg != null ? new MessageId (msg .getChatId (), msg .getSmallestId ()) : null ;
17851774 }
17861775
0 commit comments