|
|
@ -1,5 +1,6 @@
|
|
|
|
package com.todoroo.astrid.actfm.sync.messages;
|
|
|
|
package com.todoroo.astrid.actfm.sync.messages;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.ArrayList;
|
|
|
|
import java.util.List;
|
|
|
|
import java.util.List;
|
|
|
|
|
|
|
|
|
|
|
@ -7,6 +8,7 @@ import org.json.JSONArray;
|
|
|
|
import org.json.JSONException;
|
|
|
|
import org.json.JSONException;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
import org.json.JSONObject;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import android.text.TextUtils;
|
|
|
|
import android.util.Log;
|
|
|
|
import android.util.Log;
|
|
|
|
|
|
|
|
|
|
|
|
import com.todoroo.andlib.data.Property;
|
|
|
|
import com.todoroo.andlib.data.Property;
|
|
|
@ -14,6 +16,7 @@ import com.todoroo.andlib.data.Property.PropertyVisitor;
|
|
|
|
import com.todoroo.andlib.data.TodorooCursor;
|
|
|
|
import com.todoroo.andlib.data.TodorooCursor;
|
|
|
|
import com.todoroo.andlib.sql.Order;
|
|
|
|
import com.todoroo.andlib.sql.Order;
|
|
|
|
import com.todoroo.andlib.sql.Query;
|
|
|
|
import com.todoroo.andlib.sql.Query;
|
|
|
|
|
|
|
|
import com.todoroo.andlib.utility.AndroidUtilities;
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
import com.todoroo.andlib.utility.DateUtilities;
|
|
|
|
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
|
|
|
|
import com.todoroo.astrid.actfm.sync.ActFmPreferenceService;
|
|
|
|
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.ModelType;
|
|
|
|
import com.todoroo.astrid.actfm.sync.ActFmSyncThread.ModelType;
|
|
|
@ -110,6 +113,15 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
|
|
|
|
} else if (NameMaps.MEMBER_REMOVED_COLUMN.equals(localColumn)) {
|
|
|
|
} else if (NameMaps.MEMBER_REMOVED_COLUMN.equals(localColumn)) {
|
|
|
|
serverColumn = NameMaps.MEMBER_REMOVED_COLUMN;
|
|
|
|
serverColumn = NameMaps.MEMBER_REMOVED_COLUMN;
|
|
|
|
changeJson.put("value", change.getValue(OutstandingEntry.VALUE_STRING_PROPERTY));
|
|
|
|
changeJson.put("value", change.getValue(OutstandingEntry.VALUE_STRING_PROPERTY));
|
|
|
|
|
|
|
|
} else if (NameMaps.ATTACHMENT_ADDED_COLUMN.equals(localColumn)) {
|
|
|
|
|
|
|
|
serverColumn = NameMaps.ATTACHMENT_ADDED_COLUMN;
|
|
|
|
|
|
|
|
JSONObject fileJson = getFileJson(change.getValue(OutstandingEntry.VALUE_STRING_PROPERTY));
|
|
|
|
|
|
|
|
if (fileJson == null) {
|
|
|
|
|
|
|
|
PluginServices.getTaskAttachmentDao().delete(id);
|
|
|
|
|
|
|
|
continue;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
changeJson.put("value", fileJson.toString());
|
|
|
|
|
|
|
|
}
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
Property<?> localProperty = NameMaps.localColumnNameToProperty(table, localColumn);
|
|
|
|
Property<?> localProperty = NameMaps.localColumnNameToProperty(table, localColumn);
|
|
|
|
if (localProperty == null)
|
|
|
|
if (localProperty == null)
|
|
|
@ -155,6 +167,28 @@ public class ChangesHappened<TYPE extends RemoteModel, OE extends OutstandingEnt
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private JSONObject getFileJson(String value) {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
JSONObject obj = new JSONObject(value);
|
|
|
|
|
|
|
|
String path = obj.optString("path");
|
|
|
|
|
|
|
|
if (TextUtils.isEmpty(path))
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
File f = new File(path);
|
|
|
|
|
|
|
|
if (!f.exists())
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
String encodedFile = AndroidUtilities.encodeBase64File(f);
|
|
|
|
|
|
|
|
if (TextUtils.isEmpty(encodedFile))
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
obj.remove("path");
|
|
|
|
|
|
|
|
obj.put("data", encodedFile);
|
|
|
|
|
|
|
|
return obj;
|
|
|
|
|
|
|
|
} catch (JSONException e) {
|
|
|
|
|
|
|
|
return null;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private class PropertyToJSONVisitor implements PropertyVisitor<Object, OE> {
|
|
|
|
private class PropertyToJSONVisitor implements PropertyVisitor<Object, OE> {
|
|
|
|
|
|
|
|
|
|
|
|
private String getAsString(OE data) {
|
|
|
|
private String getAsString(OE data) {
|
|
|
|