From 54e6aee82e79efb40fa0a7904a7070e9bd3c2f66 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 16 May 2018 20:43:29 +0200 Subject: [PATCH] Stop SyncJob if user is not registered in app (#113) --- .../io/github/wulkanowy/data/sync/AccountSync.java | 4 ++-- .../data/sync/NotRegisteredUserException.java | 8 ++++++++ .../io/github/wulkanowy/services/jobs/SyncJob.java | 13 +++++++++++-- .../github/wulkanowy/ui/splash/SplashActivity.java | 6 ------ .../github/wulkanowy/ui/splash/SplashContract.java | 2 -- .../github/wulkanowy/ui/splash/SplashPresenter.java | 1 - 6 files changed, 21 insertions(+), 13 deletions(-) create mode 100644 app/src/main/java/io/github/wulkanowy/data/sync/NotRegisteredUserException.java diff --git a/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java b/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java index d701edc0b..a79540a66 100644 --- a/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java +++ b/app/src/main/java/io/github/wulkanowy/data/sync/AccountSync.java @@ -118,12 +118,12 @@ public class AccountSync { daoSession.getSemesterDao().insertInTx(semesterList); } - public void initLastUser() throws IOException, CryptoException { + public void initLastUser() throws CryptoException { long userId = sharedPref.getCurrentUserId(); if (userId == 0) { - throw new IOException("Can't find saved user"); + throw new NotRegisteredUserException("Can't find user id in SharedPreferences"); } LogUtils.debug("Initialization current user id=" + userId); diff --git a/app/src/main/java/io/github/wulkanowy/data/sync/NotRegisteredUserException.java b/app/src/main/java/io/github/wulkanowy/data/sync/NotRegisteredUserException.java new file mode 100644 index 000000000..ddba1a216 --- /dev/null +++ b/app/src/main/java/io/github/wulkanowy/data/sync/NotRegisteredUserException.java @@ -0,0 +1,8 @@ +package io.github.wulkanowy.data.sync; + +public class NotRegisteredUserException extends RuntimeException { + + public NotRegisteredUserException(String message) { + super(message); + } +} diff --git a/app/src/main/java/io/github/wulkanowy/services/jobs/SyncJob.java b/app/src/main/java/io/github/wulkanowy/services/jobs/SyncJob.java index 7ac911145..ab79034f0 100644 --- a/app/src/main/java/io/github/wulkanowy/services/jobs/SyncJob.java +++ b/app/src/main/java/io/github/wulkanowy/services/jobs/SyncJob.java @@ -24,6 +24,7 @@ import io.github.wulkanowy.R; import io.github.wulkanowy.WulkanowyApp; import io.github.wulkanowy.data.RepositoryContract; import io.github.wulkanowy.data.db.dao.entities.Grade; +import io.github.wulkanowy.data.sync.NotRegisteredUserException; import io.github.wulkanowy.services.notifies.GradeNotify; import io.github.wulkanowy.ui.main.MainActivity; import io.github.wulkanowy.utils.LogUtils; @@ -74,9 +75,12 @@ public class SyncJob extends SimpleJobService { showNotification(); } return JobService.RESULT_SUCCESS; + } catch (NotRegisteredUserException e) { + logError(e); + stop(getApplicationContext()); + return JobService.RESULT_FAIL_NORETRY; } catch (Exception e) { - Crashlytics.logException(e); - LogUtils.error("During background synchronization an error occurred", e); + logError(e); return JobService.RESULT_FAIL_RETRY; } } @@ -116,4 +120,9 @@ public class SyncJob extends SimpleJobService { gradeList.size(), gradeList.size()); } } + + private void logError(Exception e) { + Crashlytics.logException(e); + LogUtils.error("During background synchronization an error occurred", e); + } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java index cbed56d25..53994a16e 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java +++ b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashActivity.java @@ -5,7 +5,6 @@ import android.os.Bundle; import javax.inject.Inject; import butterknife.ButterKnife; -import io.github.wulkanowy.services.jobs.SyncJob; import io.github.wulkanowy.services.notifies.NotificationService; import io.github.wulkanowy.ui.base.BaseActivity; import io.github.wulkanowy.ui.login.LoginActivity; @@ -48,9 +47,4 @@ public class SplashActivity extends BaseActivity implements SplashContract.View public void cancelNotifications() { new NotificationService(getApplicationContext()).cancelAll(); } - - @Override - public void stopSyncService() { - SyncJob.stop(getApplicationContext()); - } } diff --git a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashContract.java b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashContract.java index f6fc23a6d..58d4447c8 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashContract.java +++ b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashContract.java @@ -13,8 +13,6 @@ public interface SplashContract { void openMainActivity(); void cancelNotifications(); - - void stopSyncService(); } @PerActivity diff --git a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashPresenter.java b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashPresenter.java index 14f696a5b..8d20226fc 100644 --- a/app/src/main/java/io/github/wulkanowy/ui/splash/SplashPresenter.java +++ b/app/src/main/java/io/github/wulkanowy/ui/splash/SplashPresenter.java @@ -24,7 +24,6 @@ public class SplashPresenter extends BasePresenter getView().openMainActivity(); } else { getView().openLoginActivity(); - getView().stopSyncService(); } } }