Ver código fonte

Faster currentDir refresh

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 11 meses atrás
pai
commit
f0179d86f8

+ 6 - 1
app/src/main/java/com/nextcloud/utils/extensions/ActivityExtensions.kt

@@ -7,9 +7,14 @@
 
 package com.nextcloud.utils.extensions
 
+import android.app.Activity
 import androidx.appcompat.app.AppCompatActivity
 import androidx.fragment.app.Fragment
 
-fun AppCompatActivity.isDialogFragmentReady(fragment: Fragment): Boolean = isActive() && !fragment.isStateSaved()
+fun AppCompatActivity.isDialogFragmentReady(fragment: Fragment): Boolean = isActive() && !fragment.isStateSaved
 
 fun AppCompatActivity.isActive(): Boolean = !isFinishing && !isDestroyed
+
+fun AppCompatActivity.fragments(): List<Fragment> = supportFragmentManager.fragments
+
+fun AppCompatActivity.lastFragment(): Fragment = fragments().last()

+ 6 - 5
app/src/main/java/com/owncloud/android/ui/activity/FileDisplayActivity.java

@@ -1603,15 +1603,16 @@ public class FileDisplayActivity extends FileActivity
             } else if (state instanceof WorkerState.UploadFinished) {
                 refreshList();
             } else if (state instanceof  WorkerState.OfflineOperationsCompleted) {
-                refreshFolderWithDelay();
+                refreshCurrentDirectory();
             }
         });
     }
 
-    public void refreshFolderWithDelay() {
-        OCFileListFragment fileListFragment = getListOfFilesFragment();
-        if (fileListFragment != null) {
-            new Handler(Looper.getMainLooper()).postDelayed(fileListFragment::onRefresh, 1500);
+    public void refreshCurrentDirectory() {
+        Fragment lastFragment = ActivityExtensionsKt.lastFragment(this);
+        if (lastFragment instanceof OCFileListFragment fragment) {
+            OCFile currentDir = (getCurrentDir() == null) ? null : getStorageManager().getFileByDecryptedRemotePath(getCurrentDir().getRemotePath());
+            fragment.listDirectory(currentDir,false, false);
         }
     }
 

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt

@@ -97,7 +97,7 @@ class RemoveFilesDialogFragment : ConfirmationDialogFragment(), ConfirmationDial
 
         if (offlineFiles.isNotEmpty()) {
             val activity = requireActivity() as? FileDisplayActivity
-            activity?.refreshFolderWithDelay()
+            activity?.refreshCurrentDirectory()
         }
 
         finishActionMode()

+ 1 - 1
app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.kt

@@ -149,7 +149,7 @@ class RenameFileDialogFragment : DialogFragment(), DialogInterface.OnClickListen
                 fileDataStorageManager.renameCreateFolderOfflineOperation(mTargetFile, newFileName)
                 if (requireActivity() is FileDisplayActivity) {
                     val activity = requireActivity() as FileDisplayActivity
-                    activity.refreshFolderWithDelay()
+                    activity.refreshCurrentDirectory()
                 }
             } else {
                 (requireActivity() as ComponentsGetter).fileOperationsHelper.renameFile(mTargetFile, newFileName)