diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 031b6d0a..641a2d02 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -20,12 +20,11 @@ import net.pokeranalytics.android.util.billing.AppGuard import timber.log.Timber - class PokerAnalyticsApplication : Application() { override fun onCreate() { super.onCreate() - UserDefaults.init(this) + UserDefaults.init(this) // AppGuard / Billing services AppGuard.load(this.applicationContext) @@ -64,9 +63,7 @@ class PokerAnalyticsApplication : Application() { this.createFakeSessions() } - - Patcher.patchBreaks() - Patcher.patchDefaultTransactionTypes(this.applicationContext) + Patcher.patchAll(this.applicationContext) } /** diff --git a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt index 3b32fc3a..989aa48b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/migrations/Patcher.kt @@ -5,12 +5,24 @@ import io.realm.Realm import net.pokeranalytics.android.model.filter.Query import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.util.Preferences class Patcher { companion object { - fun patchBreaks() { + fun patchAll(context: Context) { + + Preferences.executeOnce(Preferences.Keys.PATCH_BREAK, context) { + patchBreaks() + } + Preferences.executeOnce(Preferences.Keys.PATCH_TRANSACTION_TYPES_NAMES, context) { + patchDefaultTransactionTypes(context) + } + + } + + private fun patchBreaks() { val realm = Realm.getDefaultInstance() val sets = realm.where(SessionSet::class.java).findAll() @@ -32,7 +44,7 @@ class Patcher { } - fun patchDefaultTransactionTypes(context: Context) { + private fun patchDefaultTransactionTypes(context: Context) { val realm = Realm.getDefaultInstance() realm.executeTransaction { val tts = realm.where(TransactionType::class.java).findAll() diff --git a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt index 0a84d9f2..5bf4524b 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Preferences.kt @@ -6,13 +6,17 @@ import java.util.* class Preferences { + private val ONCE_PREFIX = "singleExecution_" + enum class Keys(var identifier: String) { CURRENCY_CODE("CurrencyCode"), LOCALE_CODE("LocaleCode"), FIRST_LAUNCH("firstLaunch"), STOP_SHOWING_DISCLAIMER("stopShowingDisclaimer"), ACTIVE_FILTER_ID("ActiveFilterId"), - LATEST_PURCHASE("latestPurchase") + LATEST_PURCHASE("latestPurchase"), + PATCH_BREAK("patchBreaks"), + PATCH_TRANSACTION_TYPES_NAMES("patchTransactionTypesNames") } companion object { @@ -99,6 +103,13 @@ class Preferences { return !getBoolean(Keys.STOP_SHOWING_DISCLAIMER, context) } + fun executeOnce(key: Keys, context: Context, executable: () -> Unit) { + if (!getBoolean(key, context)) { + executable.invoke() + setBoolean(key, true, context) + } + } + } }