Remove redundant propfind

pull/699/head
Alex Baker 8 years ago
parent 8a6070785d
commit 9b850f91e6

@ -354,10 +354,7 @@ public class CaldavCalendarSettingsActivity extends ThemedInjectingAppCompatActi
R.string.delete, R.string.delete,
(dialog, which) -> { (dialog, which) -> {
CaldavClient caldavClient = CaldavClient caldavClient =
new CaldavClient( new CaldavClient(caldavAccount, caldavCalendar, encryption);
caldavCalendar.getUrl(),
caldavAccount.getUsername(),
encryption.decrypt(caldavAccount.getPassword()));
ProgressDialog progressDialog = dialogBuilder.newProgressDialog(R.string.contacting_server); ProgressDialog progressDialog = dialogBuilder.newProgressDialog(R.string.contacting_server);
progressDialog.show(); progressDialog.show();
caldavClient caldavClient

@ -33,6 +33,7 @@ import okhttp3.HttpUrl;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import org.tasks.R; import org.tasks.R;
import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
import org.tasks.security.Encryption; import org.tasks.security.Encryption;
import org.tasks.ui.DisplayableException; import org.tasks.ui.DisplayableException;
import org.xmlpull.v1.XmlSerializer; import org.xmlpull.v1.XmlSerializer;
@ -50,6 +51,13 @@ class CaldavClient {
encryption.decrypt(caldavAccount.getPassword())); encryption.decrypt(caldavAccount.getPassword()));
} }
CaldavClient(CaldavAccount caldavAccount, CaldavCalendar caldavCalendar, Encryption encryption) {
this(
caldavCalendar.getUrl(),
caldavAccount.getUsername(),
encryption.decrypt(caldavAccount.getPassword()));
}
CaldavClient(String url, String username, String password) { CaldavClient(String url, String username, String password) {
BasicDigestAuthHandler basicDigestAuthHandler = BasicDigestAuthHandler basicDigestAuthHandler =
new BasicDigestAuthHandler(null, username, password); new BasicDigestAuthHandler(null, username, password);

@ -11,7 +11,6 @@ import static com.google.common.collect.Sets.newHashSet;
import static org.tasks.time.DateTimeUtils.currentTimeMillis; import static org.tasks.time.DateTimeUtils.currentTimeMillis;
import android.content.Context; import android.content.Context;
import at.bitfire.dav4android.BasicDigestAuthHandler;
import at.bitfire.dav4android.DavCalendar; import at.bitfire.dav4android.DavCalendar;
import at.bitfire.dav4android.DavResource; import at.bitfire.dav4android.DavResource;
import at.bitfire.dav4android.PropertyCollection; import at.bitfire.dav4android.PropertyCollection;
@ -38,11 +37,9 @@ import java.io.ByteArrayOutputStream;
import java.io.IOException; import java.io.IOException;
import java.io.Reader; import java.io.Reader;
import java.io.StringReader; import java.io.StringReader;
import java.net.URI;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import java.util.concurrent.TimeUnit;
import javax.inject.Inject; import javax.inject.Inject;
import net.fortuna.ical4j.model.property.ProdId; import net.fortuna.ical4j.model.property.ProdId;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
@ -127,34 +124,19 @@ public class CaldavSynchronizer {
calendar.setId(caldavDao.insert(calendar)); calendar.setId(caldavDao.insert(calendar));
localBroadcastManager.broadcastRefreshList(); localBroadcastManager.broadcastRefreshList();
} }
sync(account, calendar); sync(calendar, resource);
} }
} }
} }
private void sync(CaldavAccount account, CaldavCalendar caldavCalendar) { private void sync(CaldavCalendar caldavCalendar, DavResource resource) {
Timber.d("sync(%s)", caldavCalendar); Timber.d("sync(%s)", caldavCalendar);
BasicDigestAuthHandler basicDigestAuthHandler = OkHttpClient httpClient = resource.getHttpClient();
new BasicDigestAuthHandler(null, account.getUsername(), encryption.decrypt(account.getPassword())); HttpUrl httpUrl = resource.getLocation();
OkHttpClient httpClient =
new OkHttpClient()
.newBuilder()
.addNetworkInterceptor(basicDigestAuthHandler)
.authenticator(basicDigestAuthHandler)
.cookieJar(new MemoryCookieStore())
.followRedirects(false)
.followSslRedirects(false)
.readTimeout(30, TimeUnit.SECONDS)
.build();
URI uri = URI.create(caldavCalendar.getUrl());
HttpUrl httpUrl = HttpUrl.get(uri);
DavCalendar davCalendar = new DavCalendar(httpClient, httpUrl);
try { try {
pushLocalChanges(caldavCalendar, httpClient, httpUrl); pushLocalChanges(caldavCalendar, httpClient, httpUrl);
davCalendar.propfind(0, GetCTag.NAME, DisplayName.NAME); PropertyCollection properties = resource.getProperties();
PropertyCollection properties = davCalendar.getProperties();
String remoteName = properties.get(DisplayName.class).getDisplayName(); String remoteName = properties.get(DisplayName.class).getDisplayName();
if (!caldavCalendar.getName().equals(remoteName)) { if (!caldavCalendar.getName().equals(remoteName)) {
Timber.d("%s -> %s", caldavCalendar.getName(), remoteName); Timber.d("%s -> %s", caldavCalendar.getName(), remoteName);
@ -171,6 +153,8 @@ public class CaldavSynchronizer {
return; return;
} }
DavCalendar davCalendar = new DavCalendar(httpClient, httpUrl);
davCalendar.calendarQuery("VTODO", null, null); davCalendar.calendarQuery("VTODO", null, null);
Set<String> remoteObjects = Set<String> remoteObjects =
@ -298,7 +282,7 @@ public class CaldavSynchronizer {
Task task, CaldavCalendar caldavCalendar, OkHttpClient httpClient, HttpUrl httpUrl) Task task, CaldavCalendar caldavCalendar, OkHttpClient httpClient, HttpUrl httpUrl)
throws IOException { throws IOException {
Timber.d("pushing %s", task); Timber.d("pushing %s", task);
List<CaldavTask> deleted = getDeleted(task.getId(), caldavCalendar); List<CaldavTask> deleted = caldavDao.getDeleted(task.getId(), caldavCalendar.getUuid());
if (!deleted.isEmpty()) { if (!deleted.isEmpty()) {
for (CaldavTask entry : deleted) { for (CaldavTask entry : deleted) {
deleteRemoteResource(httpClient, httpUrl, entry); deleteRemoteResource(httpClient, httpUrl, entry);
@ -354,10 +338,6 @@ public class CaldavSynchronizer {
Timber.d("SENT %s", caldavTask); Timber.d("SENT %s", caldavTask);
} }
private List<CaldavTask> getDeleted(long taskId, CaldavCalendar caldavCalendar) {
return caldavDao.getDeleted(taskId, caldavCalendar.getUuid());
}
private void processVTodo( private void processVTodo(
String fileName, CaldavCalendar caldavCalendar, String eTag, String vtodo) String fileName, CaldavCalendar caldavCalendar, String eTag, String vtodo)
throws IOException { throws IOException {

Loading…
Cancel
Save