From b779330c0b4317fd691035e054d9b37e3cf96edd Mon Sep 17 00:00:00 2001 From: Alex Baker Date: Thu, 16 May 2019 13:41:25 -0500 Subject: [PATCH] Report more sync exceptions --- .../org/tasks/caldav/CaldavSynchronizer.java | 38 ++++++++++--------- .../main/java/org/tasks/jobs/SyncWork.java | 5 ++- 2 files changed, 23 insertions(+), 20 deletions(-) diff --git a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java index 025b05d9f..dd90059e5 100644 --- a/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java +++ b/app/src/main/java/org/tasks/caldav/CaldavSynchronizer.java @@ -47,6 +47,7 @@ import okhttp3.ResponseBody; import org.tasks.BuildConfig; import org.tasks.LocalBroadcastManager; import org.tasks.R; +import org.tasks.analytics.Tracker; import org.tasks.billing.Inventory; import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavCalendar; @@ -70,6 +71,7 @@ public class CaldavSynchronizer { private final TaskDeleter taskDeleter; private final Encryption encryption; private final Inventory inventory; + private final Tracker tracker; private final Context context; @Inject @@ -81,7 +83,8 @@ public class CaldavSynchronizer { TaskCreator taskCreator, TaskDeleter taskDeleter, Encryption encryption, - Inventory inventory) { + Inventory inventory, + Tracker tracker) { this.context = context; this.caldavDao = caldavDao; this.taskDao = taskDao; @@ -90,6 +93,7 @@ public class CaldavSynchronizer { this.taskDeleter = taskDeleter; this.encryption = encryption; this.inventory = inventory; + this.tracker = tracker; } public void sync() { @@ -97,16 +101,11 @@ public class CaldavSynchronizer { Thread.currentThread().setContextClassLoader(context.getClassLoader()); for (CaldavAccount account : caldavDao.getAccounts()) { if (!inventory.hasPro()) { - account.setError(context.getString(R.string.requires_pro_subscription)); - caldavDao.update(account); - localBroadcastManager.broadcastRefreshList(); + setError(account, context.getString(R.string.requires_pro_subscription)); continue; } if (isNullOrEmpty(account.getPassword())) { - account.setError(context.getString(R.string.password_required)); - caldavDao.update(account); - localBroadcastManager.broadcastRefreshList(); - Timber.e("Missing password for %s", account); + setError(account, context.getString(R.string.password_required)); continue; } CaldavClient caldavClient = new CaldavClient(account, encryption); @@ -114,10 +113,8 @@ public class CaldavSynchronizer { try { resources = caldavClient.getCalendars(); } catch (IOException | DavException e) { - account.setError(e.getMessage()); - caldavDao.update(account); - localBroadcastManager.broadcastRefreshList(); - Timber.e(e); + setError(account, e.getMessage()); + tracker.reportException(e); continue; } Set urls = newHashSet(transform(resources, c -> c.getUrl().toString())); @@ -140,9 +137,16 @@ public class CaldavSynchronizer { } sync(calendar, resource, caldavClient.getHttpClient()); } - account.setError(""); - caldavDao.update(account); - localBroadcastManager.broadcastRefreshList(); + setError(account, ""); + } + } + + private void setError(CaldavAccount account, String message) { + account.setError(message); + caldavDao.update(account); + localBroadcastManager.broadcastRefreshList(); + if (!Strings.isNullOrEmpty(message)) { + Timber.e(message); } } @@ -245,10 +249,8 @@ public class CaldavSynchronizer { caldavCalendar.setCtag(remoteCtag); Timber.d("UPDATE %s", caldavCalendar); caldavDao.update(caldavCalendar); - } catch (IOException | DavException e) { - Timber.e(e); } catch (Exception e) { - Timber.e(e); + tracker.reportException(e); } localBroadcastManager.broadcastRefresh(); diff --git a/app/src/main/java/org/tasks/jobs/SyncWork.java b/app/src/main/java/org/tasks/jobs/SyncWork.java index b63409fbd..9772b60b8 100644 --- a/app/src/main/java/org/tasks/jobs/SyncWork.java +++ b/app/src/main/java/org/tasks/jobs/SyncWork.java @@ -5,12 +5,12 @@ import androidx.annotation.NonNull; import androidx.work.WorkerParameters; import javax.inject.Inject; import org.tasks.LocalBroadcastManager; +import org.tasks.analytics.Tracker; import org.tasks.caldav.CaldavSynchronizer; import org.tasks.gtasks.GoogleTaskSynchronizer; import org.tasks.injection.InjectingWorker; import org.tasks.injection.JobComponent; import org.tasks.preferences.Preferences; -import timber.log.Timber; public class SyncWork extends InjectingWorker { @@ -20,6 +20,7 @@ public class SyncWork extends InjectingWorker { @Inject GoogleTaskSynchronizer googleTaskSynchronizer; @Inject LocalBroadcastManager localBroadcastManager; @Inject Preferences preferences; + @Inject Tracker tracker; public SyncWork(@NonNull Context context, @NonNull WorkerParameters workerParams) { super(context, workerParams); @@ -40,7 +41,7 @@ public class SyncWork extends InjectingWorker { caldavSynchronizer.sync(); googleTaskSynchronizer.sync(); } catch (Exception e) { - Timber.e(e); + tracker.reportException(e); } finally { preferences.setSyncOngoing(false); localBroadcastManager.broadcastRefresh();