From 966daf3b9ec4e978b35408252a88ef5accbe59b1 Mon Sep 17 00:00:00 2001 From: "David A. Velasco" Date: Fri, 18 Oct 2013 13:24:56 +0200 Subject: [PATCH] Enforced check of local modification date when synchronizing file contents to avoid problems with apps triggering a wrong FileObserver#CLOSE_WRITE event --- src/com/owncloud/android/files/OwnCloudFileObserver.java | 1 - src/com/owncloud/android/operations/SynchronizeFileOperation.java | 5 +---- src/com/owncloud/android/operations/SynchronizeFolderOperation.java | 1 - src/com/owncloud/android/ui/fragment/FileDetailFragment.java | 2 +- src/com/owncloud/android/ui/fragment/OCFileListFragment.java | 2 +- 5 files changed, 3 insertions(+), 8 deletions(-) diff --git a/src/com/owncloud/android/files/OwnCloudFileObserver.java b/src/com/owncloud/android/files/OwnCloudFileObserver.java index 2ea90c9a..5383520e 100644 --- a/src/com/owncloud/android/files/OwnCloudFileObserver.java +++ b/src/com/owncloud/android/files/OwnCloudFileObserver.java @@ -83,7 +83,6 @@ public class OwnCloudFileObserver extends FileObserver { storageManager, mOCAccount, true, - true, mContext); RemoteOperationResult result = sfo.execute(mOCAccount, mContext); if (result.getCode() == ResultCode.SYNC_CONFLICT) { diff --git a/src/com/owncloud/android/operations/SynchronizeFileOperation.java b/src/com/owncloud/android/operations/SynchronizeFileOperation.java index f02241e6..b5f6575a 100644 --- a/src/com/owncloud/android/operations/SynchronizeFileOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFileOperation.java @@ -49,7 +49,6 @@ public class SynchronizeFileOperation extends RemoteOperation { private FileDataStorageManager mStorageManager; private Account mAccount; private boolean mSyncFileContents; - private boolean mLocalChangeAlreadyKnown; private Context mContext; private boolean mTransferWasRequested = false; @@ -60,7 +59,6 @@ public class SynchronizeFileOperation extends RemoteOperation { FileDataStorageManager storageManager, Account account, boolean syncFileContents, - boolean localChangeAlreadyKnown, Context context) { mLocalFile = localFile; @@ -68,7 +66,6 @@ public class SynchronizeFileOperation extends RemoteOperation { mStorageManager = storageManager; mAccount = account; mSyncFileContents = syncFileContents; - mLocalChangeAlreadyKnown = localChangeAlreadyKnown; mContext = context; } @@ -119,7 +116,7 @@ public class SynchronizeFileOperation extends RemoteOperation { // server without etags serverChanged = (mServerFile.getModificationTimestamp() > mLocalFile.getModificationTimestampAtLastSyncForData()); //} - boolean localChanged = (mLocalChangeAlreadyKnown || mLocalFile.getLocalModificationTimestamp() > mLocalFile.getLastSyncDateForData()); + boolean localChanged = (mLocalFile.getLocalModificationTimestamp() > mLocalFile.getLastSyncDateForData()); // TODO this will be always true after the app is upgraded to database version 2; will result in unnecessary uploads /// decide action to perform depending upon changes diff --git a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java index 91047cee..d1dd3c4f 100644 --- a/src/com/owncloud/android/operations/SynchronizeFolderOperation.java +++ b/src/com/owncloud/android/operations/SynchronizeFolderOperation.java @@ -307,7 +307,6 @@ public class SynchronizeFolderOperation extends RemoteOperation { mStorageManager, mAccount, true, - false, mContext ); filesToSyncContents.add(operation); diff --git a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java index 1c076da6..9de098b1 100644 --- a/src/com/owncloud/android/ui/fragment/FileDetailFragment.java +++ b/src/com/owncloud/android/ui/fragment/FileDetailFragment.java @@ -446,7 +446,7 @@ public class FileDetailFragment extends FileFragment implements } } else { - mLastRemoteOperation = new SynchronizeFileOperation(file, null, mStorageManager, mAccount, true, false, getActivity()); + mLastRemoteOperation = new SynchronizeFileOperation(file, null, mStorageManager, mAccount, true, getActivity()); mLastRemoteOperation.execute(mAccount, getSherlockActivity(), this, mHandler, getSherlockActivity()); // update ui diff --git a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java index 06b6464d..2627f93a 100644 --- a/src/com/owncloud/android/ui/fragment/OCFileListFragment.java +++ b/src/com/owncloud/android/ui/fragment/OCFileListFragment.java @@ -315,7 +315,7 @@ public class OCFileListFragment extends ExtendedListFragment implements EditName } case R.id.action_sync_file: { Account account = AccountUtils.getCurrentOwnCloudAccount(getSherlockActivity()); - RemoteOperation operation = new SynchronizeFileOperation(mTargetFile, null, mContainerActivity.getStorageManager(), account, true, false, getSherlockActivity()); + RemoteOperation operation = new SynchronizeFileOperation(mTargetFile, null, mContainerActivity.getStorageManager(), account, true, getSherlockActivity()); operation.execute(account, getSherlockActivity(), mContainerActivity, mHandler, getSherlockActivity()); ((FileDisplayActivity) getSherlockActivity()).showLoadingDialog(); return true; -- 2.11.0