diff --git a/library/src/main/java/org/xmtp/android/library/ApiClient.kt b/library/src/main/java/org/xmtp/android/library/ApiClient.kt index f8b8d9b9b..1f4fc204d 100644 --- a/library/src/main/java/org/xmtp/android/library/ApiClient.kt +++ b/library/src/main/java/org/xmtp/android/library/ApiClient.kt @@ -90,7 +90,7 @@ data class GRPCApiClient( private val channel: ManagedChannel = Grpc.newChannelBuilderForAddress( - environment.rawValue, + environment.getValue(), 5556, if (secure) { TlsChannelCredentials.create() diff --git a/library/src/main/java/org/xmtp/android/library/Client.kt b/library/src/main/java/org/xmtp/android/library/Client.kt index d5df1555b..cd14aeedc 100644 --- a/library/src/main/java/org/xmtp/android/library/Client.kt +++ b/library/src/main/java/org/xmtp/android/library/Client.kt @@ -324,7 +324,7 @@ class Client() { createClient( logger = logger, - host = "http://10.0.2.2:5556", + host = "http://${options.api.env.getValue()}:5556", isSecure = false, db = dbPath, encryptionKey = retrievedKey.encoded, diff --git a/library/src/main/java/org/xmtp/android/library/XMTPEnvironment.kt b/library/src/main/java/org/xmtp/android/library/XMTPEnvironment.kt index c01cf791f..a24779d32 100644 --- a/library/src/main/java/org/xmtp/android/library/XMTPEnvironment.kt +++ b/library/src/main/java/org/xmtp/android/library/XMTPEnvironment.kt @@ -3,11 +3,27 @@ package org.xmtp.android.library enum class XMTPEnvironment(val rawValue: String) { DEV("dev.xmtp.network"), PRODUCTION("production.xmtp.network"), - LOCAL("10.0.2.2"), - ; + LOCAL("10.0.2.2") { + override fun withValue(value: String): XMTPEnvironment { + return LOCAL.apply { customValue = value } + } + }; + + private var customValue: String = "" + + open fun withValue(value: String): XMTPEnvironment { + return this + } companion object { - operator fun invoke(rawValue: String) = - XMTPEnvironment.values().firstOrNull { it.rawValue == rawValue } + operator fun invoke(rawValue: String): XMTPEnvironment { + return XMTPEnvironment.values().firstOrNull { it.rawValue == rawValue } + ?: LOCAL.withValue(rawValue) + } + } + + // This function returns the actual raw value for the enum, handling the CUSTOM case. + fun getValue(): String { + return if (this == LOCAL && customValue.isNotEmpty()) customValue else rawValue } }