Some improvements to tag order syncing, better timing to ensure most accurate data pushed

pull/14/head
Sam Bosley 13 years ago
parent 5c39dc55d3
commit dc2c37edaf

@ -600,8 +600,16 @@ public final class ActFmSyncService {
public void pushTagOrderingImmediately(TagData tagData) { public void pushTagOrderingImmediately(TagData tagData) {
if (tagOrderQueue.contains(tagData.getId())) { if (tagOrderQueue.contains(tagData.getId())) {
tagOrderQueue.remove(tagData.getId()); tagOrderQueue.remove(tagData.getId());
}
pushTagOrdering(tagData); pushTagOrdering(tagData);
} }
public boolean cancelTagOrderingPush(long tagDataId) {
if (tagOrderQueue.contains(tagDataId)) {
tagOrderQueue.remove(tagDataId);
return true;
}
return false;
} }
private void pushTagOrdering(TagData tagData) { private void pushTagOrdering(TagData tagData) {

@ -452,8 +452,8 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
if(!noRemoteId) { if(!noRemoteId) {
actFmSyncService.waitUntilEmpty(); actFmSyncService.waitUntilEmpty();
actFmSyncService.pushTagOrderingImmediately(tagData); boolean orderPushQueued = actFmSyncService.cancelTagOrderingPush(tagData.getId());
fetchTasksForTag(tagData, manual, callback, finisher); fetchTasksForTag(tagData, manual, orderPushQueued, callback, finisher);
fetchUpdatesForTag(tagData, manual, callback, finisher); fetchUpdatesForTag(tagData, manual, callback, finisher);
} }
@ -494,7 +494,7 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
actFmSyncService.fetchTag(tagData); actFmSyncService.fetchTag(tagData);
if(noRemoteId) { if(noRemoteId) {
fetchTasksForTag(tagData, manual, callback, finisher); fetchTasksForTag(tagData, manual, true, callback, finisher);
fetchUpdatesForTag(tagData, manual, callback, finisher); fetchUpdatesForTag(tagData, manual, callback, finisher);
} }
@ -527,13 +527,16 @@ public class ActFmSyncV2Provider extends SyncV2Provider {
}); });
} }
private void fetchTasksForTag(final TagData tagData, boolean manual, final SyncResultCallback callback, private void fetchTasksForTag(final TagData tagData, boolean manual, final boolean pushOrder, final SyncResultCallback callback,
final AtomicInteger finisher) { final AtomicInteger finisher) {
actFmSyncService.fetchTasksForTag(tagData, manual, new Runnable() { actFmSyncService.fetchTasksForTag(tagData, manual, new Runnable() {
@Override @Override
public void run() { public void run() {
pushQueuedTasksByTag(tagData, callback, finisher); pushQueuedTasksByTag(tagData, callback, finisher);
if (pushOrder)
actFmSyncService.pushTagOrderingImmediately(tagData);
else
actFmSyncService.fetchTagOrder(tagData); actFmSyncService.fetchTagOrder(tagData);
callback.incrementProgress(30); callback.incrementProgress(30);

Loading…
Cancel
Save