package com.owncloud.android.files.services;
+import java.io.File;
import java.util.ArrayList;
import java.util.List;
observer = mObservers.get(i);
if (observer.getPath().equals(path))
duplicate = true;
- observer.setContext(getBaseContext());
+ observer.setContext(getApplicationContext());
}
if (duplicate) return;
observer = new OwnCloudFileObserver(path, OwnCloudFileObserver.CHANGES_ONLY);
- observer.setContext(getBaseContext());
- Account account = AccountUtils.getCurrentOwnCloudAccount(getBaseContext());
+ observer.setContext(getApplicationContext());
+ Account account = AccountUtils.getCurrentOwnCloudAccount(getApplicationContext());
observer.setAccount(account);
FileDataStorageManager storage =
new FileDataStorageManager(account, getContentResolver());
observer.setStorageManager(storage);
- observer.setOCFile(storage.getFileByLocalPath(path));
+ observer.setOCFile(storage.getFileByLocalPath(path)); // ISSUE 10 - the fix in FileDetailsFragment to avoid path == null was not enough; it the file was never down before, this sets a NULL OCFile in the observer
observer.addObserverStatusListener(this);
DownloadCompletedReceiver receiver = new DownloadCompletedReceiver(path, observer);
@Override
public void onReceive(Context context, Intent intent) {
- if (mPath.equals(intent.getStringExtra(FileDownloader.EXTRA_FILE_PATH))) { // ISSUE 3: this condition will be false if the download failed; in that case, the download won't ever be retried
- context.unregisterReceiver(this);
- removeReceiverFromList(this);
- mObserver.startWatching();
- Log.d(TAG, "Started watching " + mPath);
- return;
+ if (mPath.equals(intent.getStringExtra(FileDownloader.EXTRA_FILE_PATH))) {
+ if ((new File(mPath)).exists()) {
+ // the download could be successful, or not; in both cases, the file could be down, due to a former download or upload
+ context.unregisterReceiver(this);
+ removeReceiverFromList(this);
+ mObserver.startWatching();
+ Log.d(TAG, "Started watching " + mPath);
+ return;
+ } // else - keep waiting for a future retry of the download ;
+ // mObserver.startWatching() won't ever work if the file is not in the device when it's called
}
}