Prevent internal shake to report dialog from showing after locking.

fork-5.53.8
Cody Henthorne 2022-02-22 15:36:35 -05:00 zatwierdzone przez Greyson Parrelli
rodzic bd18b731c8
commit aff0c43b39
1 zmienionych plików z 20 dodań i 16 usunięć

Wyświetl plik

@ -7,6 +7,8 @@ import android.widget.Toast;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog; import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Lifecycle;
import com.google.android.material.dialog.MaterialAlertDialogBuilder; import com.google.android.material.dialog.MaterialAlertDialogBuilder;
@ -36,7 +38,7 @@ public final class ShakeToReport implements ShakeDetector.Listener {
private final Application application; private final Application application;
private final ShakeDetector detector; private final ShakeDetector detector;
private WeakReference<Activity> weakActivity; private WeakReference<AppCompatActivity> weakActivity;
public ShakeToReport(@NonNull Application application) { public ShakeToReport(@NonNull Application application) {
this.application = application; this.application = application;
@ -56,7 +58,7 @@ public final class ShakeToReport implements ShakeDetector.Listener {
detector.stop(); detector.stop();
} }
public void registerActivity(@NonNull Activity activity) { public void registerActivity(@NonNull AppCompatActivity activity) {
if (!SignalStore.internalValues().shakeToReport()) return; if (!SignalStore.internalValues().shakeToReport()) return;
this.weakActivity = new WeakReference<>(activity); this.weakActivity = new WeakReference<>(activity);
@ -66,12 +68,13 @@ public final class ShakeToReport implements ShakeDetector.Listener {
public void onShakeDetected() { public void onShakeDetected() {
if (!SignalStore.internalValues().shakeToReport()) return; if (!SignalStore.internalValues().shakeToReport()) return;
Activity activity = weakActivity.get(); AppCompatActivity activity = weakActivity.get();
if (activity == null) { if (activity == null) {
Log.w(TAG, "No registered activity!"); Log.w(TAG, "No registered activity!");
return; return;
} }
if (activity.getLifecycle().getCurrentState().isAtLeast(Lifecycle.State.RESUMED)) {
disable(); disable();
new MaterialAlertDialogBuilder(activity) new MaterialAlertDialogBuilder(activity)
@ -87,6 +90,7 @@ public final class ShakeToReport implements ShakeDetector.Listener {
}) })
.show(); .show();
} }
}
private void submitLog(@NonNull Activity activity) { private void submitLog(@NonNull Activity activity) {
AlertDialog spinner = SimpleProgressDialog.show(activity); AlertDialog spinner = SimpleProgressDialog.show(activity);