Skip to content

Commit 299f448

Browse files
alperozturk96backportbot[bot]
authored andcommitted
fix etag saving logic
Signed-off-by: alperozturk <[email protected]>
1 parent 153cca5 commit 299f448

File tree

2 files changed

+11
-14
lines changed

2 files changed

+11
-14
lines changed

app/src/main/java/com/owncloud/android/datamodel/FileDataStorageManager.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@
5151
import com.owncloud.android.MainApp;
5252
import com.owncloud.android.db.ProviderMeta.ProviderTableMeta;
5353
import com.owncloud.android.lib.common.network.WebdavEntry;
54-
import com.owncloud.android.lib.common.operations.RemoteOperationResult;
5554
import com.owncloud.android.lib.common.utils.Log_OC;
5655
import com.owncloud.android.lib.resources.files.ReadFileRemoteOperation;
5756
import com.owncloud.android.lib.resources.files.model.FileLockType;
@@ -497,9 +496,13 @@ public List<OCFile> getFolderImages(OCFile folder, boolean onlyOnDevice) {
497496
}
498497

499498
public boolean saveFile(OCFile ocFile) {
499+
Log_OC.d(TAG, "saving file: " + ocFile.getRemotePath() + " etag: " + ocFile.getEtag());
500+
500501
boolean overridden = false;
501502
final ContentValues cv = createContentValuesForFile(ocFile);
502503
if (ocFile.isFolder()) {
504+
// only refresh folder operation must update eTag otherwise content of the folder may stay as outdated
505+
cv.remove(ProviderTableMeta.FILE_ETAG);
503506
cv.remove(ProviderTableMeta.FILE_STORAGE_PATH);
504507
}
505508

app/src/main/java/com/owncloud/android/operations/RefreshFolderOperation.java

Lines changed: 7 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,6 @@ protected RemoteOperationResult run(OwnCloudClient client) {
267267
updateUserProfile();
268268
}
269269

270-
// check first parent dirs are saved
271-
fileDataStorageManager.saveFileWithParent(mLocalFolder, mContext);
272-
273270
result = checkForChanges(client);
274271

275272
if (result.isSuccess()) {
@@ -403,11 +400,6 @@ private void updatePredefinedStatus(ArbitraryDataProvider arbitraryDataProvider)
403400

404401
private RemoteOperationResult checkForChanges(OwnCloudClient client) {
405402
mRemoteFolderChanged = true;
406-
if (isMetadataSyncWorkerRunning) {
407-
Log_OC.d(TAG, "Skipping eTag check since metadata worker already did");
408-
return new RemoteOperationResult<>(ResultCode.OK);
409-
}
410-
411403
RemoteOperationResult<?> result;
412404
String remotePath = mLocalFolder.getRemotePath();
413405

@@ -417,16 +409,18 @@ private RemoteOperationResult checkForChanges(OwnCloudClient client) {
417409
result = new ReadFileRemoteOperation(remotePath).execute(client);
418410

419411
if (result.isSuccess()) {
420-
if (!mIgnoreETag && result.getData().get(0) instanceof RemoteFile remoteFile) {
412+
OCFile remoteFolder = FileStorageUtils.fillOCFile((RemoteFile) result.getData().get(0));
413+
414+
if (!mIgnoreETag) {
421415
// check if remote and local folder are different
422-
String remoteFolderETag = remoteFile.getEtag();
416+
String remoteFolderETag = remoteFolder.getEtag();
423417
if (remoteFolderETag != null) {
424418
String localFolderEtag = mLocalFolder.getEtag();
425419
mRemoteFolderChanged = StringExtensionsKt.eTagChanged(remoteFolderETag, localFolderEtag);
426420
Log_OC.d(
427421
TAG,
428422
"📂 eTag check\n" +
429-
" Path: " + remoteFile.getRemotePath() + "\n" +
423+
" Path: " + remoteFolder.getRemotePath() + "\n" +
430424
" Local eTag: " + localFolderEtag + "\n" +
431425
" Remote eTag: " + remoteFolderETag + "\n" +
432426
" Changed: " + mRemoteFolderChanged
@@ -505,7 +499,7 @@ private void synchronizeData(List<Object> folderAndFiles) {
505499
mLocalFolder = fileDataStorageManager.getFileByPath(mLocalFolder.getRemotePath());
506500

507501
if (mLocalFolder == null) {
508-
Log_OC.d(TAG,"mLocalFolder cannot be null");
502+
Log_OC.e(TAG,"mLocalFolder cannot be null");
509503
return;
510504
}
511505

@@ -514,7 +508,7 @@ private void synchronizeData(List<Object> folderAndFiles) {
514508
remoteFolder.setParentId(mLocalFolder.getParentId());
515509
remoteFolder.setFileId(mLocalFolder.getFileId());
516510

517-
Log_OC.d(TAG, "Remote folder " + mLocalFolder.getRemotePath() + " changed - starting update of local data ");
511+
Log_OC.d(TAG, "Remote folder path: " + mLocalFolder.getRemotePath() + " changed - starting update of local data ");
518512

519513
List<OCFile> updatedFiles = new ArrayList<>(folderAndFiles.size() - 1);
520514
mFilesToSyncContents.clear();

0 commit comments

Comments
 (0)