Workaround for a google bug that could give us invalid list ids. could this be the cause of all the 400 errors?

pull/14/head
Sam Bosley 14 years ago
parent 4cd6321fa3
commit bdd28776c4

@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.timsu.astrid" package="com.timsu.astrid"
android:versionName="3.9-rc3" android:versionName="3.9-rc4"
android:versionCode="201"> android:versionCode="201">
<!-- widgets, alarms, and services will break if Astrid is installed on SD card --> <!-- widgets, alarms, and services will break if Astrid is installed on SD card -->

@ -4,7 +4,6 @@ import java.util.Date;
import java.util.TimeZone; import java.util.TimeZone;
import com.google.api.client.util.DateTime; import com.google.api.client.util.DateTime;
import com.google.api.services.tasks.model.Task;
@SuppressWarnings("nls") @SuppressWarnings("nls")
public class GtasksApiUtilities { public class GtasksApiUtilities {
@ -78,10 +77,4 @@ public class GtasksApiUtilities {
// return gtasksDueTime.getValue(); // return gtasksDueTime.getValue();
// } // }
public static String extractListIdFromSelfLink(Task task) {
String selfLink = task.getSelfLink();
String [] urlComponents = selfLink.split("/");
int listIdIndex = urlComponents.length - 3;
return urlComponents[listIdIndex];
}
} }

@ -190,7 +190,7 @@ public class GtasksService {
handleException(e); handleException(e);
toReturn = service.tasks.get(listId, taskId).execute(); toReturn = service.tasks.get(listId, taskId).execute();
} finally { } finally {
log("Get gtask, id: " + taskId, toReturn); log("Get gtask, id: " + taskId + ", list id: " + listId, toReturn);
} }
return toReturn; return toReturn;
} }

@ -344,7 +344,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
if(Constants.DEBUG) if(Constants.DEBUG)
Log.e("gtasks-debug", "ACTION: getTasks, " + listId); Log.e("gtasks-debug", "ACTION: getTasks, " + listId);
List<com.google.api.services.tasks.model.Task> remoteTasks = taskService.getAllGtasksFromListId(listId, includeDeleted, includeHidden).getItems(); List<com.google.api.services.tasks.model.Task> remoteTasks = taskService.getAllGtasksFromListId(listId, includeDeleted, includeHidden).getItems();
addRemoteTasksToList(remoteTasks, list); addRemoteTasksToList(remoteTasks, listId, list);
} catch (Exception e) { } catch (Exception e) {
handleException("read-remotes", e, false); handleException("read-remotes", e, false);
} finally { } finally {
@ -362,8 +362,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
return list; return list;
} }
private void addRemoteTasksToList(List<com.google.api.services.tasks.model.Task> remoteTasks, private void addRemoteTasksToList(List<com.google.api.services.tasks.model.Task> remoteTasks, String listId, ArrayList<GtasksTaskContainer> list) {
ArrayList<GtasksTaskContainer> list) {
if (remoteTasks != null) { if (remoteTasks != null) {
long order = 0; long order = 0;
@ -382,7 +381,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
if(TextUtils.isEmpty(remoteTask.getTitle())) if(TextUtils.isEmpty(remoteTask.getTitle()))
continue; continue;
GtasksTaskContainer container = parseRemoteTask(remoteTask); GtasksTaskContainer container = parseRemoteTask(remoteTask, listId);
String id = remoteTask.getId(); String id = remoteTask.getId();
// update parents, prior sibling // update parents, prior sibling
@ -533,7 +532,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
/** Create a task container for the given remote task /** Create a task container for the given remote task
* @throws JSONException */ * @throws JSONException */
private GtasksTaskContainer parseRemoteTask(com.google.api.services.tasks.model.Task remoteTask) { private GtasksTaskContainer parseRemoteTask(com.google.api.services.tasks.model.Task remoteTask, String listId) {
Task task = new Task(); Task task = new Task();
ArrayList<Metadata> metadata = new ArrayList<Metadata>(); ArrayList<Metadata> metadata = new ArrayList<Metadata>();
@ -555,7 +554,7 @@ public class GtasksSyncProvider extends SyncProvider<GtasksTaskContainer> {
Metadata gtasksMetadata = GtasksMetadata.createEmptyMetadata(AbstractModel.NO_ID); Metadata gtasksMetadata = GtasksMetadata.createEmptyMetadata(AbstractModel.NO_ID);
gtasksMetadata.setValue(GtasksMetadata.ID, remoteTask.getId()); gtasksMetadata.setValue(GtasksMetadata.ID, remoteTask.getId());
gtasksMetadata.setValue(GtasksMetadata.LIST_ID, GtasksApiUtilities.extractListIdFromSelfLink(remoteTask)); gtasksMetadata.setValue(GtasksMetadata.LIST_ID, listId);
GtasksTaskContainer container = new GtasksTaskContainer(task, metadata, GtasksTaskContainer container = new GtasksTaskContainer(task, metadata,
gtasksMetadata); gtasksMetadata);

Loading…
Cancel
Save