Bläddra i källkod

Add offlineOperations to the adapter

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 10 månader sedan
förälder
incheckning
21333d16a0

+ 13 - 0
app/src/main/java/com/nextcloud/client/jobs/offlineOperations/repository/OfflineOperationsRepository.kt

@@ -11,6 +11,8 @@ import com.nextcloud.client.database.entity.OfflineOperationEntity
 import com.nextcloud.model.OfflineOperationType
 import com.nextcloud.model.OfflineOperationType
 import com.owncloud.android.datamodel.FileDataStorageManager
 import com.owncloud.android.datamodel.FileDataStorageManager
 import com.owncloud.android.datamodel.OCFile
 import com.owncloud.android.datamodel.OCFile
+import com.owncloud.android.utils.MimeType
+import com.owncloud.android.utils.MimeTypeUtil
 
 
 class OfflineOperationsRepository(
 class OfflineOperationsRepository(
     private val fileDataStorageManager: FileDataStorageManager
     private val fileDataStorageManager: FileDataStorageManager
@@ -94,4 +96,15 @@ class OfflineOperationsRepository(
             }
             }
             .forEach { dao.update(it) }
             .forEach { dao.update(it) }
     }
     }
+
+    override fun convertToOCFiles(): List<OCFile> =
+        dao.getAll().map { entity ->
+            OCFile(entity.path).apply {
+                mimeType = if (entity.type is OfflineOperationType.CreateFolder) {
+                    MimeType.DIRECTORY
+                } else {
+                    MimeTypeUtil.getMimeTypeFromPath(entity.path)
+                }
+            }
+        }
 }
 }

+ 1 - 0
app/src/main/java/com/nextcloud/client/jobs/offlineOperations/repository/OfflineOperationsRepositoryType.kt

@@ -14,4 +14,5 @@ interface OfflineOperationsRepositoryType {
     fun getAllSubEntities(fileId: Long): List<OfflineOperationEntity>
     fun getAllSubEntities(fileId: Long): List<OfflineOperationEntity>
     fun deleteOperation(file: OCFile)
     fun deleteOperation(file: OCFile)
     fun updateNextOperations(operation: OfflineOperationEntity)
     fun updateNextOperations(operation: OfflineOperationEntity)
+    fun convertToOCFiles(): List<OCFile>
 }
 }

+ 1 - 1
app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

@@ -108,7 +108,7 @@ public class FileDataStorageManager {
     public final OfflineOperationDao offlineOperationDao = NextcloudDatabase.getInstance(MainApp.getAppContext()).offlineOperationDao();
     public final OfflineOperationDao offlineOperationDao = NextcloudDatabase.getInstance(MainApp.getAppContext()).offlineOperationDao();
     private final FileDao fileDao = NextcloudDatabase.getInstance(MainApp.getAppContext()).fileDao();
     private final FileDao fileDao = NextcloudDatabase.getInstance(MainApp.getAppContext()).fileDao();
     private final Gson gson = new Gson();
     private final Gson gson = new Gson();
-    private final OfflineOperationsRepositoryType offlineOperationsRepository;
+    public final OfflineOperationsRepositoryType offlineOperationsRepository;
 
 
     public FileDataStorageManager(User user, ContentResolver contentResolver) {
     public FileDataStorageManager(User user, ContentResolver contentResolver) {
         this.contentProviderClient = null;
         this.contentProviderClient = null;

+ 8 - 0
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -783,6 +783,14 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
             mergeOCFilesForLivePhoto();
             mergeOCFilesForLivePhoto();
             mFilesAll.clear();
             mFilesAll.clear();
             mFilesAll.addAll(mFiles);
             mFilesAll.addAll(mFiles);
+
+            List<OCFile> offlineOperations = mStorageManager.offlineOperationsRepository.convertToOCFiles();
+            for (OCFile offlineFile : offlineOperations) {
+                if (!mFilesAll.contains(offlineFile)) {
+                    mFilesAll.add(offlineFile);
+                }
+            }
+
             currentDirectory = directory;
             currentDirectory = directory;
         } else {
         } else {
             mFiles.clear();
             mFiles.clear();