Update dav4jvm and ical4android

* Replace submodules with jitpack
* Use new RelatedTo field
gtask_related_email
Alex Baker 5 years ago
parent a3f504d410
commit 7ae9605e13

6
.gitmodules vendored

@ -1,6 +0,0 @@
[submodule "ical4android"]
path = ical4android
url = https://gitlab.com/tasks.org/ical4android.git
[submodule "dav4android"]
path = dav4jvm
url = https://gitlab.com/tasks.org/dav4jvm.git

@ -11,6 +11,7 @@ plugins {
repositories { repositories {
jcenter() jcenter()
google() google()
maven(url = "https://jitpack.io")
} }
android { android {
@ -127,10 +128,8 @@ val googleplayImplementation by configurations
val amazonImplementation by configurations val amazonImplementation by configurations
dependencies { dependencies {
implementation(project(":dav4jvm")) { implementation("com.gitlab.bitfireAT:dav4jvm:d7c21fb481")
exclude(group = "org.ogce", module = "xpp3") implementation("com.gitlab.bitfireAT:ical4android:1fcb759079") {
}
implementation(project(":ical4android")) {
exclude(group = "org.threeten", module = "threetenbp") exclude(group = "org.threeten", module = "threetenbp")
} }

@ -1,15 +1,13 @@
- artifact: at.bitfire:dav4jvm:+ - artifact: com.gitlab.bitfireAT:dav4jvm:+
name: dav4jvm name: dav4jvm
copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann) copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann)
license: Mozilla Public License, Version 2.0 license: Mozilla Public License, Version 2.0
licenseUrl: https://www.mozilla.org/en-US/MPL/2.0/ licenseUrl: https://www.mozilla.org/en-US/MPL/2.0/
forceGenerate: true - artifact: com.gitlab.bitfireAT:ical4android:+
- artifact: at.bitfire:ical4android:+
name: ical4android name: ical4android
copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann) copyrightHolder: bitfire web engineering (Ricki Hirner, Bernhard Stockmann)
license: GNU General Public License, Version 3.0 license: GNU General Public License, Version 3.0
licenseUrl: https://www.gnu.org/licenses/gpl.txt licenseUrl: https://www.gnu.org/licenses/gpl.txt
forceGenerate: true
- artifact: androidx.coordinatorlayout:coordinatorlayout:+ - artifact: androidx.coordinatorlayout:coordinatorlayout:+
name: Android Support Library Coordinator Layout name: Android Support Library Coordinator Layout
copyrightHolder: Android Open Source Project copyrightHolder: Android Open Source Project

@ -8,12 +8,12 @@
"licenseUrl": "https://www.mozilla.org/en-US/MPL/2.0/", "licenseUrl": "https://www.mozilla.org/en-US/MPL/2.0/",
"normalizedLicense": "mpl2", "normalizedLicense": "mpl2",
"year": null, "year": null,
"url": null, "url": "",
"libraryName": "dav4jvm", "libraryName": "dav4jvm",
"artifactId": { "artifactId": {
"name": "dav4jvm", "name": "dav4jvm",
"group": "at.bitfire", "group": "com.gitlab.bitfireAT",
"version": "+" "version": "d7c21fb481"
} }
}, },
{ {
@ -24,12 +24,12 @@
"licenseUrl": "https://www.gnu.org/licenses/gpl.txt", "licenseUrl": "https://www.gnu.org/licenses/gpl.txt",
"normalizedLicense": "gpl3", "normalizedLicense": "gpl3",
"year": null, "year": null,
"url": null, "url": "",
"libraryName": "ical4android", "libraryName": "ical4android",
"artifactId": { "artifactId": {
"name": "ical4android", "name": "ical4android",
"group": "at.bitfire", "group": "com.gitlab.bitfireAT",
"version": "+" "version": "1fcb759079"
} }
}, },
{ {

@ -3,7 +3,7 @@ package com.todoroo.astrid.service;
import static com.google.common.base.Strings.isNullOrEmpty; import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.collect.Iterables.transform; import static com.google.common.collect.Iterables.transform;
import static com.google.common.collect.Lists.newArrayList; import static com.google.common.collect.Lists.newArrayList;
import static org.tasks.caldav.CaldavUtils.applyRelatedTo; import static org.tasks.caldav.CaldavUtils.getParent;
import static org.tasks.db.DbUtils.batch; import static org.tasks.db.DbUtils.batch;
import android.os.Environment; import android.os.Environment;
@ -122,7 +122,7 @@ public class Upgrader {
if (remoteTask == null) { if (remoteTask == null) {
continue; continue;
} }
applyRelatedTo(task, remoteTask); task.setRemoteParent(getParent(remoteTask));
if (!Strings.isNullOrEmpty(task.getRemoteParent())) { if (!Strings.isNullOrEmpty(task.getRemoteParent())) {
updated.add(task); updated.add(task);
} }

@ -3,30 +3,24 @@ package org.tasks.caldav;
import static com.todoroo.andlib.utility.DateUtilities.now; import static com.todoroo.andlib.utility.DateUtilities.now;
import static com.todoroo.astrid.data.Task.URGENCY_SPECIFIC_DAY; import static com.todoroo.astrid.data.Task.URGENCY_SPECIFIC_DAY;
import static com.todoroo.astrid.data.Task.URGENCY_SPECIFIC_DAY_TIME; import static com.todoroo.astrid.data.Task.URGENCY_SPECIFIC_DAY_TIME;
import static org.tasks.caldav.CaldavUtils.fromVtodo;
import static org.tasks.caldav.CaldavUtils.setParent;
import static org.tasks.date.DateTimeUtils.newDateTime; import static org.tasks.date.DateTimeUtils.newDateTime;
import com.google.common.base.Optional;
import com.google.common.base.Strings; import com.google.common.base.Strings;
import com.google.common.collect.Iterables;
import com.todoroo.astrid.data.Task; import com.todoroo.astrid.data.Task;
import com.todoroo.astrid.data.Task.Priority; import com.todoroo.astrid.data.Task.Priority;
import java.io.IOException;
import java.io.StringReader;
import java.net.URISyntaxException;
import java.text.DateFormat; import java.text.DateFormat;
import java.text.ParseException; import java.text.ParseException;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.Locale; import java.util.Locale;
import net.fortuna.ical4j.model.Date; import net.fortuna.ical4j.model.Date;
import net.fortuna.ical4j.model.DateTime; import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.Recur; import net.fortuna.ical4j.model.Recur;
import net.fortuna.ical4j.model.property.Completed; import net.fortuna.ical4j.model.property.Completed;
import net.fortuna.ical4j.model.property.DtStart; import net.fortuna.ical4j.model.property.DtStart;
import net.fortuna.ical4j.model.property.Due; import net.fortuna.ical4j.model.property.Due;
import net.fortuna.ical4j.model.property.RRule; import net.fortuna.ical4j.model.property.RRule;
import net.fortuna.ical4j.model.property.RelatedTo;
import net.fortuna.ical4j.model.property.Status; import net.fortuna.ical4j.model.property.Status;
import org.tasks.data.CaldavTask; import org.tasks.data.CaldavTask;
import timber.log.Timber; import timber.log.Timber;
@ -112,10 +106,7 @@ public class CaldavConverter {
at.bitfire.ical4android.Task remote = null; at.bitfire.ical4android.Task remote = null;
try { try {
if (!Strings.isNullOrEmpty(caldavTask.getVtodo())) { if (!Strings.isNullOrEmpty(caldavTask.getVtodo())) {
remote = remote = fromVtodo(caldavTask.getVtodo());
at.bitfire.ical4android.Task.Companion.fromReader(
new StringReader(caldavTask.getVtodo()))
.get(0);
} }
} catch (Exception e) { } catch (Exception e) {
Timber.e(e); Timber.e(e);
@ -163,23 +154,7 @@ public class CaldavConverter {
} }
remote.setLastModified(newDateTime(task.getModificationDate()).toUTC().getMillis()); remote.setLastModified(newDateTime(task.getModificationDate()).toUTC().getMillis());
remote.setPriority(toRemote(remote.getPriority(), task.getPriority())); remote.setPriority(toRemote(remote.getPriority(), task.getPriority()));
setParent(remote, caldavTask.getParent() == 0 ? null : caldavTask.getRemoteParent());
LinkedList<Property> unknownProperties = remote.getUnknownProperties();
Optional<Property> relatedTo =
Iterables.tryFind(unknownProperties, p -> Property.RELATED_TO.equals(p.getName()));
if (caldavTask.getParent() == 0) {
if (relatedTo.isPresent()) {
unknownProperties.remove(relatedTo.get());
}
} else if (relatedTo.isPresent()) {
try {
relatedTo.get().setValue(caldavTask.getRemoteParent());
} catch (IOException | URISyntaxException | ParseException e) {
Timber.e(e);
}
} else {
unknownProperties.add(new RelatedTo(caldavTask.getRemoteParent()));
}
return remote; return remote;
} }

@ -7,7 +7,7 @@ import static com.google.common.collect.Lists.newArrayList;
import static com.google.common.collect.Lists.transform; import static com.google.common.collect.Lists.transform;
import static com.google.common.collect.Sets.difference; import static com.google.common.collect.Sets.difference;
import static com.google.common.collect.Sets.newHashSet; import static com.google.common.collect.Sets.newHashSet;
import static org.tasks.caldav.CaldavUtils.applyRelatedTo; import static org.tasks.caldav.CaldavUtils.getParent;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.Context; import android.content.Context;
@ -375,8 +375,7 @@ public class CaldavSynchronizer {
caldavTask.setVtodo(vtodo); caldavTask.setVtodo(vtodo);
caldavTask.setEtag(eTag); caldavTask.setEtag(eTag);
caldavTask.setLastSync(DateUtilities.now() + 1000L); caldavTask.setLastSync(DateUtilities.now() + 1000L);
caldavTask.setRemoteParent(getParent(remote));
applyRelatedTo(caldavTask, remote);
if (caldavTask.getId() == Task.NO_ID) { if (caldavTask.getId() == Task.NO_ID) {
caldavTask.setId(caldavDao.insert(caldavTask)); caldavTask.setId(caldavDao.insert(caldavTask));

@ -1,23 +1,33 @@
package org.tasks.caldav; package org.tasks.caldav;
import static com.google.common.collect.Iterables.removeIf;
import static com.google.common.collect.Iterables.tryFind;
import static com.google.common.collect.Lists.transform; import static com.google.common.collect.Lists.transform;
import static com.google.common.collect.Sets.difference; import static com.google.common.collect.Sets.difference;
import static com.google.common.collect.Sets.newHashSet; import static com.google.common.collect.Sets.newHashSet;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import com.google.common.base.Optional;
import com.google.common.base.Predicate;
import com.google.common.base.Strings;
import java.io.StringReader; import java.io.StringReader;
import java.util.Collections; import java.util.Collections;
import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import net.fortuna.ical4j.model.Property; import net.fortuna.ical4j.model.Parameter;
import org.tasks.data.CaldavTask; import net.fortuna.ical4j.model.parameter.RelType;
import net.fortuna.ical4j.model.property.RelatedTo;
import org.tasks.data.TagData; import org.tasks.data.TagData;
import org.tasks.data.TagDataDao; import org.tasks.data.TagDataDao;
public class CaldavUtils { public class CaldavUtils {
private static final Predicate<RelatedTo> IS_PARENT =
r -> r.getParameters().isEmpty() || r.getParameter(Parameter.RELTYPE) == RelType.PARENT;
public static @Nullable at.bitfire.ical4android.Task fromVtodo(String vtodo) { public static @Nullable at.bitfire.ical4android.Task fromVtodo(String vtodo) {
List<at.bitfire.ical4android.Task> tasks = List<at.bitfire.ical4android.Task> tasks =
at.bitfire.ical4android.Task.Companion.fromReader(new StringReader(vtodo)); at.bitfire.ical4android.Task.Companion.tasksFromReader(new StringReader(vtodo));
return tasks.size() == 1 ? tasks.get(0) : null; return tasks.size() == 1 ? tasks.get(0) : null;
} }
@ -36,11 +46,23 @@ public class CaldavUtils {
return selectedTags; return selectedTags;
} }
public static void applyRelatedTo(CaldavTask caldavTask, at.bitfire.ical4android.Task remote) { public static void setParent(at.bitfire.ical4android.Task remote, @Nullable String value) {
for (Property prop : remote.getUnknownProperties()) { LinkedList<RelatedTo> relatedTo = remote.getRelatedTo();
if (prop.getName().equals(Property.RELATED_TO)) { if (Strings.isNullOrEmpty(value)) {
caldavTask.setRemoteParent(prop.getValue()); removeIf(relatedTo, IS_PARENT);
} else {
Optional<RelatedTo> parent = tryFind(relatedTo, IS_PARENT);
if (parent.isPresent()) {
parent.get().setValue(value);
} else {
relatedTo.add(new RelatedTo(value));
} }
} }
} }
public static @Nullable String getParent(at.bitfire.ical4android.Task remote) {
LinkedList<RelatedTo> relatedTo = remote.getRelatedTo();
Optional<RelatedTo> parent = tryFind(relatedTo, IS_PARENT);
return parent.isPresent() ? parent.get().getValue() : null;
}
} }

@ -1 +0,0 @@
Subproject commit 753df939cbfa821414240e5cea1afc0b4390b4a0

@ -1 +0,0 @@
Subproject commit 232477eca62684dfd35fe8ff20d505991fa21b30

@ -1 +1 @@
include("dav4jvm", "ical4android", "app") include("app")

Loading…
Cancel
Save