-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: include persistent visitor id in context (#130)
* feat: include persistent visitor id in context * fix the fake shared preferences * fixup! fix the fake shared preferences --------- Co-authored-by: vahid torkaman <vahidt@spotify.com>
- Loading branch information
1 parent
2fc83b2
commit 5d4ff21
Showing
5 changed files
with
156 additions
and
4 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
22 changes: 22 additions & 0 deletions
22
Provider/src/main/java/com/spotify/confidence/VisitorUtil.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.spotify.confidence | ||
|
||
import android.content.Context | ||
import java.util.UUID | ||
|
||
internal const val SHARED_PREFS_NAME = "confidence-visitor" | ||
internal const val VISITOR_ID_SHARED_PREFS_KEY = "visitorId" | ||
internal const val DEFAULT_VALUE = "unable-to-read" | ||
|
||
internal object VisitorUtil { | ||
fun getId(context: Context): String { | ||
return with(context.getSharedPreferences(SHARED_PREFS_NAME, Context.MODE_PRIVATE)) { | ||
if (contains(VISITOR_ID_SHARED_PREFS_KEY)) { | ||
getString(VISITOR_ID_SHARED_PREFS_KEY, DEFAULT_VALUE) ?: DEFAULT_VALUE | ||
} else { | ||
val visitorId = UUID.randomUUID().toString() | ||
edit().putString(VISITOR_ID_SHARED_PREFS_KEY, visitorId).apply() | ||
visitorId | ||
} | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
97 changes: 97 additions & 0 deletions
97
Provider/src/test/java/com/spotify/confidence/InMemorySharedPreferences.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,97 @@ | ||
package com.spotify.confidence | ||
|
||
import android.content.SharedPreferences | ||
|
||
internal class InMemorySharedPreferences : SharedPreferences { | ||
private var visitorId: String = "" | ||
override fun getAll(): MutableMap<String, *> { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun getString(key: String?, default: String?): String? = | ||
if (key == VISITOR_ID_SHARED_PREFS_KEY) { | ||
visitorId | ||
} else { | ||
default | ||
} | ||
|
||
override fun getStringSet(p0: String?, p1: MutableSet<String>?): MutableSet<String>? { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun getInt(p0: String?, p1: Int): Int { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun getLong(p0: String?, p1: Long): Long { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun getFloat(p0: String?, p1: Float): Float { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun getBoolean(p0: String?, p1: Boolean): Boolean { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun contains(key: String?) = if (key == VISITOR_ID_SHARED_PREFS_KEY) { | ||
visitorId.isNotEmpty() | ||
} else { | ||
false | ||
} | ||
|
||
override fun edit(): SharedPreferences.Editor = object : SharedPreferences.Editor { | ||
private var visitorId: String = "" | ||
override fun putString(key: String?, value: String?): SharedPreferences.Editor { | ||
if (key == VISITOR_ID_SHARED_PREFS_KEY) { | ||
visitorId = value ?: "" | ||
} | ||
return this | ||
} | ||
|
||
override fun putStringSet(p0: String?, p1: MutableSet<String>?): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun putInt(p0: String?, p1: Int): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun putLong(p0: String?, p1: Long): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun putFloat(p0: String?, p1: Float): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun putBoolean(p0: String?, p1: Boolean): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun remove(p0: String?): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun clear(): SharedPreferences.Editor { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun commit(): Boolean { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun apply() { | ||
this@InMemorySharedPreferences.visitorId = this.visitorId | ||
} | ||
} | ||
|
||
override fun registerOnSharedPreferenceChangeListener(p0: SharedPreferences.OnSharedPreferenceChangeListener?) { | ||
TODO("Not yet implemented") | ||
} | ||
|
||
override fun unregisterOnSharedPreferenceChangeListener(p0: SharedPreferences.OnSharedPreferenceChangeListener?) { | ||
TODO("Not yet implemented") | ||
} | ||
} |