Skip to content

Commit 2c3a347

Browse files
committed
fix(android): move from ReactApplicationContext to Context to use the library from native code
1 parent 3a5ff03 commit 2c3a347

File tree

2 files changed

+19
-14
lines changed

2 files changed

+19
-14
lines changed

android/src/main/java/com/mattermost/networkclient/ApiClientModuleImpl.kt

Lines changed: 17 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ import android.content.Context
44
import android.content.SharedPreferences
55
import androidx.datastore.core.DataStore
66
import androidx.datastore.preferences.core.Preferences
7+
import androidx.datastore.preferences.core.edit
78
import androidx.datastore.preferences.core.stringPreferencesKey
89
import androidx.datastore.preferences.preferencesDataStore
9-
import androidx.datastore.preferences.core.edit
1010
import com.facebook.react.bridge.Promise
1111
import com.facebook.react.bridge.ReactApplicationContext
1212
import com.facebook.react.bridge.ReadableMap
@@ -28,11 +28,11 @@ import java.io.FileOutputStream
2828
import java.io.IOException
2929
import java.io.InputStream
3030

31-
class ApiClientModuleImpl(reactApplicationContext: ReactApplicationContext) {
31+
class ApiClientModuleImpl(appContext: Context) {
3232
companion object {
3333
const val NAME = "ApiClient"
3434

35-
lateinit var context: ReactApplicationContext
35+
lateinit var context: Context
3636
private val clients = mutableMapOf<HttpUrl, NetworkClient>()
3737
private val calls = mutableMapOf<String, Call>()
3838
private lateinit var sharedPreferences: SharedPreferences
@@ -93,17 +93,18 @@ class ApiClientModuleImpl(reactApplicationContext: ReactApplicationContext) {
9393
}
9494

9595
internal fun sendJSEvent(eventName: String, data: WritableMap?) {
96-
if (context.hasActiveReactInstance()) {
97-
context.emitDeviceEvent(eventName, data)
96+
val reactApplicationContext = context as? ReactApplicationContext
97+
if (reactApplicationContext?.hasActiveReactInstance() == true) {
98+
reactApplicationContext.emitDeviceEvent(eventName, data)
9899

99100
}
100101
}
101102

102-
private fun setCtx(reactContext: ReactApplicationContext) {
103+
private fun setCtx(reactContext: Context) {
103104
context = reactContext
104105
}
105106

106-
private fun migrateSharedPreferences(reactContext: ReactApplicationContext) {
107+
private fun migrateSharedPreferences(reactContext: Context) {
107108
val sharedPreferences = reactContext.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_PRIVATE)
108109

109110
if (sharedPreferences.all.isNotEmpty()) {
@@ -122,16 +123,19 @@ class ApiClientModuleImpl(reactApplicationContext: ReactApplicationContext) {
122123
}
123124
}
124125

125-
private fun setCookieJar(reactContext: ReactApplicationContext) {
126-
val cookieHandler = ForwardingCookieHandler(reactContext)
127-
cookieJar.setCookieJar(JavaNetCookieJar(cookieHandler))
126+
private fun setCookieJar(reactContext: Context) {
127+
val reactApplicationContext = reactContext as? ReactApplicationContext
128+
if (reactApplicationContext?.hasActiveReactInstance() == true) {
129+
val cookieHandler = ForwardingCookieHandler(reactApplicationContext)
130+
cookieJar.setCookieJar(JavaNetCookieJar(cookieHandler))
131+
}
128132
}
129133
}
130134

131135
init {
132-
setCtx(reactApplicationContext)
133-
migrateSharedPreferences(reactApplicationContext)
134-
setCookieJar(reactApplicationContext)
136+
setCtx(appContext)
137+
migrateSharedPreferences(appContext)
138+
setCookieJar(appContext)
135139
}
136140

137141
fun createClientFor(baseUrl: String, options: ReadableMap, promise: Promise) {

android/src/main/java/com/mattermost/networkclient/NetworkClient.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.mattermost.networkclient
22

33
import android.annotation.SuppressLint
4+
import android.content.Context
45
import android.net.Uri
56
import android.util.Base64
67
import android.webkit.CookieManager
@@ -43,7 +44,7 @@ import kotlin.reflect.KProperty
4344

4445
const val CERTIFICATES_PATH = "certs"
4546

46-
internal class NetworkClient(private val context: ReactApplicationContext, private val baseUrl: HttpUrl? = null, options: ReadableMap? = null, cookieJar: CookieJar? = null) {
47+
internal class NetworkClient(private val context: Context, private val baseUrl: HttpUrl? = null, options: ReadableMap? = null, cookieJar: CookieJar? = null) {
4748
private var okHttpClient: OkHttpClient
4849
private var webSocketUri: URI? = null
4950

0 commit comments

Comments
 (0)