From cf4cb2f839d28124239f219495126f73da393648 Mon Sep 17 00:00:00 2001 From: adbenitez Date: Fri, 10 Oct 2025 15:38:25 +0200 Subject: [PATCH] remove duplicated ListenableFuture and SettableFuture --- .../util/concurrent/ListenableFuture.java | 13 -- .../util/concurrent/SettableFuture.java | 136 ------------------ .../securesms/ConversationActivity.java | 4 +- .../securesms/RegistrationActivity.java | 4 +- .../securesms/audio/AudioRecorder.java | 6 +- .../components/ConversationItemThumbnail.java | 4 +- .../GlideDrawableListeningTarget.java | 3 +- .../securesms/components/InputPanel.java | 5 +- .../securesms/components/ThumbnailView.java | 5 +- .../securesms/mms/AttachmentManager.java | 13 +- .../thoughtcrime/securesms/util/ViewUtil.java | 6 +- .../concurrent/AssertedSuccessListener.java | 6 +- 12 files changed, 29 insertions(+), 176 deletions(-) delete mode 100644 src/main/java/com/b44t/messenger/util/concurrent/ListenableFuture.java delete mode 100644 src/main/java/com/b44t/messenger/util/concurrent/SettableFuture.java diff --git a/src/main/java/com/b44t/messenger/util/concurrent/ListenableFuture.java b/src/main/java/com/b44t/messenger/util/concurrent/ListenableFuture.java deleted file mode 100644 index 9b5f252c1..000000000 --- a/src/main/java/com/b44t/messenger/util/concurrent/ListenableFuture.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.b44t.messenger.util.concurrent; - -import java.util.concurrent.ExecutionException; -import java.util.concurrent.Future; - -public interface ListenableFuture extends Future { - void addListener(Listener listener); - - public interface Listener { - public void onSuccess(T result); - public void onFailure(ExecutionException e); - } -} diff --git a/src/main/java/com/b44t/messenger/util/concurrent/SettableFuture.java b/src/main/java/com/b44t/messenger/util/concurrent/SettableFuture.java deleted file mode 100644 index 003f93b8a..000000000 --- a/src/main/java/com/b44t/messenger/util/concurrent/SettableFuture.java +++ /dev/null @@ -1,136 +0,0 @@ -package com.b44t.messenger.util.concurrent; - -import java.util.LinkedList; -import java.util.List; -import java.util.concurrent.ExecutionException; -import java.util.concurrent.TimeUnit; -import java.util.concurrent.TimeoutException; - -public class SettableFuture implements ListenableFuture { - - private final List> listeners = new LinkedList<>(); - - private boolean completed; - private boolean canceled; - private volatile T result; - private volatile Throwable exception; - - public SettableFuture() { } - - public SettableFuture(T value) { - this.result = value; - this.completed = true; - } - - @Override - public synchronized boolean cancel(boolean mayInterruptIfRunning) { - if (!completed && !canceled) { - canceled = true; - return true; - } - - return false; - } - - @Override - public synchronized boolean isCancelled() { - return canceled; - } - - @Override - public synchronized boolean isDone() { - return completed; - } - - public boolean set(T result) { - synchronized (this) { - if (completed || canceled) return false; - - this.result = result; - this.completed = true; - - notifyAll(); - } - - notifyAllListeners(); - return true; - } - - public boolean setException(Throwable throwable) { - synchronized (this) { - if (completed || canceled) return false; - - this.exception = throwable; - this.completed = true; - - notifyAll(); - } - - notifyAllListeners(); - return true; - } - - public void deferTo(ListenableFuture other) { - other.addListener(new Listener() { - @Override - public void onSuccess(T result) { - SettableFuture.this.set(result); - } - - @Override - public void onFailure(ExecutionException e) { - SettableFuture.this.setException(e.getCause()); - } - }); - } - - @Override - public synchronized T get() throws InterruptedException, ExecutionException { - while (!completed) wait(); - - if (exception != null) throw new ExecutionException(exception); - else return result; - } - - @Override - public synchronized T get(long timeout, TimeUnit unit) - throws InterruptedException, ExecutionException, TimeoutException - { - long startTime = System.currentTimeMillis(); - - while (!completed && System.currentTimeMillis() - startTime > unit.toMillis(timeout)) { - wait(unit.toMillis(timeout)); - } - - if (!completed) throw new TimeoutException(); - else return get(); - } - - @Override - public void addListener(Listener listener) { - synchronized (this) { - listeners.add(listener); - - if (!completed) return; - } - - notifyListener(listener); - } - - private void notifyAllListeners() { - List> localListeners; - - synchronized (this) { - localListeners = new LinkedList<>(listeners); - } - - for (Listener listener : localListeners) { - notifyListener(listener); - } - } - - private void notifyListener(Listener listener) { - if (exception != null) listener.onFailure(new ExecutionException(exception)); - else listener.onSuccess(result); - } -} diff --git a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java index 1574c599f..9aaa1e355 100644 --- a/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/ConversationActivity.java @@ -71,8 +71,6 @@ import com.b44t.messenger.DcContact; import com.b44t.messenger.DcContext; import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcMsg; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.SettableFuture; import org.thoughtcrime.securesms.attachments.Attachment; import org.thoughtcrime.securesms.attachments.UriAttachment; @@ -127,6 +125,8 @@ import java.util.concurrent.ExecutionException; import chat.delta.rpc.Rpc; import chat.delta.rpc.RpcException; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; /** * Activity for displaying a message thread, as well as diff --git a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java index df6408066..7d1012408 100644 --- a/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java +++ b/src/main/java/org/thoughtcrime/securesms/RegistrationActivity.java @@ -46,8 +46,6 @@ import androidx.constraintlayout.widget.Group; import com.b44t.messenger.DcContext; import com.b44t.messenger.DcEvent; import com.b44t.messenger.DcProvider; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.SettableFuture; import com.google.android.material.textfield.TextInputEditText; import org.thoughtcrime.securesms.connect.DcEventCenter; @@ -68,6 +66,8 @@ import chat.delta.rpc.RpcException; import chat.delta.rpc.types.EnteredCertificateChecks; import chat.delta.rpc.types.EnteredLoginParam; import chat.delta.rpc.types.Socket; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; public class RegistrationActivity extends BaseActionBarActivity implements DcEventCenter.DcEventDelegate { diff --git a/src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java b/src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java index 8eb99cd60..0bfd9decf 100644 --- a/src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java +++ b/src/main/java/org/thoughtcrime/securesms/audio/AudioRecorder.java @@ -8,9 +8,6 @@ import android.util.Pair; import androidx.annotation.NonNull; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.SettableFuture; - import org.thoughtcrime.securesms.providers.PersistentBlobProvider; import org.thoughtcrime.securesms.util.MediaUtil; import org.thoughtcrime.securesms.util.ThreadUtil; @@ -19,6 +16,9 @@ import org.thoughtcrime.securesms.util.Util; import java.io.IOException; import java.util.concurrent.ExecutorService; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; + public class AudioRecorder { private static final String TAG = AudioRecorder.class.getSimpleName(); diff --git a/src/main/java/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java b/src/main/java/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java index b7726b67e..ed8bf0255 100644 --- a/src/main/java/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java +++ b/src/main/java/org/thoughtcrime/securesms/components/ConversationItemThumbnail.java @@ -16,8 +16,6 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.UiThread; -import com.b44t.messenger.util.concurrent.ListenableFuture; - import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.database.AttachmentDatabase; import org.thoughtcrime.securesms.mms.GlideRequests; @@ -28,6 +26,8 @@ import org.thoughtcrime.securesms.util.Util; import java.util.concurrent.ExecutionException; +import chat.delta.util.ListenableFuture; + public class ConversationItemThumbnail extends FrameLayout { private static final Paint LIGHT_THEME_OUTLINE_PAINT = new Paint(); diff --git a/src/main/java/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java b/src/main/java/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java index c7b7f61fc..9d47e18fe 100644 --- a/src/main/java/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java +++ b/src/main/java/org/thoughtcrime/securesms/components/GlideDrawableListeningTarget.java @@ -5,9 +5,10 @@ import androidx.annotation.NonNull; import androidx.annotation.Nullable; import android.widget.ImageView; -import com.b44t.messenger.util.concurrent.SettableFuture; import com.bumptech.glide.request.target.DrawableImageViewTarget; +import chat.delta.util.SettableFuture; + public class GlideDrawableListeningTarget extends DrawableImageViewTarget { private final SettableFuture loaded; diff --git a/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java b/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java index afa0c191f..16cfb012d 100644 --- a/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java +++ b/src/main/java/org/thoughtcrime/securesms/components/InputPanel.java @@ -23,8 +23,6 @@ import androidx.annotation.Nullable; import androidx.constraintlayout.widget.ConstraintLayout; import com.b44t.messenger.DcMsg; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.SettableFuture; import org.thoughtcrime.securesms.R; import org.thoughtcrime.securesms.animation.AnimationCompleteListener; @@ -42,6 +40,9 @@ import org.thoughtcrime.securesms.util.guava.Optional; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicLong; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; + public class InputPanel extends ConstraintLayout implements MicrophoneRecorderView.Listener, KeyboardAwareLinearLayout.OnKeyboardShownListener, diff --git a/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java b/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java index 27c0b1e3a..a9bca2aa5 100644 --- a/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java +++ b/src/main/java/org/thoughtcrime/securesms/components/ThumbnailView.java @@ -14,8 +14,6 @@ import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.annotation.UiThread; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.SettableFuture; import com.bumptech.glide.load.engine.DiskCacheStrategy; import org.thoughtcrime.securesms.R; @@ -32,6 +30,9 @@ import java.util.Locale; import static com.bumptech.glide.load.resource.drawable.DrawableTransitionOptions.withCrossFade; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; + public class ThumbnailView extends FrameLayout { private static final String TAG = ThumbnailView.class.getSimpleName(); diff --git a/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java b/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java index 9815c846f..53589981d 100644 --- a/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java +++ b/src/main/java/org/thoughtcrime/securesms/mms/AttachmentManager.java @@ -40,9 +40,6 @@ import androidx.appcompat.app.AlertDialog; import com.b44t.messenger.DcContext; import com.b44t.messenger.DcMsg; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.ListenableFuture.Listener; -import com.b44t.messenger.util.concurrent.SettableFuture; import org.thoughtcrime.securesms.ApplicationContext; import org.thoughtcrime.securesms.MediaPreviewActivity; @@ -78,6 +75,8 @@ import java.util.List; import java.util.concurrent.ExecutionException; import chat.delta.rpc.RpcException; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; public class AttachmentManager { @@ -133,7 +132,7 @@ public class AttachmentManager { if (attachmentViewStub.resolved()) { if (animate) { - ViewUtil.fadeOut(attachmentViewStub.get(), 200).addListener(new Listener() { + ViewUtil.fadeOut(attachmentViewStub.get(), 200).addListener(new ListenableFuture.Listener() { @Override public void onSuccess(Boolean result) { thumbnail.clear(glideRequests); @@ -234,9 +233,9 @@ public class AttachmentManager { @NonNull final Uri uri, @Nullable final DcMsg msg, @NonNull final MediaType mediaType, - final int width, - final int height, - final int chatId) + final int width, + final int height, + final int chatId) { inflateStub(); diff --git a/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java b/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java index 7cf33747b..52776edc2 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java +++ b/src/main/java/org/thoughtcrime/securesms/util/ViewUtil.java @@ -45,11 +45,11 @@ import androidx.core.view.ViewCompat; import androidx.core.view.WindowInsetsCompat; import androidx.interpolator.view.animation.FastOutSlowInInterpolator; -import com.b44t.messenger.util.concurrent.ListenableFuture; -import com.b44t.messenger.util.concurrent.SettableFuture; - import org.thoughtcrime.securesms.util.views.Stub; +import chat.delta.util.ListenableFuture; +import chat.delta.util.SettableFuture; + public class ViewUtil { private final static String TAG = ViewUtil.class.getSimpleName(); diff --git a/src/main/java/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java b/src/main/java/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java index d4550883a..90a4eedb4 100644 --- a/src/main/java/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java +++ b/src/main/java/org/thoughtcrime/securesms/util/concurrent/AssertedSuccessListener.java @@ -1,10 +1,10 @@ package org.thoughtcrime.securesms.util.concurrent; -import com.b44t.messenger.util.concurrent.ListenableFuture.Listener; - import java.util.concurrent.ExecutionException; -public abstract class AssertedSuccessListener implements Listener { +import chat.delta.util.ListenableFuture; + +public abstract class AssertedSuccessListener implements ListenableFuture.Listener { @Override public void onFailure(ExecutionException e) { throw new AssertionError(e);