Update dav4jvm and ical4android

* Replace submodules with jitpack
* Use new RelatedTo field
gtask_related_email
Alex Baker 4 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 {
jcenter()
google()
maven(url = "https://jitpack.io")
}
android {
@ -127,10 +128,8 @@ val googleplayImplementation by configurations
val amazonImplementation by configurations
dependencies {
implementation(project(":dav4jvm")) {
exclude(group = "org.ogce", module = "xpp3")
}
implementation(project(":ical4android")) {
implementation("com.gitlab.bitfireAT:dav4jvm:d7c21fb481")
implementation("com.gitlab.bitfireAT:ical4android:1fcb759079") {
exclude(group = "org.threeten", module = "threetenbp")
}

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

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

@ -3,7 +3,7 @@ package com.todoroo.astrid.service;
import static com.google.common.base.Strings.isNullOrEmpty;
import static com.google.common.collect.Iterables.transform;
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 android.os.Environment;
@ -122,7 +122,7 @@ public class Upgrader {
if (remoteTask == null) {
continue;
}
applyRelatedTo(task, remoteTask);
task.setRemoteParent(getParent(remoteTask));
if (!Strings.isNullOrEmpty(task.getRemoteParent())) {
updated.add(task);
}

@ -3,30 +3,24 @@ package org.tasks.caldav;
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_TIME;
import static org.tasks.caldav.CaldavUtils.fromVtodo;
import static org.tasks.caldav.CaldavUtils.setParent;
import static org.tasks.date.DateTimeUtils.newDateTime;
import com.google.common.base.Optional;
import com.google.common.base.Strings;
import com.google.common.collect.Iterables;
import com.todoroo.astrid.data.Task;
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.ParseException;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.Locale;
import net.fortuna.ical4j.model.Date;
import net.fortuna.ical4j.model.DateTime;
import net.fortuna.ical4j.model.Property;
import net.fortuna.ical4j.model.Recur;
import net.fortuna.ical4j.model.property.Completed;
import net.fortuna.ical4j.model.property.DtStart;
import net.fortuna.ical4j.model.property.Due;
import net.fortuna.ical4j.model.property.RRule;
import net.fortuna.ical4j.model.property.RelatedTo;
import net.fortuna.ical4j.model.property.Status;
import org.tasks.data.CaldavTask;
import timber.log.Timber;
@ -112,10 +106,7 @@ public class CaldavConverter {
at.bitfire.ical4android.Task remote = null;
try {
if (!Strings.isNullOrEmpty(caldavTask.getVtodo())) {
remote =
at.bitfire.ical4android.Task.Companion.fromReader(
new StringReader(caldavTask.getVtodo()))
.get(0);
remote = fromVtodo(caldavTask.getVtodo());
}
} catch (Exception e) {
Timber.e(e);
@ -163,23 +154,7 @@ public class CaldavConverter {
}
remote.setLastModified(newDateTime(task.getModificationDate()).toUTC().getMillis());
remote.setPriority(toRemote(remote.getPriority(), task.getPriority()));
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()));
}
setParent(remote, caldavTask.getParent() == 0 ? null : caldavTask.getRemoteParent());
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.Sets.difference;
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 android.content.Context;
@ -375,8 +375,7 @@ public class CaldavSynchronizer {
caldavTask.setVtodo(vtodo);
caldavTask.setEtag(eTag);
caldavTask.setLastSync(DateUtilities.now() + 1000L);
applyRelatedTo(caldavTask, remote);
caldavTask.setRemoteParent(getParent(remote));
if (caldavTask.getId() == Task.NO_ID) {
caldavTask.setId(caldavDao.insert(caldavTask));

@ -1,23 +1,33 @@
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.Sets.difference;
import static com.google.common.collect.Sets.newHashSet;
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.util.Collections;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import net.fortuna.ical4j.model.Property;
import org.tasks.data.CaldavTask;
import net.fortuna.ical4j.model.Parameter;
import net.fortuna.ical4j.model.parameter.RelType;
import net.fortuna.ical4j.model.property.RelatedTo;
import org.tasks.data.TagData;
import org.tasks.data.TagDataDao;
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) {
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;
}
@ -36,11 +46,23 @@ public class CaldavUtils {
return selectedTags;
}
public static void applyRelatedTo(CaldavTask caldavTask, at.bitfire.ical4android.Task remote) {
for (Property prop : remote.getUnknownProperties()) {
if (prop.getName().equals(Property.RELATED_TO)) {
caldavTask.setRemoteParent(prop.getValue());
public static void setParent(at.bitfire.ical4android.Task remote, @Nullable String value) {
LinkedList<RelatedTo> relatedTo = remote.getRelatedTo();
if (Strings.isNullOrEmpty(value)) {
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