Przeglądaj źródła

Fix crashes

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 1 rok temu
rodzic
commit
b493c6793e

+ 17 - 0
app/src/main/java/com/nextcloud/utils/extensions/Extensions.kt

@@ -22,6 +22,7 @@
 
 package com.nextcloud.utils.extensions
 
+import android.os.SystemClock
 import android.text.Selection
 import android.text.Spannable
 import android.text.SpannableString
@@ -35,6 +36,22 @@ import java.text.SimpleDateFormat
 import java.util.Date
 import java.util.Locale
 
+fun clickWithDebounce(view: View, debounceTime: Long = 600L, action: () -> Unit) {
+    view.setOnClickListener(object : View.OnClickListener {
+        private var lastClickTime: Long = 0
+
+        override fun onClick(v: View) {
+            if (SystemClock.elapsedRealtime() - lastClickTime < debounceTime) {
+                return
+            } else {
+                action()
+            }
+
+            lastClickTime = SystemClock.elapsedRealtime()
+        }
+    })
+}
+
 fun TextView.makeLinks(vararg links: Pair<String, View.OnClickListener>) {
     val spannableString = SpannableString(this.text)
     var startIndexOfLink = -1

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageActivity.java

@@ -223,7 +223,7 @@ public class PreviewImageActivity extends FileActivity implements
             }
             return true;
         } else {
-            return onOptionsItemSelected(item);
+            return super.onOptionsItemSelected(item);
         }
     }
 

+ 5 - 2
app/src/main/java/com/owncloud/android/ui/preview/PreviewImageFragment.java

@@ -54,6 +54,7 @@ import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.jobs.BackgroundJobManager;
 import com.nextcloud.client.network.ConnectivityService;
 import com.nextcloud.ui.fileactions.FileActionsBottomSheet;
+import com.nextcloud.utils.extensions.ExtensionsKt;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.PreviewImageFragmentBinding;
@@ -115,7 +116,6 @@ public class PreviewImageFragment extends FileFragment implements Injectable {
     private static final String MIME_TYPE_SVG = "image/svg+xml";
 
     private Boolean showResizedImage;
-
     private Bitmap bitmap;
 
     private static final String TAG = PreviewImageFragment.class.getSimpleName();
@@ -210,7 +210,10 @@ public class PreviewImageFragment extends FileFragment implements Injectable {
             OCFile videoOfLivePhoto = getFile().videoOfLivePhoto;
 
             binding.livePhotoIndicator.setVisibility(View.VISIBLE);
-            binding.livePhotoIndicator.setOnClickListener(v -> playLivePhoto(videoOfLivePhoto));
+            ExtensionsKt.clickWithDebounce(binding.livePhotoIndicator, 4000L, () -> {
+                playLivePhoto(videoOfLivePhoto);
+                return null;
+            });
         }
     }
 

+ 2 - 1
app/src/main/java/com/owncloud/android/ui/preview/PreviewMediaFragment.java

@@ -38,6 +38,7 @@ import android.net.Uri;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.Looper;
 import android.view.LayoutInflater;
 import android.view.Menu;
 import android.view.MenuInflater;
@@ -360,7 +361,7 @@ public class PreviewMediaFragment extends FileFragment implements OnTouchListene
                 if (exoPlayer != null) {
                     playVideo();
                 } else {
-                    final Handler handler = new Handler();
+                    final Handler handler = new Handler(Looper.getMainLooper());
                     Executors.newSingleThreadExecutor().execute(() -> {
                         try {
                             nextcloudClient = clientFactory.createNextcloudClient(accountManager.getUser());