Browse Source

Fixed. When an image is updated in the server and app folder is refreshed, the thumbnail does not change and it is not updated

jabarros 10 years ago
parent
commit
639d122721

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

@@ -300,6 +300,7 @@ public class FileDataStorageManager {
             cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
             cv.put(ProviderTableMeta.FILE_PUBLIC_LINK, file.getPublicLink());
             cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
             cv.put(ProviderTableMeta.FILE_PERMISSIONS, file.getPermissions());
             cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
             cv.put(ProviderTableMeta.FILE_REMOTE_ID, file.getRemoteId());
+            cv.put(ProviderTableMeta.FILE_UPDATE_THUMBNAIL, file.needsUpdateThumbnail());
 
 
             boolean existsByPath = fileExists(file.getRemotePath());
             boolean existsByPath = fileExists(file.getRemotePath());
             if (existsByPath || fileExists(file.getFileId())) {
             if (existsByPath || fileExists(file.getFileId())) {

+ 13 - 1
src/com/owncloud/android/operations/SynchronizeFolderOperation.java

@@ -33,6 +33,7 @@ import org.apache.http.HttpStatus;
 import android.accounts.Account;
 import android.accounts.Account;
 import android.content.Context;
 import android.content.Context;
 import android.content.Intent;
 import android.content.Intent;
+import android.util.Log;
 //import android.support.v4.content.LocalBroadcastManager;
 //import android.support.v4.content.LocalBroadcastManager;
 
 
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.FileDataStorageManager;
@@ -323,9 +324,11 @@ public class SynchronizeFolderOperation extends RemoteOperation {
      *  @return                 'True' when any change was made in the local data, 'false' otherwise
      *  @return                 'True' when any change was made in the local data, 'false' otherwise
      */
      */
     private void synchronizeData(ArrayList<Object> folderAndFiles, OwnCloudClient client) {
     private void synchronizeData(ArrayList<Object> folderAndFiles, OwnCloudClient client) {
+        Vector<OCFile> mImageFiles = mStorageManager.getFolderImages(mLocalFolder);
+
         // get 'fresh data' from the database
         // get 'fresh data' from the database
         mLocalFolder = mStorageManager.getFileByPath(mLocalFolder.getRemotePath());
         mLocalFolder = mStorageManager.getFileByPath(mLocalFolder.getRemotePath());
-        
+
         // parse data from remote folder 
         // parse data from remote folder 
         OCFile remoteFolder = fillOCFile((RemoteFile)folderAndFiles.get(0));
         OCFile remoteFolder = fillOCFile((RemoteFile)folderAndFiles.get(0));
         remoteFolder.setParentId(mLocalFolder.getParentId());
         remoteFolder.setParentId(mLocalFolder.getParentId());
@@ -372,6 +375,15 @@ public class SynchronizeFolderOperation extends RemoteOperation {
                 if (remoteFile.isFolder()) {
                 if (remoteFile.isFolder()) {
                     remoteFile.setFileLength(localFile.getFileLength()); 
                     remoteFile.setFileLength(localFile.getFileLength()); 
                         // TODO move operations about size of folders to FileContentProvider
                         // TODO move operations about size of folders to FileContentProvider
+                } else if (mRemoteFolderChanged && remoteFile.isImage()) {
+                    // If image has been updated on the server, set for updating the thumbnail
+                    for (OCFile fileImage: mImageFiles) {
+                        if (remoteFile.getRemoteId().equals(fileImage.getRemoteId()) &&
+                                remoteFile.getModificationTimestamp() > fileImage.getModificationTimestamp()) {
+                            remoteFile.setNeedsUpdateThumbnail(true);
+                            Log.d(TAG, "Image " + remoteFile.getFileName() + " updated on the server");
+                        }
+                    }
                 }
                 }
                 remoteFile.setPublicLink(localFile.getPublicLink());
                 remoteFile.setPublicLink(localFile.getPublicLink());
                 remoteFile.setShareByLink(localFile.isShareByLink());
                 remoteFile.setShareByLink(localFile.isShareByLink());