Report more sync exceptions

pull/820/head
Alex Baker 7 years ago
parent e515266be2
commit b779330c0b

@ -47,6 +47,7 @@ import okhttp3.ResponseBody;
import org.tasks.BuildConfig; import org.tasks.BuildConfig;
import org.tasks.LocalBroadcastManager; import org.tasks.LocalBroadcastManager;
import org.tasks.R; import org.tasks.R;
import org.tasks.analytics.Tracker;
import org.tasks.billing.Inventory; import org.tasks.billing.Inventory;
import org.tasks.data.CaldavAccount; import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar; import org.tasks.data.CaldavCalendar;
@ -70,6 +71,7 @@ public class CaldavSynchronizer {
private final TaskDeleter taskDeleter; private final TaskDeleter taskDeleter;
private final Encryption encryption; private final Encryption encryption;
private final Inventory inventory; private final Inventory inventory;
private final Tracker tracker;
private final Context context; private final Context context;
@Inject @Inject
@ -81,7 +83,8 @@ public class CaldavSynchronizer {
TaskCreator taskCreator, TaskCreator taskCreator,
TaskDeleter taskDeleter, TaskDeleter taskDeleter,
Encryption encryption, Encryption encryption,
Inventory inventory) { Inventory inventory,
Tracker tracker) {
this.context = context; this.context = context;
this.caldavDao = caldavDao; this.caldavDao = caldavDao;
this.taskDao = taskDao; this.taskDao = taskDao;
@ -90,6 +93,7 @@ public class CaldavSynchronizer {
this.taskDeleter = taskDeleter; this.taskDeleter = taskDeleter;
this.encryption = encryption; this.encryption = encryption;
this.inventory = inventory; this.inventory = inventory;
this.tracker = tracker;
} }
public void sync() { public void sync() {
@ -97,16 +101,11 @@ public class CaldavSynchronizer {
Thread.currentThread().setContextClassLoader(context.getClassLoader()); Thread.currentThread().setContextClassLoader(context.getClassLoader());
for (CaldavAccount account : caldavDao.getAccounts()) { for (CaldavAccount account : caldavDao.getAccounts()) {
if (!inventory.hasPro()) { if (!inventory.hasPro()) {
account.setError(context.getString(R.string.requires_pro_subscription)); setError(account, context.getString(R.string.requires_pro_subscription));
caldavDao.update(account);
localBroadcastManager.broadcastRefreshList();
continue; continue;
} }
if (isNullOrEmpty(account.getPassword())) { if (isNullOrEmpty(account.getPassword())) {
account.setError(context.getString(R.string.password_required)); setError(account, context.getString(R.string.password_required));
caldavDao.update(account);
localBroadcastManager.broadcastRefreshList();
Timber.e("Missing password for %s", account);
continue; continue;
} }
CaldavClient caldavClient = new CaldavClient(account, encryption); CaldavClient caldavClient = new CaldavClient(account, encryption);
@ -114,10 +113,8 @@ public class CaldavSynchronizer {
try { try {
resources = caldavClient.getCalendars(); resources = caldavClient.getCalendars();
} catch (IOException | DavException e) { } catch (IOException | DavException e) {
account.setError(e.getMessage()); setError(account, e.getMessage());
caldavDao.update(account); tracker.reportException(e);
localBroadcastManager.broadcastRefreshList();
Timber.e(e);
continue; continue;
} }
Set<String> urls = newHashSet(transform(resources, c -> c.getUrl().toString())); Set<String> urls = newHashSet(transform(resources, c -> c.getUrl().toString()));
@ -140,9 +137,16 @@ public class CaldavSynchronizer {
} }
sync(calendar, resource, caldavClient.getHttpClient()); sync(calendar, resource, caldavClient.getHttpClient());
} }
account.setError(""); setError(account, "");
caldavDao.update(account); }
localBroadcastManager.broadcastRefreshList(); }
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); caldavCalendar.setCtag(remoteCtag);
Timber.d("UPDATE %s", caldavCalendar); Timber.d("UPDATE %s", caldavCalendar);
caldavDao.update(caldavCalendar); caldavDao.update(caldavCalendar);
} catch (IOException | DavException e) {
Timber.e(e);
} catch (Exception e) { } catch (Exception e) {
Timber.e(e); tracker.reportException(e);
} }
localBroadcastManager.broadcastRefresh(); localBroadcastManager.broadcastRefresh();

@ -5,12 +5,12 @@ import androidx.annotation.NonNull;
import androidx.work.WorkerParameters; import androidx.work.WorkerParameters;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.LocalBroadcastManager; import org.tasks.LocalBroadcastManager;
import org.tasks.analytics.Tracker;
import org.tasks.caldav.CaldavSynchronizer; import org.tasks.caldav.CaldavSynchronizer;
import org.tasks.gtasks.GoogleTaskSynchronizer; import org.tasks.gtasks.GoogleTaskSynchronizer;
import org.tasks.injection.InjectingWorker; import org.tasks.injection.InjectingWorker;
import org.tasks.injection.JobComponent; import org.tasks.injection.JobComponent;
import org.tasks.preferences.Preferences; import org.tasks.preferences.Preferences;
import timber.log.Timber;
public class SyncWork extends InjectingWorker { public class SyncWork extends InjectingWorker {
@ -20,6 +20,7 @@ public class SyncWork extends InjectingWorker {
@Inject GoogleTaskSynchronizer googleTaskSynchronizer; @Inject GoogleTaskSynchronizer googleTaskSynchronizer;
@Inject LocalBroadcastManager localBroadcastManager; @Inject LocalBroadcastManager localBroadcastManager;
@Inject Preferences preferences; @Inject Preferences preferences;
@Inject Tracker tracker;
public SyncWork(@NonNull Context context, @NonNull WorkerParameters workerParams) { public SyncWork(@NonNull Context context, @NonNull WorkerParameters workerParams) {
super(context, workerParams); super(context, workerParams);
@ -40,7 +41,7 @@ public class SyncWork extends InjectingWorker {
caldavSynchronizer.sync(); caldavSynchronizer.sync();
googleTaskSynchronizer.sync(); googleTaskSynchronizer.sync();
} catch (Exception e) { } catch (Exception e) {
Timber.e(e); tracker.reportException(e);
} finally { } finally {
preferences.setSyncOngoing(false); preferences.setSyncOngoing(false);
localBroadcastManager.broadcastRefresh(); localBroadcastManager.broadcastRefresh();

Loading…
Cancel
Save