diff --git a/app/build.gradle b/app/build.gradle index 16480f4c3..e052d83c3 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -130,7 +130,9 @@ dependencies { implementation(project(":dav4jvm")) { exclude group: 'org.ogce', module: 'xpp3' } - implementation project(":ical4android") + implementation(project(":ical4android")) { + exclude group: 'org.threeten', module: 'threetenbp' + } annotationProcessor "com.google.dagger:dagger-compiler:${DAGGER_VERSION}" implementation "com.google.dagger:dagger:${DAGGER_VERSION}" diff --git a/app/src/main/java/org/tasks/caldav/CaldavClient.java b/app/src/main/java/org/tasks/caldav/CaldavClient.java index de0db366b..0d95e8498 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavClient.java +++ b/app/src/main/java/org/tasks/caldav/CaldavClient.java @@ -10,6 +10,7 @@ import at.bitfire.dav4jvm.BasicDigestAuthHandler; import at.bitfire.dav4jvm.DavResource; import at.bitfire.dav4jvm.Property.Name; import at.bitfire.dav4jvm.Response; +import at.bitfire.dav4jvm.Response.HrefRelation; import at.bitfire.dav4jvm.XmlUtils; import at.bitfire.dav4jvm.exception.DavException; import at.bitfire.dav4jvm.exception.HttpException; @@ -156,7 +157,7 @@ public class CaldavClient { public List getCalendars() throws IOException, DavException { DavResource davResource = new DavResource(httpClient, httpUrl); - ResponseList responses = new ResponseList(); + ResponseList responses = new ResponseList(HrefRelation.MEMBER); davResource.propfind( 1, new Name[] { diff --git a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java index 1c508249d..832cb88d4 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java +++ b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java @@ -13,6 +13,7 @@ import android.content.Context; import at.bitfire.dav4jvm.DavCalendar; import at.bitfire.dav4jvm.DavResource; import at.bitfire.dav4jvm.Response; +import at.bitfire.dav4jvm.Response.HrefRelation; import at.bitfire.dav4jvm.exception.DavException; import at.bitfire.dav4jvm.exception.HttpException; import at.bitfire.dav4jvm.property.CalendarData; @@ -166,7 +167,7 @@ public class CaldavSynchronizer { DavCalendar davCalendar = new DavCalendar(httpClient, httpUrl); - ResponseList members = new ResponseList(); + ResponseList members = new ResponseList(HrefRelation.MEMBER); davCalendar.calendarQuery("VTODO", null, null, members); Set remoteObjects = newHashSet(transform(members, Response::hrefName)); @@ -199,7 +200,7 @@ public class CaldavSynchronizer { processVTodo(vCard.hrefName(), caldavCalendar, eTag.getETag(), response.getBody()); } else { ArrayList urls = newArrayList(Iterables.transform(items, Response::getHref)); - ResponseList responses = new ResponseList(); + ResponseList responses = new ResponseList(HrefRelation.MEMBER); davCalendar.multiget(urls, responses); Timber.d("MULTI %s", urls); @@ -333,13 +334,8 @@ public class CaldavSynchronizer { private void processVTodo( String fileName, CaldavCalendar caldavCalendar, String eTag, String vtodo) { - List tasks; - try { - tasks = at.bitfire.ical4android.Task.Companion.fromReader(new StringReader(vtodo)); - } catch (Exception e) { - Timber.e(e); - return; - } + List tasks = + at.bitfire.ical4android.Task.Companion.fromReader(new StringReader(vtodo)); if (tasks.size() == 1) { at.bitfire.ical4android.Task remote = tasks.get(0); diff --git a/app/src/main/java/org/tasks/caldav/ResponseList.java b/app/src/main/java/org/tasks/caldav/ResponseList.java index 47a08c3dc..0625fd141 100644 --- a/app/src/main/java/org/tasks/caldav/ResponseList.java +++ b/app/src/main/java/org/tasks/caldav/ResponseList.java @@ -9,9 +9,21 @@ import kotlin.jvm.functions.Function2; public class ResponseList extends ArrayList implements Function2 { + private final HrefRelation filter; + + public ResponseList() { + this(null); + } + + public ResponseList(HrefRelation filter) { + this.filter = filter; + } + @Override public Unit invoke(Response response, HrefRelation hrefRelation) { - add(response); + if (filter == null || hrefRelation == filter) { + add(response); + } return null; } } diff --git a/ical4android b/ical4android index c8d53d688..10b6ba825 160000 --- a/ical4android +++ b/ical4android @@ -1 +1 @@ -Subproject commit c8d53d6880374b2330d98ef5c43ff662a003abe7 +Subproject commit 10b6ba825c96cd1134dce2bc811096dcc0cdd3e0