Эх сурвалжийг харах

Fix creation and modification date

Signed-off-by: alperozturk <alper_ozturk@proton.me>
alperozturk 8 сар өмнө
parent
commit
5265782e16

+ 6 - 1
app/src/main/java/com/nextcloud/client/jobs/offlineOperations/OfflineOperationsWorker.kt

@@ -130,11 +130,16 @@ class OfflineOperationsWorker(
             is OfflineOperationType.CreateFile -> {
                 val createFileOperation = withContext(NonCancellable) {
                     val operationType = (operation.type as OfflineOperationType.CreateFile)
+                    val lastModificationDate = System.currentTimeMillis() / 1000
+
                     UploadFileRemoteOperation(
                         operationType.localPath,
                         operationType.remotePath,
                         operationType.mimeType,
-                        System.currentTimeMillis()
+                        "",
+                        lastModificationDate,
+                        operation.createdAt ?: System.currentTimeMillis(),
+                        true
                     )
                 }
 

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

@@ -155,7 +155,11 @@ public class FileDataStorageManager {
             OfflineOperationEntity entity = new OfflineOperationEntity();
             entity.setPath(remotePath);
             entity.setType(new OfflineOperationType.CreateFile(OfflineOperationRawType.CreateFile.name(), localPath, remotePath, mimeType));
-            entity.setCreatedAt(System.currentTimeMillis() / 1000L);
+
+            long createdAt = System.currentTimeMillis();
+            long modificationTimestamp = System.currentTimeMillis();
+
+            entity.setCreatedAt(createdAt);
             entity.setFilename(new File(remotePath).getName());
 
             String parentPath = new File(remotePath).getParent() + OCFile.PATH_SEPARATOR;
@@ -166,7 +170,7 @@ public class FileDataStorageManager {
             }
 
             offlineOperationDao.insert(entity);
-            createPendingFile(remotePath, mimeType);
+            createPendingFile(remotePath, mimeType, createdAt, modificationTimestamp);
         }
     }
 
@@ -179,26 +183,34 @@ public class FileDataStorageManager {
         OfflineOperationType.CreateFolder operationType = new OfflineOperationType.CreateFolder(OfflineOperationRawType.CreateFolder.name(), path);
         entity.setType(operationType);
         entity.setPath(path);
-        entity.setCreatedAt(System.currentTimeMillis() / 1000L);
+
+        long createdAt = System.currentTimeMillis();
+        long modificationTimestamp = System.currentTimeMillis();
+
+        entity.setCreatedAt(createdAt);
 
         offlineOperationDao.insert(entity);
-        createPendingDirectory(path);
+        createPendingDirectory(path, createdAt, modificationTimestamp);
 
         return entity;
     }
 
-    public void createPendingFile(String path, String mimeType) {
-        OCFile ocFile = new OCFile(path);
-        ocFile.setMimeType(mimeType);
-        saveFileWithParent(ocFile, MainApp.getAppContext());
-    }
-
-    public void createPendingDirectory(String path) {
+    public void createPendingFile(String path, String mimeType, long createdAt, long modificationTimestamp) {
         OCFile file = new OCFile(path);
-        file.setMimeType(MimeType.DIRECTORY);
+        file.setMimeType(mimeType);
+        file.setCreationTimestamp(createdAt);
+        file.setModificationTimestamp(modificationTimestamp);
         saveFileWithParent(file, MainApp.getAppContext());
     }
 
+    public void createPendingDirectory(String path, long createdAt, long modificationTimestamp) {
+        OCFile directory = new OCFile(path);
+        directory.setMimeType(MimeType.DIRECTORY);
+        directory.setCreationTimestamp(createdAt);
+        directory.setModificationTimestamp(modificationTimestamp);
+        saveFileWithParent(directory, MainApp.getAppContext());
+    }
+
     public void deleteOfflineOperation(OCFile file) {
         offlineOperationsRepository.deleteOperation(file);
     }

+ 6 - 9
app/src/main/java/com/owncloud/android/ui/adapter/OCFileListAdapter.java

@@ -32,7 +32,6 @@ import android.widget.LinearLayout;
 import com.elyeproj.loaderviewlibrary.LoaderImageView;
 import com.nextcloud.android.common.ui.theme.utils.ColorRole;
 import com.nextcloud.client.account.User;
-import com.nextcloud.client.database.entity.OfflineOperationEntity;
 import com.nextcloud.client.jobs.upload.FileUploadHelper;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.model.OCFileFilterType;
@@ -48,7 +47,6 @@ import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.SyncedFolderProvider;
 import com.owncloud.android.datamodel.ThumbnailsCacheManager;
-import com.owncloud.android.datamodel.UploadsStorageManager;
 import com.owncloud.android.datamodel.VirtualFolderType;
 import com.owncloud.android.datamodel.e2e.v1.decrypted.DecryptedFolderMetadataFileV1;
 import com.owncloud.android.datamodel.e2e.v2.decrypted.DecryptedFolderMetadataFile;
@@ -82,8 +80,6 @@ import java.text.SimpleDateFormat;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.Date;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Objects;
@@ -603,13 +599,14 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
 
             holder.getFileSize().setVisibility(View.VISIBLE);
 
+
             if (file.isOfflineOperation()) {
                 holder.getFileSize().setText(MainApp.string(R.string.oc_file_list_adapter_offline_operation_description_text));
-                holder.getFileSizeSeparator().setVisibility(View.GONE);
             } else {
                 holder.getFileSize().setText(DisplayUtils.bytesToHumanReadable(localSize));
-                holder.getFileSizeSeparator().setVisibility(View.VISIBLE);
             }
+
+            holder.getFileSizeSeparator().setVisibility(View.VISIBLE);
         } else {
             final long fileLength = file.getFileLength();
             if (fileLength >= 0) {
@@ -617,11 +614,11 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
 
                 if (file.isOfflineOperation()) {
                     holder.getFileSize().setText(MainApp.string(R.string.oc_file_list_adapter_offline_operation_description_text));
-                    holder.getFileSizeSeparator().setVisibility(View.GONE);
                 } else {
                     holder.getFileSize().setText(DisplayUtils.bytesToHumanReadable(fileLength));
-                    holder.getFileSizeSeparator().setVisibility(View.VISIBLE);
                 }
+
+                holder.getFileSizeSeparator().setVisibility(View.VISIBLE);
             } else {
                 holder.getFileSize().setVisibility(View.GONE);
                 holder.getFileSizeSeparator().setVisibility(View.GONE);
@@ -807,7 +804,7 @@ public class OCFileListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHol
      * The issue arises when  {@link RefreshFolderOperation} deletes pending Offline Operations, while some may still exist in the table.
      * If only this function is used, it cause crash in {@link FileDisplayActivity mSyncBroadcastReceiver.onReceive}.
      * <p>
-     * These function also need to be used: {@link FileDataStorageManager#createPendingDirectory(String)}, {@link FileDataStorageManager#createPendingFile(String, String)}.
+     * These function also need to be used: {@link FileDataStorageManager#createPendingDirectory(String, long, long)}, {@link FileDataStorageManager#createPendingFile(String, String, long, long)}.
      */
     private void addOfflineOperations(long fileId) {
         List<OCFile> offlineOperations = mStorageManager.offlineOperationsRepository.convertToOCFiles(fileId);