Skip to content

Commit 78b2f28

Browse files
committed
backwards compatible with legacy builds from analytics-android
1 parent d6ab914 commit 78b2f28

File tree

2 files changed

+37
-3
lines changed
  • android/src/main/java/com/segment/analytics/kotlin/android
  • core/src/main/java/com/segment/analytics/kotlin/core/utilities

2 files changed

+37
-3
lines changed

android/src/main/java/com/segment/analytics/kotlin/android/Storage.kt

Lines changed: 36 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import com.segment.analytics.kotlin.android.utilities.AndroidKVS
66
import com.segment.analytics.kotlin.core.Analytics
77
import com.segment.analytics.kotlin.core.Storage
88
import com.segment.analytics.kotlin.core.StorageProvider
9+
import com.segment.analytics.kotlin.core.utilities.EventStream
910
import com.segment.analytics.kotlin.core.utilities.FileEventStream
11+
import com.segment.analytics.kotlin.core.utilities.KVS
1012
import com.segment.analytics.kotlin.core.utilities.StorageImpl
1113
import kotlinx.coroutines.CoroutineDispatcher
1214
import sovran.kotlin.Store
@@ -19,7 +21,7 @@ class AndroidStorage(
1921
private val ioDispatcher: CoroutineDispatcher,
2022
directory: String? = null,
2123
subject: String? = null
22-
) : StorageImpl(
24+
) : AndroidStorageImpl(
2325
propertiesFile = AndroidKVS(context.getSharedPreferences("analytics-android-$writeKey", Context.MODE_PRIVATE)),
2426
eventStream = FileEventStream(context.getDir(directory ?: "segment-disk-queue", Context.MODE_PRIVATE)),
2527
store = store,
@@ -28,6 +30,38 @@ class AndroidStorage(
2830
ioDispatcher = ioDispatcher
2931
)
3032

33+
open class AndroidStorageImpl(
34+
propertiesFile: KVS,
35+
eventStream: EventStream,
36+
store: Store,
37+
writeKey: String,
38+
fileIndexKey: String,
39+
ioDispatcher: CoroutineDispatcher
40+
) : StorageImpl(
41+
propertiesFile = propertiesFile,
42+
eventStream = eventStream,
43+
store = store,
44+
writeKey = writeKey,
45+
fileIndexKey = fileIndexKey,
46+
ioDispatcher = ioDispatcher
47+
) {
48+
override fun read(key: Storage.Constants): String? {
49+
return if (key == Storage.Constants.LegacyAppBuild) {
50+
// The legacy app build number was stored as an integer so we have to get it
51+
// as an integer and convert it to a String.
52+
val noBuild = -1
53+
val build = propertiesFile.get(key.rawVal, noBuild)
54+
if (build != noBuild) {
55+
build.toString()
56+
} else {
57+
null
58+
}
59+
} else {
60+
super.read(key)
61+
}
62+
}
63+
}
64+
3165
object AndroidStorageProvider : StorageProvider {
3266
override fun createStorage(vararg params: Any): Storage {
3367

@@ -51,6 +85,6 @@ object AndroidStorageProvider : StorageProvider {
5185

5286
val propertiesFile = AndroidKVS(sharedPreferences)
5387
val eventStream = FileEventStream(eventDirectory)
54-
return StorageImpl(propertiesFile, eventStream, analytics.store, config.writeKey, fileIndexKey, analytics.fileIODispatcher)
88+
return AndroidStorageImpl(propertiesFile, eventStream, analytics.store, config.writeKey, fileIndexKey, analytics.fileIODispatcher)
5589
}
5690
}

core/src/main/java/com/segment/analytics/kotlin/core/utilities/StorageImpl.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import java.io.InputStream
2424
* for events storage
2525
*/
2626
open class StorageImpl(
27-
internal val propertiesFile: KVS,
27+
val propertiesFile: KVS,
2828
internal val eventStream: EventStream,
2929
private val store: Store,
3030
private val writeKey: String,

0 commit comments

Comments
 (0)