From 072c504d2b70bcd642d3db05a3891d4bbc0b8d36 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafa=C5=82=20Borcz?= Date: Wed, 13 Jun 2018 03:07:34 +0200 Subject: [PATCH] Clean data user on bad user credentials (#138) --- .../java/io/github/wulkanowy/data/Repository.java | 6 ++++++ .../io/github/wulkanowy/data/RepositoryContract.java | 2 ++ .../io/github/wulkanowy/data/db/dao/DbContract.java | 2 ++ .../io/github/wulkanowy/data/db/dao/DbRepository.java | 11 +++++++++++ .../wulkanowy/data/db/shared/SharedPrefContract.java | 2 ++ .../data/db/shared/SharedPrefRepository.java | 6 ++++++ .../io/github/wulkanowy/services/jobs/SyncJob.java | 7 +++++++ 7 files changed, 36 insertions(+) diff --git a/app/src/main/java/io/github/wulkanowy/data/Repository.java b/app/src/main/java/io/github/wulkanowy/data/Repository.java index 1516c027..ac6a8b42 100644 --- a/app/src/main/java/io/github/wulkanowy/data/Repository.java +++ b/app/src/main/java/io/github/wulkanowy/data/Repository.java @@ -47,4 +47,10 @@ public class Repository implements RepositoryContract { public SyncContract getSyncRepo() { return synchronization; } + + @Override + public void cleanAllData() { + sharedPref.cleanSharedPref(); + database.recreateDatabase(); + } } diff --git a/app/src/main/java/io/github/wulkanowy/data/RepositoryContract.java b/app/src/main/java/io/github/wulkanowy/data/RepositoryContract.java index ffcfb046..e4dbd26b 100644 --- a/app/src/main/java/io/github/wulkanowy/data/RepositoryContract.java +++ b/app/src/main/java/io/github/wulkanowy/data/RepositoryContract.java @@ -17,4 +17,6 @@ public interface RepositoryContract { DbContract getDbRepo(); SyncContract getSyncRepo(); + + void cleanAllData(); } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java index 34541d3e..f32884f5 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbContract.java @@ -30,4 +30,6 @@ public interface DbContract { long getCurrentSemesterId(); int getCurrentSemesterName(); + + void recreateDatabase(); } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java index 43eee87e..2c92c55d 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java +++ b/app/src/main/java/io/github/wulkanowy/data/db/dao/DbRepository.java @@ -1,9 +1,12 @@ package io.github.wulkanowy.data.db.dao; +import org.greenrobot.greendao.database.Database; + import java.util.List; import javax.inject.Inject; +import io.github.wulkanowy.data.db.dao.entities.DaoMaster; import io.github.wulkanowy.data.db.dao.entities.DaoSession; import io.github.wulkanowy.data.db.dao.entities.DiaryDao; import io.github.wulkanowy.data.db.dao.entities.Grade; @@ -109,4 +112,12 @@ public class DbRepository implements DbContract { SemesterDao.Properties.Current.eq(true) ).unique(); } + + @Override + public void recreateDatabase() { + Database database = daoSession.getDatabase(); + + DaoMaster.dropAllTables(database, true); + DaoMaster.createAllTables(database, true); + } } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefContract.java b/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefContract.java index b9d3fd14..61795f64 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefContract.java +++ b/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefContract.java @@ -28,4 +28,6 @@ public interface SharedPrefContract { boolean isServicesEnable(); boolean isNotifyEnable(); + + void cleanSharedPref(); } diff --git a/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefRepository.java b/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefRepository.java index 11f43ca3..ca6624a8 100644 --- a/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefRepository.java +++ b/app/src/main/java/io/github/wulkanowy/data/db/shared/SharedPrefRepository.java @@ -88,4 +88,10 @@ public class SharedPrefRepository implements SharedPrefContract { public boolean isMobileDisable() { return settingsSharedPref.getBoolean(SettingsFragment.SHARED_KEY_SERVICES_MOBILE_DISABLED, false); } + + @Override + public void cleanSharedPref() { + appSharedPref.edit().clear().apply(); + settingsSharedPref.edit().clear().apply(); + } } 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 b2136391..d0fc73d6 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 @@ -21,6 +21,7 @@ import javax.inject.Inject; import dagger.android.AndroidInjection; import io.github.wulkanowy.R; +import io.github.wulkanowy.api.login.BadCredentialsException; import io.github.wulkanowy.data.RepositoryContract; import io.github.wulkanowy.data.db.dao.entities.Grade; import io.github.wulkanowy.data.sync.NotRegisteredUserException; @@ -82,6 +83,12 @@ public class SyncJob extends SimpleJobService { logError(e); stop(getApplicationContext()); + return JobService.RESULT_FAIL_NORETRY; + } catch (BadCredentialsException e) { + logError(e); + repository.cleanAllData(); + stop(getApplicationContext()); + return JobService.RESULT_FAIL_NORETRY; } catch (Exception e) { logError(e);