This commit is contained in:
Ryan ZHAO
2021-02-01 15:01:06 +11:00
parent a34a18f5f1
commit 2db567144d
20 changed files with 22 additions and 24 deletions

View File

@@ -66,7 +66,7 @@ import org.thoughtcrime.securesms.util.SaveAttachmentTask;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.ViewUtil;
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
import org.session.libsession.utilities.task.ProgressDialogAsyncTask;
import java.util.Collection;
import java.util.LinkedList;

View File

@@ -17,7 +17,7 @@ import network.loki.messenger.R;
import org.thoughtcrime.securesms.components.emoji.EmojiTextView;
import org.session.libsession.messaging.threads.recipients.Recipient;
import org.thoughtcrime.securesms.util.ResUtil;
import org.thoughtcrime.securesms.util.spans.CenterAlignedRelativeSizeSpan;
import org.session.libsession.utilities.color.spans.CenterAlignedRelativeSizeSpan;
public class FromTextView extends EmojiTextView {

View File

@@ -69,7 +69,6 @@ import org.thoughtcrime.securesms.conversation.ConversationAdapter.ItemClickList
import org.session.libsession.messaging.threads.Address;
import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.database.MmsSmsDatabase;
import org.thoughtcrime.securesms.database.RecipientDatabase;
import org.thoughtcrime.securesms.database.loaders.ConversationLoader;
import org.thoughtcrime.securesms.database.model.MediaMmsMessageRecord;
import org.thoughtcrime.securesms.database.model.MessageRecord;
@@ -90,7 +89,7 @@ import org.thoughtcrime.securesms.stickers.StickerPackPreviewActivity;
import org.thoughtcrime.securesms.util.CommunicationActions;
import org.thoughtcrime.securesms.util.SaveAttachmentTask;
import org.thoughtcrime.securesms.util.StickyHeaderDecoration;
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
import org.session.libsession.utilities.task.ProgressDialogAsyncTask;
import org.session.libsignal.libsignal.util.guava.Optional;
import org.session.libsignal.service.loki.api.opengroups.PublicChat;
import org.session.libsignal.service.loki.api.opengroups.PublicChatAPI;
@@ -112,11 +111,9 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Locale;
import java.util.Set;
import java.util.TreeSet;
import kotlin.Unit;
import network.loki.messenger.R;
import nl.komponents.kovenant.Kovenant;
@SuppressLint("StaticFieldLeak")
public class ConversationFragment extends Fragment

View File

@@ -12,7 +12,7 @@ import org.thoughtcrime.securesms.database.DatabaseFactory;
import org.thoughtcrime.securesms.search.SearchRepository;
import org.thoughtcrime.securesms.search.model.MessageResult;
import org.thoughtcrime.securesms.util.CloseableLiveData;
import org.thoughtcrime.securesms.util.Debouncer;
import org.session.libsession.utilities.Debouncer;
import org.session.libsession.utilities.Util;
import org.session.libsession.utilities.concurrent.SignalExecutors;

View File

@@ -15,7 +15,7 @@ import org.thoughtcrime.securesms.database.DatabaseContentProviders;
import org.thoughtcrime.securesms.database.model.StickerRecord;
import org.thoughtcrime.securesms.stickers.StickerSearchRepository;
import org.thoughtcrime.securesms.util.CloseableLiveData;
import org.thoughtcrime.securesms.util.Throttler;
import org.session.libsession.utilities.Throttler;
class ConversationStickerViewModel extends ViewModel {

View File

@@ -14,7 +14,7 @@ import org.thoughtcrime.securesms.jobmanager.persistence.FullSpec;
import org.thoughtcrime.securesms.jobmanager.persistence.JobSpec;
import org.thoughtcrime.securesms.jobmanager.persistence.JobStorage;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.util.Debouncer;
import org.session.libsession.utilities.Debouncer;
import java.util.ArrayList;
import java.util.Collections;

View File

@@ -10,7 +10,7 @@ import org.thoughtcrime.securesms.jobmanager.impl.DefaultExecutorFactory;
import org.thoughtcrime.securesms.jobmanager.impl.JsonDataSerializer;
import org.thoughtcrime.securesms.jobmanager.persistence.JobStorage;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.util.Debouncer;
import org.session.libsession.utilities.Debouncer;
import java.util.ArrayList;
import java.util.Collections;

View File

@@ -9,7 +9,7 @@ import androidx.annotation.NonNull;
import android.text.TextUtils;
import org.thoughtcrime.securesms.net.RequestController;
import org.thoughtcrime.securesms.util.Debouncer;
import org.session.libsession.utilities.Debouncer;
import org.session.libsession.utilities.Util;
import org.session.libsignal.libsignal.util.guava.Optional;

View File

@@ -56,7 +56,7 @@ import org.thoughtcrime.securesms.contactshare.SimpleTextWatcher;
import org.thoughtcrime.securesms.logging.Log;
import org.thoughtcrime.securesms.logsubmit.util.Scrubber;
import org.thoughtcrime.securesms.util.Util;
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
import org.session.libsession.utilities.task.ProgressDialogAsyncTask;
import java.io.BufferedReader;
import java.io.IOException;

View File

@@ -8,7 +8,7 @@ import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.ApplicationContext;
import org.thoughtcrime.securesms.loki.api.PublicChatManager;
import org.thoughtcrime.securesms.util.Debouncer;
import org.session.libsession.utilities.Debouncer;
import org.session.libsignal.service.loki.api.Poller;
import org.session.libsignal.utilities.ThreadUtils;

View File

@@ -11,7 +11,7 @@ import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.database.DatabaseContentProviders;
import org.thoughtcrime.securesms.database.model.StickerRecord;
import org.thoughtcrime.securesms.util.Throttler;
import org.session.libsession.utilities.Throttler;
import java.util.List;

View File

@@ -23,7 +23,7 @@ import org.thoughtcrime.securesms.stickers.StickerKeyboardPageFragment.EventList
import org.thoughtcrime.securesms.stickers.StickerKeyboardRepository.PackListResult;
import org.thoughtcrime.securesms.util.ResUtil;
import org.session.libsession.utilities.ThemeUtil;
import org.thoughtcrime.securesms.util.Throttler;
import org.session.libsession.utilities.Throttler;
import java.util.ArrayList;
import java.util.HashMap;

View File

@@ -11,7 +11,7 @@ import androidx.annotation.NonNull;
import org.thoughtcrime.securesms.database.DatabaseContentProviders;
import org.thoughtcrime.securesms.stickers.StickerKeyboardRepository.PackListResult;
import org.thoughtcrime.securesms.util.Throttler;
import org.session.libsession.utilities.Throttler;
final class StickerKeyboardViewModel extends ViewModel {

View File

@@ -1,36 +0,0 @@
package org.thoughtcrime.securesms.util;
import android.os.Handler;
/**
* A class that will throttle the number of runnables executed to be at most once every specified
* interval. However, it could be longer if events are published consistently.
*
* Useful for performing actions in response to rapid user input, such as inputting text, where you
* don't necessarily want to perform an action after <em>every</em> input.
*
* See http://rxmarbles.com/#debounce
*/
public class Debouncer {
private final Handler handler;
private final long threshold;
/**
* @param threshold Only one runnable will be executed via {@link #publish(Runnable)} every
* {@code threshold} milliseconds.
*/
public Debouncer(long threshold) {
this.handler = new Handler();
this.threshold = threshold;
}
public void publish(Runnable runnable) {
handler.removeCallbacksAndMessages(null);
handler.postDelayed(runnable, threshold);
}
public void clear() {
handler.removeCallbacksAndMessages(null);
}
}

View File

@@ -13,7 +13,7 @@ import androidx.appcompat.app.AlertDialog
import network.loki.messenger.R
import org.thoughtcrime.securesms.logging.Log
import org.thoughtcrime.securesms.mms.PartAuthority
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask
import org.session.libsession.utilities.task.ProgressDialogAsyncTask
import java.io.File
import java.io.IOException
import java.lang.ref.WeakReference

View File

@@ -1,45 +0,0 @@
package org.thoughtcrime.securesms.util;
import android.os.Handler;
/**
* A class that will throttle the number of runnables executed to be at most once every specified
* interval.
*
* Useful for performing actions in response to rapid user input where you want to take action on
* the initial input but prevent follow-up spam.
*
* This is different from {@link Debouncer} in that it will run the first runnable immediately
* instead of waiting for input to die down.
*
* See http://rxmarbles.com/#throttle
*/
public class Throttler {
private static final int WHAT = 8675309;
private final Handler handler;
private final long threshold;
/**
* @param threshold Only one runnable will be executed via {@link #publish(Runnable)} every
* {@code threshold} milliseconds.
*/
public Throttler(long threshold) {
this.handler = new Handler();
this.threshold = threshold;
}
public void publish(Runnable runnable) {
if (handler.hasMessages(WHAT)) {
return;
}
runnable.run();
handler.sendMessageDelayed(handler.obtainMessage(WHAT), threshold);
}
public void clear() {
handler.removeCallbacksAndMessages(null);
}
}

View File

@@ -9,8 +9,9 @@ import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import network.loki.messenger.R;
import org.thoughtcrime.securesms.logging.Log;
import org.session.libsession.utilities.ServiceUtil;
import org.session.libsignal.libsignal.logging.Log;
import org.session.libsignal.libsignal.util.guava.Function;
import org.session.libsignal.libsignal.util.guava.Optional;
@@ -25,7 +26,7 @@ import java.util.Set;
public final class SubscriptionManagerCompat {
private static final String TAG = Log.tag(SubscriptionManagerCompat.class);
private static final String TAG = SubscriptionManagerCompat.class.getSimpleName();
private final Context context;

View File

@@ -1,26 +0,0 @@
package org.thoughtcrime.securesms.util.spans;
import androidx.annotation.NonNull;
import android.text.TextPaint;
import android.text.style.MetricAffectingSpan;
public class CenterAlignedRelativeSizeSpan extends MetricAffectingSpan {
private final float relativeSize;
public CenterAlignedRelativeSizeSpan(float relativeSize) {
this.relativeSize = relativeSize;
}
@Override
public void updateMeasureState(@NonNull TextPaint p) {
updateDrawState(p);
}
@Override
public void updateDrawState(TextPaint tp) {
tp.setTextSize(tp.getTextSize() * relativeSize);
tp.baselineShift += (int) (tp.ascent() * relativeSize) / 4;
}
}

View File

@@ -1,44 +0,0 @@
package org.thoughtcrime.securesms.util.task;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
import androidx.annotation.NonNull;
import java.lang.ref.WeakReference;
public abstract class ProgressDialogAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> {
private final WeakReference<Context> contextReference;
private ProgressDialog progress;
private final String title;
private final String message;
public ProgressDialogAsyncTask(@NonNull Context context, @NonNull String title, @NonNull String message) {
super();
this.contextReference = new WeakReference<>(context);
this.title = title;
this.message = message;
}
public ProgressDialogAsyncTask(@NonNull Context context, int title, int message) {
this(context, context.getString(title), context.getString(message));
}
@Override
protected void onPreExecute() {
final Context context = contextReference.get();
if (context != null) progress = ProgressDialog.show(context, title, message, true);
}
@Override
protected void onPostExecute(Result result) {
if (progress != null) progress.dismiss();
}
protected @NonNull Context getContext() {
return contextReference.get();
}
}

View File

@@ -1,94 +0,0 @@
package org.thoughtcrime.securesms.util.task;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import androidx.annotation.Nullable;
import com.google.android.material.snackbar.Snackbar;
import android.view.View;
public abstract class SnackbarAsyncTask<Params>
extends AsyncTask<Params, Void, Void>
implements View.OnClickListener
{
private final View view;
private final String snackbarText;
private final String snackbarActionText;
private final int snackbarActionColor;
private final int snackbarDuration;
private final boolean showProgress;
private @Nullable Params reversibleParameter;
private @Nullable ProgressDialog progressDialog;
public SnackbarAsyncTask(View view,
String snackbarText,
String snackbarActionText,
int snackbarActionColor,
int snackbarDuration,
boolean showProgress)
{
this.view = view;
this.snackbarText = snackbarText;
this.snackbarActionText = snackbarActionText;
this.snackbarActionColor = snackbarActionColor;
this.snackbarDuration = snackbarDuration;
this.showProgress = showProgress;
}
@Override
protected void onPreExecute() {
if (this.showProgress) this.progressDialog = ProgressDialog.show(view.getContext(), "", "", true);
else this.progressDialog = null;
}
@SafeVarargs
@Override
protected final Void doInBackground(Params... params) {
this.reversibleParameter = params != null && params.length > 0 ?params[0] : null;
executeAction(reversibleParameter);
return null;
}
@Override
protected void onPostExecute(Void result) {
if (this.showProgress && this.progressDialog != null) {
this.progressDialog.dismiss();
this.progressDialog = null;
}
Snackbar.make(view, snackbarText, snackbarDuration)
.setAction(snackbarActionText, this)
.setActionTextColor(snackbarActionColor)
.show();
}
@Override
public void onClick(View v) {
new AsyncTask<Void, Void, Void>() {
@Override
protected void onPreExecute() {
if (showProgress) progressDialog = ProgressDialog.show(view.getContext(), "", "", true);
else progressDialog = null;
}
@Override
protected Void doInBackground(Void... params) {
reverseAction(reversibleParameter);
return null;
}
@Override
protected void onPostExecute(Void result) {
if (showProgress && progressDialog != null) {
progressDialog.dismiss();
progressDialog = null;
}
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
}
protected abstract void executeAction(@Nullable Params parameter);
protected abstract void reverseAction(@Nullable Params parameter);
}