diff --git a/library/src/main/java/io/constructor/core/Constants.kt b/library/src/main/java/io/constructor/core/Constants.kt index 714ee902..6b5d0949 100755 --- a/library/src/main/java/io/constructor/core/Constants.kt +++ b/library/src/main/java/io/constructor/core/Constants.kt @@ -24,6 +24,7 @@ class Constants { const val NUM_RESULTS = "num_results_" const val GROUP_ID = "group[group_id]" const val GROUP_DISPLAY_NAME = "group[display_name]" + const val USER_ID = "ui" } object QueryValues { diff --git a/library/src/main/java/io/constructor/core/ConstructorIo.kt b/library/src/main/java/io/constructor/core/ConstructorIo.kt index 44e98f21..99ee9117 100755 --- a/library/src/main/java/io/constructor/core/ConstructorIo.kt +++ b/library/src/main/java/io/constructor/core/ConstructorIo.kt @@ -32,6 +32,12 @@ object ConstructorIo { private lateinit var context: Context private var disposable = CompositeDisposable() + var userId: String? + get() = configMemoryHolder.userId + set(value) { + configMemoryHolder.userId = value + } + internal val component: AppComponent by lazy { DaggerAppComponent.builder() .appModule(AppModule(context)) diff --git a/library/src/main/java/io/constructor/data/interceptor/TokenInterceptor.kt b/library/src/main/java/io/constructor/data/interceptor/TokenInterceptor.kt index fe2151f0..98e5cc09 100755 --- a/library/src/main/java/io/constructor/data/interceptor/TokenInterceptor.kt +++ b/library/src/main/java/io/constructor/data/interceptor/TokenInterceptor.kt @@ -23,6 +23,9 @@ class TokenInterceptor(val context: Context, private val preferencesHelper: Pref builder.addQueryParameter(it.first, it.second) } } + configMemoryHolder.userId?.let { + builder.addQueryParameter(Constants.QueryConstants.USER_ID, it) + } val url = builder.build() request = request.newBuilder().url(url).build() return chain.proceed(request) diff --git a/library/src/main/java/io/constructor/data/memory/ConfigMemoryHolder.kt b/library/src/main/java/io/constructor/data/memory/ConfigMemoryHolder.kt index 71f516d1..67b89d86 100644 --- a/library/src/main/java/io/constructor/data/memory/ConfigMemoryHolder.kt +++ b/library/src/main/java/io/constructor/data/memory/ConfigMemoryHolder.kt @@ -33,4 +33,6 @@ class ConfigMemoryHolder @Inject constructor() { } var autocompleteResultCount: Map? = null + + var userId: String? = null } \ No newline at end of file diff --git a/library/src/test/java/io/constructor/core/ConstructorIoTest.kt b/library/src/test/java/io/constructor/core/ConstructorIoTest.kt index 949d884c..b7656db5 100755 --- a/library/src/test/java/io/constructor/core/ConstructorIoTest.kt +++ b/library/src/test/java/io/constructor/core/ConstructorIoTest.kt @@ -212,6 +212,7 @@ class ConstructorIoTest { every { pref.token } returns "123" every { pref.id } returns "1" every { configMemoryHolder.testCellParams = any() } just Runs + every { configMemoryHolder.userId } returns "uid" every { configMemoryHolder.autocompleteResultCount } returns mapOf(Constants.QueryValues.SEARCH_SUGGESTIONS to 10, Constants.QueryValues.PRODUCTS to 0) every { configMemoryHolder.testCellParams } returns listOf("ef-1" to "2", "ef-3" to "4") mockServer.start() @@ -220,6 +221,7 @@ class ConstructorIoTest { client.newCall(Request.Builder().url(mockServer.url("/")).build()).execute() var recordedRequest = mockServer.takeRequest() assert(recordedRequest.path.contains("ef-1=2")) + assert(recordedRequest.path.contains("ui=uid")) } @Test diff --git a/sample/src/main/java/io/constructor/sample/SampleApp.kt b/sample/src/main/java/io/constructor/sample/SampleApp.kt index 5bfacc5c..03a9ff29 100755 --- a/sample/src/main/java/io/constructor/sample/SampleApp.kt +++ b/sample/src/main/java/io/constructor/sample/SampleApp.kt @@ -10,5 +10,6 @@ class SampleApp : Application() { super.onCreate() ConstructorIo.init(this, ConstructorIoConfig("key_OucJxxrfiTVUQx0C", testCells = listOf("ab" to "cd", "11" to "22"))) + ConstructorIo.userId = "uid" } } \ No newline at end of file