mirror of
https://github.com/nextcloud/android.git
synced 2024-11-27 17:46:37 +03:00
Testing observance on parent folders to deal with apps that replace a favorite file (delete it) when updating it
This commit is contained in:
parent
014096ab2d
commit
6647790620
1 changed files with 36 additions and 35 deletions
|
@ -69,7 +69,7 @@ public class FileObserverService extends Service {
|
|||
private static String TAG = FileObserverService.class.getSimpleName();
|
||||
|
||||
private static Map<String, OwnCloudFileObserver> mObserversMap;
|
||||
//private static Map<String, OwnCloudFileObserver> mObserverParentsMap;
|
||||
private static Map<String, OwnCloudFileObserver> mObserverParentsMap;
|
||||
private static DownloadCompletedReceiver mDownloadReceiver;
|
||||
|
||||
|
||||
|
@ -125,7 +125,7 @@ public class FileObserverService extends Service {
|
|||
registerReceiver(mDownloadReceiver, filter);
|
||||
|
||||
mObserversMap = new HashMap<String, OwnCloudFileObserver>();
|
||||
//mObserverParentsMap = new HashMap<String, OwnCloudFileObserver>();
|
||||
mObserverParentsMap = new HashMap<String, OwnCloudFileObserver>();
|
||||
}
|
||||
|
||||
|
||||
|
@ -142,7 +142,12 @@ public class FileObserverService extends Service {
|
|||
mObserversMap.clear();
|
||||
mObserversMap = null;
|
||||
|
||||
//mObserverParentsMap = null;
|
||||
it = mObserverParentsMap.values().iterator();
|
||||
while (it.hasNext()) {
|
||||
it.next().stopWatching();
|
||||
}
|
||||
mObserverParentsMap.clear();
|
||||
mObserverParentsMap = null;
|
||||
|
||||
super.onDestroy();
|
||||
}
|
||||
|
@ -243,21 +248,18 @@ public class FileObserverService extends Service {
|
|||
}
|
||||
}
|
||||
|
||||
/*
|
||||
String parentPath = (new File(localPath)).getParent();
|
||||
OwnCloudFileObserver observerParent =
|
||||
new OwnCloudFileObserver( parentPath,
|
||||
account,
|
||||
getApplicationContext());
|
||||
mObserverParentsMap.put(parentPath, observer);
|
||||
|
||||
if (new File(localPath).exists()) {
|
||||
observer.startWatching();
|
||||
Log_OC.d(TAG, "Started watching file " + localPath);
|
||||
observerParent.startWatching();
|
||||
Log_OC.d(TAG, "Started watching parent file " + parentPath);
|
||||
OwnCloudFileObserver observerParent = mObserverParentsMap.get(parentPath);
|
||||
if (observerParent == null) {
|
||||
observerParent = new OwnCloudFileObserver(
|
||||
parentPath, account, getApplicationContext()
|
||||
);
|
||||
mObserverParentsMap.put(parentPath, observer);
|
||||
if (new File(parentPath).exists()) {
|
||||
observerParent.startWatching();
|
||||
Log_OC.d(TAG, "Started watching parent folder " + parentPath);
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
} while (cursorOnKeptInSync.moveToNext());
|
||||
|
||||
|
@ -299,32 +301,35 @@ public class FileObserverService extends Service {
|
|||
OwnCloudFileObserver observer = mObserversMap.get(localPath);
|
||||
if (observer == null) {
|
||||
/// the local file was never registered to observe before
|
||||
observer = new OwnCloudFileObserver( localPath,
|
||||
account,
|
||||
getApplicationContext(),
|
||||
mHandler);
|
||||
observer = new OwnCloudFileObserver(
|
||||
localPath, account, getApplicationContext()
|
||||
);
|
||||
mObserversMap.put(localPath, observer);
|
||||
Log_OC.d(TAG, "Observer added for path " + localPath);
|
||||
|
||||
/*
|
||||
String parentPath = (new File(localPath)).getParent();
|
||||
OwnCloudFileObserver observerParent =
|
||||
new OwnCloudFileObserver( parentPath,
|
||||
account,
|
||||
getApplicationContext());
|
||||
mObserverParentsMap.put(parentPath, observer);
|
||||
*/
|
||||
|
||||
if (file.isDown()) {
|
||||
observer.startWatching();
|
||||
Log_OC.d(TAG, "Started watching " + localPath);
|
||||
/*observerParent.startWatching();
|
||||
Log_OC.d(TAG, "Started watching parent file " + parentPath);*/
|
||||
}
|
||||
// else - the observance can't be started on a file not already down;
|
||||
// mDownloadReceiver will get noticed when the download of the file finishes
|
||||
}
|
||||
|
||||
String parentPath = (new File(localPath)).getParent();
|
||||
OwnCloudFileObserver observerParent = mObserverParentsMap.get(parentPath);
|
||||
if (observerParent == null) {
|
||||
observerParent = new OwnCloudFileObserver(
|
||||
parentPath, account, getApplicationContext()
|
||||
);
|
||||
mObserverParentsMap.put(parentPath, observerParent);
|
||||
Log_OC.d(TAG, "Observer added for parent folder " + localPath);
|
||||
|
||||
if (file.isDown()) {
|
||||
observerParent.startWatching();
|
||||
Log_OC.d(TAG, "Started watching parent folder " + parentPath);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
@ -381,16 +386,12 @@ public class FileObserverService extends Service {
|
|||
String downloadPath = intent.getStringExtra(FileDownloader.EXTRA_FILE_PATH);
|
||||
OwnCloudFileObserver observer = mObserversMap.get(downloadPath);
|
||||
if (observer != null) {
|
||||
/*String parentPath = (new File(downloadPath)).getParent();
|
||||
OwnCloudFileObserver observerParent = mObserverParentsMap.get(parentPath); */
|
||||
if (intent.getAction().equals(FileDownloader.getDownloadFinishMessage()) &&
|
||||
new File(downloadPath).exists()) {
|
||||
// no matter is the download was be successful or not; the file could be down,
|
||||
// anyway due to a former download or upload
|
||||
observer.startWatching();
|
||||
Log_OC.d(TAG, "Resuming observance of " + downloadPath);
|
||||
/*observerParent.startWatching();
|
||||
Log_OC.d(TAG, "Watching parent again " + parentPath); */
|
||||
|
||||
} else if (intent.getAction().equals(FileDownloader.getDownloadAddedMessage())) {
|
||||
observer.stopWatching();
|
||||
|
|
Loading…
Reference in a new issue