Fixed bugs with syncing task attachments

pull/14/head
Sam Bosley 14 years ago
parent 598384480f
commit 6867c26978

@ -709,6 +709,9 @@ public final class ActFmSyncService {
if (attachmentId <= 0) if (attachmentId <= 0)
return; return;
if (!checkForToken())
return;
ArrayList<Object> params = new ArrayList<Object>(); ArrayList<Object> params = new ArrayList<Object>();
params.add("id"); params.add(attachmentId); params.add("id"); params.add(attachmentId);
params.add("token"); params.add(token); params.add("token"); params.add(token);
@ -809,6 +812,7 @@ public final class ActFmSyncService {
task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true); task.putTransitory(SyncFlags.ACTFM_SUPPRESS_SYNC, true);
taskService.save(task); taskService.save(task);
metadataService.synchronizeMetadata(task.getId(), metadata, Metadata.KEY.eq(TagService.KEY)); metadataService.synchronizeMetadata(task.getId(), metadata, Metadata.KEY.eq(TagService.KEY));
synchronizeAttachments(result, task);
} }
/** /**
@ -1243,6 +1247,7 @@ public final class ActFmSyncService {
protected Class<Task> typeClass() { protected Class<Task> typeClass() {
return Task.class; return Task.class;
} }
}
private void synchronizeAttachments(JSONObject item, Task model) { private void synchronizeAttachments(JSONObject item, Task model) {
TodorooCursor<Metadata> attachments = metadataService.query(Query.select(Metadata.PROPERTIES) TodorooCursor<Metadata> attachments = metadataService.query(Query.select(Metadata.PROPERTIES)
@ -1282,10 +1287,16 @@ public final class ActFmSyncService {
Set<Long> attachmentsToDelete = currentFiles.keySet(); Set<Long> attachmentsToDelete = currentFiles.keySet();
for (Long remoteId : attachmentsToDelete) { for (Long remoteId : attachmentsToDelete) {
Metadata toDelete = currentFiles.get(remoteId); Metadata toDelete = currentFiles.get(remoteId);
String path = toDelete.getValue(FileMetadata.FILE_PATH);
if (TextUtils.isEmpty(path))
metadataService.delete(toDelete);
else {
File f = new File(toDelete.getValue(FileMetadata.FILE_PATH)); File f = new File(toDelete.getValue(FileMetadata.FILE_PATH));
if (f.delete()) { if (!f.exists() || f.delete()) {
metadataService.delete(toDelete); metadataService.delete(toDelete);
} }
}
} }
} catch (JSONException e) { } catch (JSONException e) {
@ -1295,8 +1306,6 @@ public final class ActFmSyncService {
} }
} }
}
/** Call sync method */ /** Call sync method */
private void invokeFetchList(final String model, final boolean manual, final SyncExceptionHandler handler, private void invokeFetchList(final String model, final boolean manual, final SyncExceptionHandler handler,
final ListItemProcessor<?> processor, final Runnable done, final String lastSyncKey, final ListItemProcessor<?> processor, final Runnable done, final String lastSyncKey,

Loading…
Cancel
Save