Fix changelog version logic

This commit is contained in:
moezbhatti
2019-09-10 00:02:02 -04:00
parent 12dc500eed
commit 6614089486
5 changed files with 27 additions and 28 deletions
@@ -19,6 +19,7 @@
package com.moez.QKSMS.manager
import android.content.Context
import com.moez.QKSMS.common.util.extensions.versionCode
import com.moez.QKSMS.util.Preferences
import com.squareup.moshi.Json
import com.squareup.moshi.Moshi
@@ -40,19 +41,7 @@ class ChangelogManagerImpl @Inject constructor(
private val prefs: Preferences
) : ChangelogManager {
private val oldVersion: Int get() = prefs.changelogVersion.get()
private val versionCode: Int get() = context.packageManager.getPackageInfo(context.packageName, 0).versionCode
override fun didUpdate(): Boolean {
if (oldVersion == 0) {
prefs.changelogVersion.set(versionCode)
}
return when {
oldVersion != versionCode -> true
else -> false
}
}
override fun didUpdate(): Boolean = prefs.changelogVersion.get() != context.versionCode
override fun getChangelog(): Single<ChangelogManager.Changelog> {
val url = "https://firestore.googleapis.com/v1/projects/qksms-app/databases/(default)/documents/changelog"
@@ -74,7 +63,10 @@ class ChangelogManagerImpl @Inject constructor(
.map { response ->
response.documents
.sortedBy { document -> document.fields.versionCode.value }
.filter { document -> document.fields.versionCode.value.toInt() in (oldVersion + 1)..versionCode }
.filter { document ->
val range = (prefs.changelogVersion.get() + 1)..context.versionCode
document.fields.versionCode.value.toInt() in range
}
}
.map { documents ->
val added = documents.fold(listOf<String>()) { acc, document ->
@@ -93,7 +85,7 @@ class ChangelogManagerImpl @Inject constructor(
}
override fun markChangelogSeen() {
prefs.changelogVersion.set(versionCode)
prefs.changelogVersion.set(context.versionCode)
}
private data class ChangelogResponse(
@@ -20,6 +20,7 @@ package com.moez.QKSMS.migration
import android.content.Context
import com.moez.QKSMS.blocking.QksmsBlockingClient
import com.moez.QKSMS.common.util.extensions.versionCode
import com.moez.QKSMS.repository.ConversationRepository
import com.moez.QKSMS.util.Preferences
import kotlinx.coroutines.GlobalScope
@@ -34,17 +35,18 @@ class QkMigration @Inject constructor(
) {
init {
val oldVersion = prefs.version.get()
val newVersion = context.packageManager.getPackageInfo(context.packageName, 0).versionCode
GlobalScope.launch {
val oldVersion = prefs.version.get()
if (oldVersion < 2199) {
upgradeTo370()
if (oldVersion < 2199) {
upgradeTo370()
}
prefs.version.set(context.versionCode)
}
prefs.changelogVersion.set(newVersion)
}
private fun upgradeTo370() = GlobalScope.launch {
private fun upgradeTo370() {
// Migrate changelog version
prefs.changelogVersion.set(prefs.version.get())
@@ -38,8 +38,9 @@ class GlideAppModule : AppGlideModule() {
override fun registerComponents(context: Context, glide: Glide, registry: Registry) {
// TODO use DI to create the ContactImageLoader.Factory
registry.append(String::class.java, InputStream::class.java, ContactImageLoader.Factory(context,
Preferences(RxSharedPreferences.create(PreferenceManager.getDefaultSharedPreferences(context)))))
val rxPrefs = RxSharedPreferences.create(PreferenceManager.getDefaultSharedPreferences(context))
val prefs = Preferences(context, rxPrefs)
registry.append(String::class.java, InputStream::class.java, ContactImageLoader.Factory(context, prefs))
}
}