@hot-updater/react-native 0.25.6 → 0.25.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/hotupdater/BundleFileStorageService.kt +1 -1
- package/android/src/main/java/com/hotupdater/HotUpdaterImpl.kt +6 -11
- package/android/src/newarch/HotUpdater.kt +106 -0
- package/android/src/newarch/HotUpdaterModule.kt +1 -2
- package/android/src/newarch/ReactHostHolder.kt +40 -0
- package/android/src/newarch/ReactIntegrationManager.kt +118 -51
- package/android/src/{main/java/com/hotupdater → oldarch}/HotUpdater.kt +15 -14
- package/android/src/oldarch/HotUpdaterModule.kt +1 -2
- package/android/src/oldarch/ReactIntegrationManager.kt +60 -27
- package/ios/HotUpdater/Internal/HotUpdater.mm +3 -18
- package/lib/commonjs/index.js +0 -8
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/native.js +1 -1
- package/lib/commonjs/native.js.map +1 -1
- package/lib/commonjs/store.js +5 -0
- package/lib/commonjs/store.js.map +1 -1
- package/lib/module/index.js +0 -8
- package/lib/module/index.js.map +1 -1
- package/lib/module/native.js +1 -1
- package/lib/module/native.js.map +1 -1
- package/lib/module/store.js +5 -0
- package/lib/module/store.js.map +1 -1
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/native.d.ts.map +1 -1
- package/lib/typescript/commonjs/store.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/native.d.ts.map +1 -1
- package/lib/typescript/module/store.d.ts.map +1 -1
- package/package.json +6 -6
- package/src/index.ts +0 -6
- package/src/native.ts +2 -1
- package/src/store.ts +6 -0
|
@@ -158,7 +158,7 @@ class BundleFileStorageService(
|
|
|
158
158
|
// Read metadata without validation to get stored isolationKey
|
|
159
159
|
val jsonString = metadataFile.readText()
|
|
160
160
|
val json = org.json.JSONObject(jsonString)
|
|
161
|
-
val storedIsolationKey = json.
|
|
161
|
+
val storedIsolationKey = if (json.has("isolationKey")) json.getString("isolationKey") else null
|
|
162
162
|
|
|
163
163
|
if (storedIsolationKey != null && storedIsolationKey != isolationKey) {
|
|
164
164
|
// isolationKey changed - migration needed
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
package com.hotupdater
|
|
2
2
|
|
|
3
|
-
import android.app.Activity
|
|
4
3
|
import android.content.Context
|
|
5
4
|
import android.util.Log
|
|
6
5
|
import kotlinx.coroutines.Dispatchers
|
|
@@ -276,20 +275,16 @@ class HotUpdaterImpl {
|
|
|
276
275
|
|
|
277
276
|
/**
|
|
278
277
|
* Reloads the React Native application
|
|
279
|
-
* @param
|
|
278
|
+
* @param reactContext The original context (preferably ReactApplicationContext to get current activity)
|
|
280
279
|
*/
|
|
281
|
-
suspend fun reload(
|
|
282
|
-
val reactIntegrationManager = ReactIntegrationManager(
|
|
283
|
-
val
|
|
280
|
+
suspend fun reload(reactContext: Context) {
|
|
281
|
+
val reactIntegrationManager = ReactIntegrationManager(reactContext)
|
|
282
|
+
val bundleURL = getJSBundleFile()
|
|
284
283
|
|
|
285
284
|
try {
|
|
286
|
-
val reactApplication = reactIntegrationManager.getReactApplication(application)
|
|
287
|
-
val bundleURL = getJSBundleFile()
|
|
288
|
-
|
|
289
|
-
// Perform reload (suspends until safe to reload on new arch)
|
|
290
285
|
withContext(Dispatchers.Main) {
|
|
291
|
-
reactIntegrationManager.setJSBundle(
|
|
292
|
-
reactIntegrationManager.reload(
|
|
286
|
+
reactIntegrationManager.setJSBundle(bundleURL)
|
|
287
|
+
reactIntegrationManager.reload()
|
|
293
288
|
}
|
|
294
289
|
} catch (e: Exception) {
|
|
295
290
|
Log.e("HotUpdaterImpl", "Failed to reload application", e)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
package com.hotupdater
|
|
2
|
+
|
|
3
|
+
import android.content.Context
|
|
4
|
+
import com.facebook.react.ReactHost
|
|
5
|
+
|
|
6
|
+
/**
|
|
7
|
+
* Main React Native package for HotUpdater
|
|
8
|
+
* Provides static utility methods and a default singleton instance
|
|
9
|
+
*/
|
|
10
|
+
class HotUpdater {
|
|
11
|
+
companion object {
|
|
12
|
+
@Volatile
|
|
13
|
+
private var instance: HotUpdaterImpl? = null
|
|
14
|
+
|
|
15
|
+
/**
|
|
16
|
+
* Gets or creates the singleton instance
|
|
17
|
+
* Thread-safe double-checked locking
|
|
18
|
+
* @param context Application context
|
|
19
|
+
* @return The singleton HotUpdaterImpl instance
|
|
20
|
+
*/
|
|
21
|
+
fun getInstance(context: Context): HotUpdaterImpl =
|
|
22
|
+
instance ?: synchronized(this) {
|
|
23
|
+
instance ?: HotUpdaterImpl(context.applicationContext).also {
|
|
24
|
+
instance = it
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* Gets the JS bundle file path using the default singleton instance
|
|
30
|
+
* @param context Application context
|
|
31
|
+
* @return The path to the bundle file
|
|
32
|
+
*/
|
|
33
|
+
fun getJSBundleFile(context: Context): String = getInstance(context).getJSBundleFile()
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* Updates the bundle using the default singleton instance
|
|
37
|
+
* @param context Application context
|
|
38
|
+
* @param bundleId ID of the bundle to update
|
|
39
|
+
* @param fileUrl URL of the bundle file to download (or null to reset)
|
|
40
|
+
* @param fileHash Combined hash string for verification (sig:<signature> or <hex_hash>)
|
|
41
|
+
* @param progressCallback Callback for download progress updates
|
|
42
|
+
* @throws HotUpdaterException if the update fails
|
|
43
|
+
*/
|
|
44
|
+
suspend fun updateBundle(
|
|
45
|
+
context: Context,
|
|
46
|
+
bundleId: String,
|
|
47
|
+
fileUrl: String?,
|
|
48
|
+
fileHash: String?,
|
|
49
|
+
progressCallback: (Double) -> Unit,
|
|
50
|
+
) {
|
|
51
|
+
getInstance(context).updateBundle(bundleId, fileUrl, fileHash, progressCallback)
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Reloads the React Native application using the default singleton instance
|
|
56
|
+
* @param context Context (preferably ReactApplicationContext)
|
|
57
|
+
*/
|
|
58
|
+
suspend fun reload(context: Context) {
|
|
59
|
+
getInstance(context).reload(context)
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Gets the app version - delegates to HotUpdaterImpl static method
|
|
64
|
+
* @param context Application context
|
|
65
|
+
* @return App version name or null if not available
|
|
66
|
+
*/
|
|
67
|
+
fun getAppVersion(context: Context): String? = HotUpdaterImpl.getAppVersion(context)
|
|
68
|
+
|
|
69
|
+
/**
|
|
70
|
+
* Gets the minimum bundle ID - delegates to HotUpdaterImpl static method
|
|
71
|
+
* @return The minimum bundle ID string
|
|
72
|
+
*/
|
|
73
|
+
fun getMinBundleId(): String = HotUpdaterImpl.getMinBundleId()
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Gets the current fingerprint hash - delegates to HotUpdaterImpl static method
|
|
77
|
+
* @param context Application context
|
|
78
|
+
* @return The fingerprint hash or null if not set
|
|
79
|
+
*/
|
|
80
|
+
fun getFingerprintHash(context: Context): String? = HotUpdaterImpl.getFingerprintHash(context)
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Gets the current update channel - delegates to HotUpdaterImpl static method
|
|
84
|
+
* @param context Application context
|
|
85
|
+
* @return The channel name or null if not set
|
|
86
|
+
*/
|
|
87
|
+
fun getChannel(context: Context): String = HotUpdaterImpl.getChannel(context)
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Sets the ReactHost for brownfield apps (New Architecture).
|
|
91
|
+
* Sets the ReactHost for brownfield apps that don't have ReactApplication.
|
|
92
|
+
* When set, reload() will use this ReactHost instead of accessing Application.
|
|
93
|
+
* @param reactHost The ReactHost instance
|
|
94
|
+
*/
|
|
95
|
+
fun setReactHost(reactHost: ReactHost) {
|
|
96
|
+
ReactHostHolder.setReactHost(reactHost)
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* Clears the ReactHost instance (New Architecture).
|
|
101
|
+
*/
|
|
102
|
+
fun clearReactHost() {
|
|
103
|
+
ReactHostHolder.clear()
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
}
|
|
@@ -40,8 +40,7 @@ class HotUpdaterModule internal constructor(
|
|
|
40
40
|
moduleScope.launch {
|
|
41
41
|
try {
|
|
42
42
|
val impl = getInstance()
|
|
43
|
-
|
|
44
|
-
impl.reload(currentActivity)
|
|
43
|
+
impl.reload(mReactApplicationContext)
|
|
45
44
|
promise.resolve(null)
|
|
46
45
|
} catch (e: Exception) {
|
|
47
46
|
Log.d("HotUpdater", "Failed to reload", e)
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
package com.hotupdater
|
|
2
|
+
|
|
3
|
+
import com.facebook.react.ReactHost
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* Singleton holder for ReactHost (for brownfield apps in new architecture)
|
|
7
|
+
* Use HotUpdater.setReactHost() to set the ReactHost instance
|
|
8
|
+
*/
|
|
9
|
+
object ReactHostHolder {
|
|
10
|
+
@Volatile
|
|
11
|
+
private var reactHost: ReactHost? = null
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Sets the ReactHost for brownfield apps
|
|
15
|
+
* @param host The ReactHost instance
|
|
16
|
+
*/
|
|
17
|
+
@JvmStatic
|
|
18
|
+
fun setReactHost(host: ReactHost) {
|
|
19
|
+
synchronized(this) {
|
|
20
|
+
reactHost = host
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Gets the ReactHost
|
|
26
|
+
* @return The ReactHost instance or null if not set
|
|
27
|
+
*/
|
|
28
|
+
@JvmStatic
|
|
29
|
+
fun getReactHost(): ReactHost? = reactHost
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Clears the ReactHost instance
|
|
33
|
+
*/
|
|
34
|
+
@JvmStatic
|
|
35
|
+
fun clear() {
|
|
36
|
+
synchronized(this) {
|
|
37
|
+
reactHost = null
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
@@ -6,6 +6,7 @@ import com.facebook.react.ReactApplication
|
|
|
6
6
|
import com.facebook.react.ReactHost
|
|
7
7
|
import com.facebook.react.ReactInstanceEventListener
|
|
8
8
|
import com.facebook.react.bridge.JSBundleLoader
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
9
10
|
import com.facebook.react.bridge.ReactContext
|
|
10
11
|
import com.facebook.react.common.LifecycleState
|
|
11
12
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
@@ -13,16 +14,18 @@ import java.lang.reflect.Field
|
|
|
13
14
|
import kotlin.coroutines.resume
|
|
14
15
|
|
|
15
16
|
class ReactIntegrationManager(
|
|
16
|
-
context: Context,
|
|
17
|
+
private val context: Context,
|
|
17
18
|
) : ReactIntegrationManagerBase(context) {
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
/**
|
|
20
|
+
* Sets the JS bundle using ReactHost directly
|
|
21
|
+
* @param reactHost The ReactHost instance
|
|
22
|
+
* @param bundleURL The bundle URL to set
|
|
23
|
+
*/
|
|
24
|
+
private fun setJSBundleInternal(
|
|
25
|
+
reactHost: ReactHost,
|
|
20
26
|
bundleURL: String,
|
|
21
27
|
) {
|
|
22
28
|
try {
|
|
23
|
-
val reactHost = application.reactHost
|
|
24
|
-
check(reactHost != null)
|
|
25
|
-
|
|
26
29
|
// Try both Java and Kotlin field names for compatibility
|
|
27
30
|
val reactHostDelegateField =
|
|
28
31
|
try {
|
|
@@ -36,68 +39,132 @@ class ReactIntegrationManager(
|
|
|
36
39
|
}
|
|
37
40
|
|
|
38
41
|
reactHostDelegateField.isAccessible = true
|
|
39
|
-
val reactHostDelegate =
|
|
40
|
-
reactHostDelegateField.get(
|
|
41
|
-
reactHost,
|
|
42
|
-
)
|
|
42
|
+
val reactHostDelegate = reactHostDelegateField.get(reactHost)
|
|
43
43
|
val jsBundleLoaderField = reactHostDelegate::class.java.getDeclaredField("jsBundleLoader")
|
|
44
44
|
jsBundleLoaderField.isAccessible = true
|
|
45
45
|
jsBundleLoaderField.set(reactHostDelegate, getJSBundlerLoader(bundleURL))
|
|
46
46
|
} catch (e: Exception) {
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
47
|
+
Log.d("HotUpdater", "Failed to setJSBundle with ReactHost: ${e.message}")
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Reload the React Native application using ReactHost directly.
|
|
53
|
+
* @param reactHost The ReactHost instance
|
|
54
|
+
*/
|
|
55
|
+
private suspend fun reloadInternal(reactHost: ReactHost) {
|
|
56
|
+
try {
|
|
57
|
+
// Ensure initialized; if not, start and wait
|
|
58
|
+
waitForReactContextInitialized(reactHost)
|
|
59
|
+
|
|
60
|
+
val activity = reactHost.currentReactContext?.currentActivity
|
|
61
|
+
if (reactHost.lifecycleState != LifecycleState.RESUMED && activity != null) {
|
|
62
|
+
reactHost.onHostResume(activity)
|
|
63
|
+
}
|
|
64
|
+
reactHost.reload("Requested by HotUpdater")
|
|
65
|
+
} catch (e: Exception) {
|
|
66
|
+
Log.d("HotUpdater", "Failed to reload with ReactHost: ${e.message}")
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
private fun getReactApplication(): ReactApplication? {
|
|
71
|
+
if (context is ReactApplicationContext) {
|
|
72
|
+
val activity = context.currentActivity
|
|
73
|
+
val application = activity?.application
|
|
74
|
+
if (application is ReactApplication) {
|
|
75
|
+
return application
|
|
63
76
|
}
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
return null
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* Sets the JS bundle.
|
|
84
|
+
* Priority: ReactHostHolder (if set) > application.reactHost > reactNativeHost
|
|
85
|
+
* @param bundleURL The bundle URL to set
|
|
86
|
+
*/
|
|
87
|
+
public fun setJSBundle(bundleURL: String) {
|
|
88
|
+
try {
|
|
89
|
+
// 1. First, check if ReactHost was set via HotUpdater.setReactHost()
|
|
90
|
+
val configuredHost = ReactHostHolder.getReactHost()
|
|
91
|
+
if (configuredHost != null) {
|
|
92
|
+
setJSBundleInternal(configuredHost, bundleURL)
|
|
93
|
+
return
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
// 2. Try to get ReactApplication from context
|
|
97
|
+
val application = getReactApplication()
|
|
98
|
+
if (application == null) {
|
|
99
|
+
Log.d("HotUpdater", "No ReactHost set and application is not ReactApplication")
|
|
100
|
+
return
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// 3. Try application's ReactHost (new architecture)
|
|
104
|
+
val reactHost = application.reactHost
|
|
105
|
+
if (reactHost != null) {
|
|
106
|
+
setJSBundleInternal(reactHost, bundleURL)
|
|
107
|
+
return
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
// 4. Fallback to old architecture (reactNativeHost)
|
|
111
|
+
@Suppress("DEPRECATION")
|
|
112
|
+
val instanceManager = application.reactNativeHost.reactInstanceManager
|
|
113
|
+
val bundleLoader: JSBundleLoader? = this.getJSBundlerLoader(bundleURL)
|
|
114
|
+
val bundleLoaderField: Field =
|
|
115
|
+
instanceManager::class.java.getDeclaredField("mBundleLoader")
|
|
116
|
+
bundleLoaderField.isAccessible = true
|
|
117
|
+
|
|
118
|
+
if (bundleLoader != null) {
|
|
119
|
+
bundleLoaderField.set(instanceManager, bundleLoader)
|
|
120
|
+
} else {
|
|
121
|
+
bundleLoaderField.set(instanceManager, null)
|
|
122
|
+
}
|
|
123
|
+
} catch (e: Exception) {
|
|
64
124
|
Log.d("HotUpdater", "Failed to setJSBundle: ${e.message}")
|
|
65
125
|
}
|
|
66
126
|
}
|
|
67
127
|
|
|
68
128
|
/**
|
|
69
|
-
* Reload the React Native application
|
|
70
|
-
*
|
|
129
|
+
* Reload the React Native application.
|
|
130
|
+
* Priority: ReactHostHolder (if set) > application.reactHost > reactNativeHost
|
|
71
131
|
*/
|
|
72
|
-
public suspend fun reload(
|
|
132
|
+
public suspend fun reload() {
|
|
73
133
|
try {
|
|
134
|
+
// 1. First, check if ReactHost was set via HotUpdater.setReactHost()
|
|
135
|
+
val configuredHost = ReactHostHolder.getReactHost()
|
|
136
|
+
if (configuredHost != null) {
|
|
137
|
+
reloadInternal(configuredHost)
|
|
138
|
+
return
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// 2. Try to get ReactApplication from context
|
|
142
|
+
val application = getReactApplication()
|
|
143
|
+
if (application == null) {
|
|
144
|
+
Log.d("HotUpdater", "No ReactHost set and application is not ReactApplication")
|
|
145
|
+
return
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// 3. Try application's ReactHost (new architecture)
|
|
74
149
|
val reactHost = application.reactHost
|
|
75
150
|
if (reactHost != null) {
|
|
76
|
-
|
|
77
|
-
|
|
151
|
+
reloadInternal(reactHost)
|
|
152
|
+
return
|
|
153
|
+
}
|
|
78
154
|
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
155
|
+
// 4. Fallback to old architecture (reactNativeHost)
|
|
156
|
+
@Suppress("DEPRECATION")
|
|
157
|
+
val reactNativeHost = application.reactNativeHost
|
|
158
|
+
try {
|
|
159
|
+
reactNativeHost.reactInstanceManager.recreateReactContextInBackground()
|
|
160
|
+
} catch (e: Exception) {
|
|
161
|
+
val currentActivity = reactNativeHost.reactInstanceManager.currentReactContext?.currentActivity
|
|
162
|
+
if (currentActivity == null) {
|
|
163
|
+
return
|
|
82
164
|
}
|
|
83
|
-
reactHost.reload("Requested by HotUpdater")
|
|
84
|
-
} else {
|
|
85
|
-
// Fallback to old architecture if ReactHost is not available
|
|
86
|
-
@Suppress("DEPRECATION")
|
|
87
|
-
val reactNativeHost = application.reactNativeHost
|
|
88
|
-
try {
|
|
89
|
-
reactNativeHost.reactInstanceManager.recreateReactContextInBackground()
|
|
90
|
-
} catch (e: Exception) {
|
|
91
|
-
val currentActivity = reactNativeHost.reactInstanceManager.currentReactContext?.currentActivity
|
|
92
|
-
if (currentActivity == null) {
|
|
93
|
-
return
|
|
94
|
-
}
|
|
95
165
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
} catch (e: Exception) {
|
|
100
|
-
Log.d("HotUpdater", "Failed to reload: ${e.message}")
|
|
166
|
+
currentActivity.runOnUiThread {
|
|
167
|
+
currentActivity.recreate()
|
|
101
168
|
}
|
|
102
169
|
}
|
|
103
170
|
} catch (e: Exception) {
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
package com.hotupdater
|
|
2
2
|
|
|
3
|
-
import android.app.Activity
|
|
4
3
|
import android.content.Context
|
|
5
|
-
import com.facebook.react.bridge.ReactApplicationContext
|
|
6
4
|
|
|
7
5
|
/**
|
|
8
6
|
* Main React Native package for HotUpdater
|
|
@@ -54,11 +52,10 @@ class HotUpdater {
|
|
|
54
52
|
|
|
55
53
|
/**
|
|
56
54
|
* Reloads the React Native application using the default singleton instance
|
|
57
|
-
* @param context
|
|
55
|
+
* @param context Context (preferably ReactApplicationContext)
|
|
58
56
|
*/
|
|
59
57
|
suspend fun reload(context: Context) {
|
|
60
|
-
|
|
61
|
-
getInstance(context).reload(currentActivity)
|
|
58
|
+
getInstance(context).reload(context)
|
|
62
59
|
}
|
|
63
60
|
|
|
64
61
|
/**
|
|
@@ -89,15 +86,19 @@ class HotUpdater {
|
|
|
89
86
|
fun getChannel(context: Context): String = HotUpdaterImpl.getChannel(context)
|
|
90
87
|
|
|
91
88
|
/**
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* @
|
|
89
|
+
* Sets the ReactHost for brownfield apps (Old Architecture - No-op).
|
|
90
|
+
* In old architecture, this is a no-op since ReactHost is not available.
|
|
91
|
+
* @param reactHost The ReactHost instance (accepted as Any for compatibility)
|
|
95
92
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
93
|
+
fun setReactHost(reactHost: Any) {
|
|
94
|
+
// No-op for old architecture
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
/**
|
|
98
|
+
* Clears the ReactHost instance (Old Architecture - No-op).
|
|
99
|
+
*/
|
|
100
|
+
fun clearReactHost() {
|
|
101
|
+
// No-op for old architecture
|
|
102
|
+
}
|
|
102
103
|
}
|
|
103
104
|
}
|
|
@@ -43,8 +43,7 @@ class HotUpdaterModule internal constructor(
|
|
|
43
43
|
moduleScope.launch {
|
|
44
44
|
try {
|
|
45
45
|
val impl = getInstance()
|
|
46
|
-
|
|
47
|
-
impl.reload(currentActivity)
|
|
46
|
+
impl.reload(mReactApplicationContext)
|
|
48
47
|
promise.resolve(null)
|
|
49
48
|
} catch (e: Exception) {
|
|
50
49
|
Log.d("HotUpdater", "Failed to reload", e)
|
|
@@ -4,20 +4,43 @@ import android.content.Context
|
|
|
4
4
|
import android.util.Log
|
|
5
5
|
import com.facebook.react.ReactApplication
|
|
6
6
|
import com.facebook.react.ReactInstanceEventListener
|
|
7
|
+
import com.facebook.react.ReactInstanceManager
|
|
7
8
|
import com.facebook.react.bridge.JSBundleLoader
|
|
9
|
+
import com.facebook.react.bridge.ReactApplicationContext
|
|
8
10
|
import com.facebook.react.bridge.ReactContext
|
|
9
11
|
import kotlinx.coroutines.suspendCancellableCoroutine
|
|
10
12
|
import java.lang.reflect.Field
|
|
11
13
|
import kotlin.coroutines.resume
|
|
12
14
|
|
|
13
15
|
class ReactIntegrationManager(
|
|
14
|
-
context: Context,
|
|
16
|
+
private val context: Context,
|
|
15
17
|
) : ReactIntegrationManagerBase(context) {
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
private fun getReactApplication(): ReactApplication? {
|
|
19
|
+
// 1. Try to get from ReactApplicationContext's current activity
|
|
20
|
+
if (context is ReactApplicationContext) {
|
|
21
|
+
val activity = context.currentActivity
|
|
22
|
+
val application = activity?.application
|
|
23
|
+
if (application is ReactApplication) {
|
|
24
|
+
return application
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
return null
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Sets the JS bundle.
|
|
33
|
+
* Gets ReactApplication from context and uses reactNativeHost.
|
|
34
|
+
* @param bundleURL The bundle URL to set
|
|
35
|
+
*/
|
|
36
|
+
public fun setJSBundle(bundleURL: String) {
|
|
20
37
|
try {
|
|
38
|
+
val application = getReactApplication()
|
|
39
|
+
if (application == null) {
|
|
40
|
+
Log.d("HotUpdater", "Application is not ReactApplication")
|
|
41
|
+
return
|
|
42
|
+
}
|
|
43
|
+
|
|
21
44
|
val instanceManager = application.reactNativeHost.reactInstanceManager
|
|
22
45
|
val bundleLoader: JSBundleLoader? = this.getJSBundlerLoader(bundleURL)
|
|
23
46
|
val bundleLoaderField: Field =
|
|
@@ -35,52 +58,62 @@ class ReactIntegrationManager(
|
|
|
35
58
|
}
|
|
36
59
|
|
|
37
60
|
/**
|
|
38
|
-
* Reload the React Native application
|
|
39
|
-
*
|
|
61
|
+
* Reload the React Native application.
|
|
62
|
+
* Gets ReactApplication from context and uses reactNativeHost.
|
|
40
63
|
*/
|
|
41
|
-
public suspend fun reload(
|
|
42
|
-
val reactNativeHost = application.reactNativeHost
|
|
64
|
+
public suspend fun reload() {
|
|
43
65
|
try {
|
|
66
|
+
val application = getReactApplication()
|
|
67
|
+
if (application == null) {
|
|
68
|
+
Log.d("HotUpdater", "Application is not ReactApplication")
|
|
69
|
+
return
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
val instanceManager = application.reactNativeHost.reactInstanceManager
|
|
73
|
+
|
|
44
74
|
// Ensure initialized; if not, start and wait
|
|
45
|
-
waitForReactContextInitialized(
|
|
75
|
+
waitForReactContextInitialized(instanceManager)
|
|
46
76
|
|
|
47
|
-
|
|
77
|
+
instanceManager.recreateReactContextInBackground()
|
|
48
78
|
} catch (e: Exception) {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
79
|
+
try {
|
|
80
|
+
val application = getReactApplication() ?: return
|
|
81
|
+
val instanceManager = application.reactNativeHost.reactInstanceManager
|
|
82
|
+
val currentActivity = instanceManager.currentReactContext?.currentActivity
|
|
83
|
+
if (currentActivity == null) {
|
|
84
|
+
return
|
|
85
|
+
}
|
|
53
86
|
|
|
54
|
-
|
|
55
|
-
|
|
87
|
+
currentActivity.runOnUiThread {
|
|
88
|
+
currentActivity.recreate()
|
|
89
|
+
}
|
|
90
|
+
} catch (e2: Exception) {
|
|
91
|
+
Log.d("HotUpdater", "Failed to reload: ${e2.message}")
|
|
56
92
|
}
|
|
57
|
-
} catch (e: Exception) {
|
|
58
|
-
Log.d("HotUpdater", "Failed to reload: ${e.message}")
|
|
59
93
|
}
|
|
60
94
|
}
|
|
61
95
|
|
|
62
96
|
/**
|
|
63
|
-
* Waits until ReactContext is initialized.
|
|
97
|
+
* Waits until ReactContext is initialized using ReactInstanceManager.
|
|
98
|
+
* @param instanceManager The ReactInstanceManager instance
|
|
64
99
|
* @return true if ReactContext was already initialized; false if we waited for it.
|
|
65
100
|
*/
|
|
66
|
-
suspend fun waitForReactContextInitialized(
|
|
67
|
-
val reactInstanceManager = application.reactNativeHost.reactInstanceManager
|
|
68
|
-
|
|
101
|
+
suspend fun waitForReactContextInitialized(instanceManager: ReactInstanceManager): Boolean {
|
|
69
102
|
// If already initialized, return immediately and indicate so
|
|
70
|
-
if (
|
|
103
|
+
if (instanceManager.currentReactContext != null) return true
|
|
71
104
|
|
|
72
105
|
// Otherwise, wait for initialization; MainApplication handles starting the instance
|
|
73
106
|
suspendCancellableCoroutine { continuation ->
|
|
74
107
|
val listener =
|
|
75
108
|
object : ReactInstanceEventListener {
|
|
76
109
|
override fun onReactContextInitialized(context: ReactContext) {
|
|
77
|
-
|
|
110
|
+
instanceManager.removeReactInstanceEventListener(this)
|
|
78
111
|
if (continuation.isActive) continuation.resume(Unit)
|
|
79
112
|
}
|
|
80
113
|
}
|
|
81
114
|
|
|
82
|
-
|
|
83
|
-
continuation.invokeOnCancellation {
|
|
115
|
+
instanceManager.addReactInstanceEventListener(listener)
|
|
116
|
+
continuation.invokeOnCancellation { instanceManager.removeReactInstanceEventListener(listener) }
|
|
84
117
|
}
|
|
85
118
|
return false
|
|
86
119
|
}
|
|
@@ -29,7 +29,6 @@ NSNotificationName const HotUpdaterDownloadDidFinishNotification = @"HotUpdaterD
|
|
|
29
29
|
if (self) {
|
|
30
30
|
observedTasks = [NSMutableSet set];
|
|
31
31
|
|
|
32
|
-
// Start observing notifications needed for cleanup/events
|
|
33
32
|
[[NSNotificationCenter defaultCenter] addObserver:self
|
|
34
33
|
selector:@selector(handleDownloadProgress:)
|
|
35
34
|
name:HotUpdaterDownloadProgressUpdateNotification
|
|
@@ -200,11 +199,9 @@ RCT_EXPORT_MODULE();
|
|
|
200
199
|
if (progressNum) {
|
|
201
200
|
double progress = [progressNum doubleValue];
|
|
202
201
|
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970] * 1000;
|
|
203
|
-
// Throttle events
|
|
204
202
|
if ((currentTime - self.lastUpdateTime) >= 100 || progress >= 1.0) {
|
|
205
203
|
self.lastUpdateTime = currentTime;
|
|
206
|
-
|
|
207
|
-
[self sendEventWithName:@"onProgress" body:@{@"progress": @(progress)}];
|
|
204
|
+
[self sendEvent:@"onProgress" body:@{@"progress": @(progress)}];
|
|
208
205
|
}
|
|
209
206
|
}
|
|
210
207
|
}
|
|
@@ -225,19 +222,15 @@ RCT_EXPORT_MODULE();
|
|
|
225
222
|
|
|
226
223
|
- (void)startObserving {
|
|
227
224
|
hasListeners = YES;
|
|
228
|
-
RCTLogInfo(@"[HotUpdater.mm] Start observing JS events.");
|
|
229
|
-
// Observers are added in init now
|
|
230
225
|
}
|
|
231
226
|
|
|
232
227
|
- (void)stopObserving {
|
|
233
228
|
hasListeners = NO;
|
|
234
|
-
RCTLogInfo(@"[HotUpdater.mm] Stop observing JS events.");
|
|
235
|
-
// Observers are removed in invalidate/dealloc
|
|
236
229
|
}
|
|
237
230
|
|
|
238
|
-
- (void)
|
|
231
|
+
- (void)sendEvent:(NSString *)name body:(id)body {
|
|
239
232
|
if (hasListeners) {
|
|
240
|
-
[
|
|
233
|
+
[self sendEventWithName:name body:body];
|
|
241
234
|
}
|
|
242
235
|
}
|
|
243
236
|
|
|
@@ -320,14 +313,6 @@ RCT_EXPORT_MODULE();
|
|
|
320
313
|
return baseURL ?: @"";
|
|
321
314
|
}
|
|
322
315
|
|
|
323
|
-
- (void)addListener:(NSString *)eventName {
|
|
324
|
-
// No-op for New Architecture - handled by event emitter
|
|
325
|
-
}
|
|
326
|
-
|
|
327
|
-
- (void)removeListeners:(double)count {
|
|
328
|
-
// No-op for New Architecture - handled by event emitter
|
|
329
|
-
}
|
|
330
|
-
|
|
331
316
|
- (facebook::react::ModuleConstants<JS::NativeHotUpdater::Constants::Builder>)constantsToExport {
|
|
332
317
|
return [self getConstants];
|
|
333
318
|
}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -38,14 +38,6 @@ Object.keys(_store).forEach(function (key) {
|
|
|
38
38
|
});
|
|
39
39
|
var _wrap = require("./wrap.js");
|
|
40
40
|
var _types = require("./types.js");
|
|
41
|
-
(0, _native.addListener)("onProgress", ({
|
|
42
|
-
progress
|
|
43
|
-
}) => {
|
|
44
|
-
_store.hotUpdaterStore.setState({
|
|
45
|
-
progress
|
|
46
|
-
});
|
|
47
|
-
});
|
|
48
|
-
|
|
49
41
|
/**
|
|
50
42
|
* Register getBaseURL to global objects for use without imports.
|
|
51
43
|
* This is needed for Expo DOM components and Babel plugin generated code.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_checkForUpdate","require","_DefaultResolver","_native","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","_types","
|
|
1
|
+
{"version":3,"names":["_checkForUpdate","require","_DefaultResolver","_native","_store","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_wrap","_types","registerGlobalGetBaseURL","fn","getBaseURL","globalThis","HotUpdaterGetBaseURL","global","createHotUpdaterClient","globalConfig","resolver","ensureGlobalResolver","methodName","Error","wrap","options","normalizedOptions","baseURL","rest","createDefaultResolver","requestHeaders","requestTimeout","reload","isUpdateDownloaded","hotUpdaterStore","getSnapshot","getAppVersion","getBundleId","getMinBundleId","getChannel","addListener","checkForUpdate","config","mergedConfig","updateBundle","params","getFingerprintHash","getCrashHistory","clearCrashHistory","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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AMC,sBAAe,CAACC,WAAW,CAAC,CAAC,CAACF,kBAAkB;IAE1E;AACJ;AACA;IACIG,aAAa,EAAbA,qBAAa;IAEb;AACJ;AACA;IACIC,WAAW,EAAXA,mBAAW;IAEX;AACJ;AACA;IACIC,cAAc,EAAdA,sBAAc;IAEd;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,UAAU,EAAVA,kBAAU;IAEV;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,WAAW,EAAXA,mBAAW;IAEX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,cAAc,EAAGC,MAA6B,IAAK;MACjD,MAAMtB,QAAQ,GAAGC,oBAAoB,CAAC,gBAAgB,CAAC;MAEvD,MAAMsB,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTtB,QAAQ;QACRU,cAAc,EAAE;UACd,GAAGX,YAAY,CAACW,cAAc;UAC9B,GAAGY,MAAM,CAACZ;QACZ,CAAC;QACDC,cAAc,EAAEW,MAAM,CAACX,cAAc,IAAIZ,YAAY,CAACY;MACxD,CAAC;MAED,OAAO,IAAAU,8BAAc,EAACE,YAAY,CAAC;IACrC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,YAAY,EAAGC,MAAoB,IAAK;MACtCxB,oBAAoB,CAAC,cAAc,CAAC;MACpC,OAAO,IAAAuB,oBAAY,EAACC,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,kBAAkB,EAAlBA,0BAAkB;IAElB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,eAAe,EAAfA,uBAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIC,iBAAiB,EAAjBA;EACF,CAAC;AACH;AAEO,MAAMC,UAAU,GAAA3C,OAAA,CAAA2C,UAAA,GAAG/B,sBAAsB,CAAC,CAAC","ignoreList":[]}
|
package/lib/commonjs/native.js
CHANGED
|
@@ -27,8 +27,8 @@ const NIL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
|
27
27
|
const HotUpdaterConstants = exports.HotUpdaterConstants = {
|
|
28
28
|
HOT_UPDATER_BUNDLE_ID: __HOT_UPDATER_BUNDLE_ID || NIL_UUID
|
|
29
29
|
};
|
|
30
|
+
const eventEmitter = new _reactNative.NativeEventEmitter(_NativeHotUpdater.default);
|
|
30
31
|
const addListener = (eventName, listener) => {
|
|
31
|
-
const eventEmitter = new _reactNative.NativeEventEmitter(_NativeHotUpdater.default);
|
|
32
32
|
const subscription = eventEmitter.addListener(eventName, listener);
|
|
33
33
|
return () => {
|
|
34
34
|
subscription.remove();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_error","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_error","_NativeHotUpdater","_interopRequireDefault","e","__esModule","default","NIL_UUID","HotUpdaterConstants","exports","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","eventEmitter","NativeEventEmitter","HotUpdaterNative","addListener","eventName","listener","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","targetFileHash","undefined","fileHash","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/commonjs/store.js
CHANGED
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.useHotUpdaterStore = exports.hotUpdaterStore = void 0;
|
|
7
7
|
var _withSelector = _interopRequireDefault(require("use-sync-external-store/shim/with-selector"));
|
|
8
|
+
var _native = require("./native.js");
|
|
8
9
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
9
10
|
const {
|
|
10
11
|
useSyncExternalStoreWithSelector
|
|
@@ -45,6 +46,10 @@ const createHotUpdaterStore = () => {
|
|
|
45
46
|
listeners.add(listener);
|
|
46
47
|
return () => listeners.delete(listener);
|
|
47
48
|
};
|
|
49
|
+
|
|
50
|
+
// Subscribe to native onProgress events
|
|
51
|
+
// This listener is registered once when the store is created
|
|
52
|
+
(0, _native.addListener)("onProgress", setState);
|
|
48
53
|
return {
|
|
49
54
|
getSnapshot,
|
|
50
55
|
setState,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_withSelector","_interopRequireDefault","require","e","__esModule","default","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","createHotUpdaterStore","state","progress","isUpdateDownloaded","getSnapshot","listeners","Set","emitChange","listener","setState","newState","nextState","subscribe","add","delete","hotUpdaterStore","exports","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;
|
|
1
|
+
{"version":3,"names":["_withSelector","_interopRequireDefault","require","_native","e","__esModule","default","useSyncExternalStoreWithSelector","useSyncExternalStoreExports","createHotUpdaterStore","state","progress","isUpdateDownloaded","getSnapshot","listeners","Set","emitChange","listener","setState","newState","nextState","subscribe","add","delete","addListener","hotUpdaterStore","exports","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;;;;;AAAA,IAAAA,aAAA,GAAAC,sBAAA,CAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAAuC,SAAAD,uBAAAG,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAOvC,MAAM;EAAEG;AAAiC,CAAC,GAAGC,qBAA2B;AAExE,MAAMC,qBAAqB,GAAGA,CAAA,KAAM;EAClC,IAAIC,KAAsB,GAAG;IAC3BC,QAAQ,EAAE,CAAC;IACXC,kBAAkB,EAAE;EACtB,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,OAAOH,KAAK;EACd,CAAC;EAED,MAAMI,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EAEvC,MAAMC,UAAU,GAAGA,CAAA,KAAM;IACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;MAChCG,QAAQ,CAAC,CAAC;IACZ;EACF,CAAC;EAED,MAAMC,QAAQ,GAAIC,QAAkC,IAAK;IACvD;IACA,MAAMC,SAA0B,GAAG;MACjC,GAAGV,KAAK;MACR,GAAGS;IACL,CAAC;;IAED;IACA;IACA;IACA,IAAI,UAAU,IAAIA,QAAQ,IAAI,OAAOA,QAAQ,CAACR,QAAQ,KAAK,QAAQ,EAAE;MACnES,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACR,QAAQ,IAAI,CAAC;IACvD,CAAC,MAAM,IACL,oBAAoB,IAAIQ,QAAQ,IAChC,OAAOA,QAAQ,CAACP,kBAAkB,KAAK,SAAS,EAChD;MACAQ,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACP,kBAAkB;IAC5D;IAEAF,KAAK,GAAGU,SAAS;IACjBJ,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMK,SAAS,GAAIJ,QAAoB,IAAK;IAC1CH,SAAS,CAACQ,GAAG,CAACL,QAAQ,CAAC;IACvB,OAAO,MAAMH,SAAS,CAACS,MAAM,CAACN,QAAQ,CAAC;EACzC,CAAC;;EAED;EACA;EACA,IAAAO,mBAAW,EAAC,YAAY,EAAEN,QAAQ,CAAC;EAEnC,OAAO;IAAEL,WAAW;IAAEK,QAAQ;IAAEG;EAAU,CAAC;AAC7C,CAAC;AAEM,MAAMI,eAAe,GAAAC,OAAA,CAAAD,eAAA,GAAGhB,qBAAqB,CAAC,CAAC;AAE/C,MAAMkB,kBAAkB,GAAGA,CAChCC,QAA0C,GAAIC,QAAQ,IAAKA,QAAa,KACrE;EACH,OAAOtB,gCAAgC,CACrCkB,eAAe,CAACJ,SAAS,EACzBI,eAAe,CAACZ,WAAW,EAC3BY,eAAe,CAACZ,WAAW,EAC3Be,QACF,CAAC;AACH,CAAC;AAACF,OAAA,CAAAC,kBAAA,GAAAA,kBAAA","ignoreList":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -7,14 +7,6 @@ import { hotUpdaterStore } from "./store.js";
|
|
|
7
7
|
import { wrap } from "./wrap.js";
|
|
8
8
|
export * from "./store.js";
|
|
9
9
|
export { extractSignatureFailure, isSignatureVerificationError } from "./types.js";
|
|
10
|
-
addListener("onProgress", ({
|
|
11
|
-
progress
|
|
12
|
-
}) => {
|
|
13
|
-
hotUpdaterStore.setState({
|
|
14
|
-
progress
|
|
15
|
-
});
|
|
16
|
-
});
|
|
17
|
-
|
|
18
10
|
/**
|
|
19
11
|
* Register getBaseURL to global objects for use without imports.
|
|
20
12
|
* This is needed for Expo DOM components and Babel plugin generated code.
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["checkForUpdate","createDefaultResolver","addListener","clearCrashHistory","getAppVersion","getBaseURL","getBundleId","getChannel","getCrashHistory","getFingerprintHash","getMinBundleId","reload","updateBundle","hotUpdaterStore","wrap","extractSignatureFailure","isSignatureVerificationError","
|
|
1
|
+
{"version":3,"names":["checkForUpdate","createDefaultResolver","addListener","clearCrashHistory","getAppVersion","getBaseURL","getBundleId","getChannel","getCrashHistory","getFingerprintHash","getMinBundleId","reload","updateBundle","hotUpdaterStore","wrap","extractSignatureFailure","isSignatureVerificationError","registerGlobalGetBaseURL","fn","globalThis","HotUpdaterGetBaseURL","global","createHotUpdaterClient","globalConfig","resolver","ensureGlobalResolver","methodName","Error","options","normalizedOptions","baseURL","rest","requestHeaders","requestTimeout","isUpdateDownloaded","getSnapshot","config","mergedConfig","params","HotUpdater"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":"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AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIL,WAAW;IAEX;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIF,cAAc,EAAGoC,MAA6B,IAAK;MACjD,MAAMZ,QAAQ,GAAGC,oBAAoB,CAAC,gBAAgB,CAAC;MAEvD,MAAMY,YAA2C,GAAG;QAClD,GAAGD,MAAM;QACTZ,QAAQ;QACRQ,cAAc,EAAE;UACd,GAAGT,YAAY,CAACS,cAAc;UAC9B,GAAGI,MAAM,CAACJ;QACZ,CAAC;QACDC,cAAc,EAAEG,MAAM,CAACH,cAAc,IAAIV,YAAY,CAACU;MACxD,CAAC;MAED,OAAOjC,cAAc,CAACqC,YAAY,CAAC;IACrC,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIzB,YAAY,EAAG0B,MAAoB,IAAK;MACtCb,oBAAoB,CAAC,cAAc,CAAC;MACpC,OAAOb,YAAY,CAAC0B,MAAM,CAAC;IAC7B,CAAC;IAED;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACI7B,kBAAkB;IAElB;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACID,eAAe;IAEf;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;IACIL;EACF,CAAC;AACH;AAEA,OAAO,MAAMoC,UAAU,GAAGjB,sBAAsB,CAAC,CAAC","ignoreList":[]}
|
package/lib/module/native.js
CHANGED
|
@@ -8,8 +8,8 @@ const NIL_UUID = "00000000-0000-0000-0000-000000000000";
|
|
|
8
8
|
export const HotUpdaterConstants = {
|
|
9
9
|
HOT_UPDATER_BUNDLE_ID: __HOT_UPDATER_BUNDLE_ID || NIL_UUID
|
|
10
10
|
};
|
|
11
|
+
const eventEmitter = new NativeEventEmitter(HotUpdaterNative);
|
|
11
12
|
export const addListener = (eventName, listener) => {
|
|
12
|
-
const eventEmitter = new NativeEventEmitter(HotUpdaterNative);
|
|
13
13
|
const subscription = eventEmitter.addListener(eventName, listener);
|
|
14
14
|
return () => {
|
|
15
15
|
subscription.remove();
|
package/lib/module/native.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NativeEventEmitter","HotUpdaterErrorCode","isHotUpdaterError","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","addListener","eventName","listener","
|
|
1
|
+
{"version":3,"names":["NativeEventEmitter","HotUpdaterErrorCode","isHotUpdaterError","HotUpdaterNative","NIL_UUID","HotUpdaterConstants","HOT_UPDATER_BUNDLE_ID","__HOT_UPDATER_BUNDLE_ID","eventEmitter","addListener","eventName","listener","subscription","remove","inflightUpdates","Map","lastInstalledBundleId","updateBundle","paramsOrBundleId","fileUrl","updateBundleId","bundleId","status","currentBundleId","getBundleId","localeCompare","Error","existing","get","targetFileUrl","targetFileHash","undefined","fileHash","promise","ok","delete","set","getAppVersion","constants","getConstants","APP_VERSION","reload","getMinBundleId","MIN_BUNDLE_ID","getChannel","CHANNEL","getFingerprintHash","FINGERPRINT_HASH","notifyAppReady","result","JSON","parse","getCrashHistory","clearCrashHistory","getBaseURL"],"sourceRoot":"../../src","sources":["native.ts"],"mappings":"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","ignoreList":[]}
|
package/lib/module/store.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
3
|
import useSyncExternalStoreExports from "use-sync-external-store/shim/with-selector";
|
|
4
|
+
import { addListener } from "./native.js";
|
|
4
5
|
const {
|
|
5
6
|
useSyncExternalStoreWithSelector
|
|
6
7
|
} = useSyncExternalStoreExports;
|
|
@@ -40,6 +41,10 @@ const createHotUpdaterStore = () => {
|
|
|
40
41
|
listeners.add(listener);
|
|
41
42
|
return () => listeners.delete(listener);
|
|
42
43
|
};
|
|
44
|
+
|
|
45
|
+
// Subscribe to native onProgress events
|
|
46
|
+
// This listener is registered once when the store is created
|
|
47
|
+
addListener("onProgress", setState);
|
|
43
48
|
return {
|
|
44
49
|
getSnapshot,
|
|
45
50
|
setState,
|
package/lib/module/store.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useSyncExternalStoreExports","useSyncExternalStoreWithSelector","createHotUpdaterStore","state","progress","isUpdateDownloaded","getSnapshot","listeners","Set","emitChange","listener","setState","newState","nextState","subscribe","add","delete","hotUpdaterStore","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;AAAA,OAAOA,2BAA2B,MAAM,4CAA4C;
|
|
1
|
+
{"version":3,"names":["useSyncExternalStoreExports","addListener","useSyncExternalStoreWithSelector","createHotUpdaterStore","state","progress","isUpdateDownloaded","getSnapshot","listeners","Set","emitChange","listener","setState","newState","nextState","subscribe","add","delete","hotUpdaterStore","useHotUpdaterStore","selector","snapshot"],"sourceRoot":"../../src","sources":["store.ts"],"mappings":";;AAAA,OAAOA,2BAA2B,MAAM,4CAA4C;AACpF,SAASC,WAAW,QAAQ,aAAU;AAOtC,MAAM;EAAEC;AAAiC,CAAC,GAAGF,2BAA2B;AAExE,MAAMG,qBAAqB,GAAGA,CAAA,KAAM;EAClC,IAAIC,KAAsB,GAAG;IAC3BC,QAAQ,EAAE,CAAC;IACXC,kBAAkB,EAAE;EACtB,CAAC;EAED,MAAMC,WAAW,GAAGA,CAAA,KAAM;IACxB,OAAOH,KAAK;EACd,CAAC;EAED,MAAMI,SAAS,GAAG,IAAIC,GAAG,CAAa,CAAC;EAEvC,MAAMC,UAAU,GAAGA,CAAA,KAAM;IACvB,KAAK,MAAMC,QAAQ,IAAIH,SAAS,EAAE;MAChCG,QAAQ,CAAC,CAAC;IACZ;EACF,CAAC;EAED,MAAMC,QAAQ,GAAIC,QAAkC,IAAK;IACvD;IACA,MAAMC,SAA0B,GAAG;MACjC,GAAGV,KAAK;MACR,GAAGS;IACL,CAAC;;IAED;IACA;IACA;IACA,IAAI,UAAU,IAAIA,QAAQ,IAAI,OAAOA,QAAQ,CAACR,QAAQ,KAAK,QAAQ,EAAE;MACnES,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACR,QAAQ,IAAI,CAAC;IACvD,CAAC,MAAM,IACL,oBAAoB,IAAIQ,QAAQ,IAChC,OAAOA,QAAQ,CAACP,kBAAkB,KAAK,SAAS,EAChD;MACAQ,SAAS,CAACR,kBAAkB,GAAGO,QAAQ,CAACP,kBAAkB;IAC5D;IAEAF,KAAK,GAAGU,SAAS;IACjBJ,UAAU,CAAC,CAAC;EACd,CAAC;EAED,MAAMK,SAAS,GAAIJ,QAAoB,IAAK;IAC1CH,SAAS,CAACQ,GAAG,CAACL,QAAQ,CAAC;IACvB,OAAO,MAAMH,SAAS,CAACS,MAAM,CAACN,QAAQ,CAAC;EACzC,CAAC;;EAED;EACA;EACAV,WAAW,CAAC,YAAY,EAAEW,QAAQ,CAAC;EAEnC,OAAO;IAAEL,WAAW;IAAEK,QAAQ;IAAEG;EAAU,CAAC;AAC7C,CAAC;AAED,OAAO,MAAMG,eAAe,GAAGf,qBAAqB,CAAC,CAAC;AAEtD,OAAO,MAAMgB,kBAAkB,GAAGA,CAChCC,QAA0C,GAAIC,QAAQ,IAAKA,QAAa,KACrE;EACH,OAAOnB,gCAAgC,CACrCgB,eAAe,CAACH,SAAS,EACzBG,eAAe,CAACX,WAAW,EAC3BW,eAAe,CAACX,WAAW,EAC3Ba,QACF,CAAC;AACH,CAAC","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAWL,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,QAAQ,CAAC;AAEhF,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAWL,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,QAAQ,CAAC;AAEhF,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAsU1E,eAAO,MAAM,UAAU;IAtQnB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;oBACa,iBAAiB;IAuCjC;;OAEG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;;;;;;;;;;OAYG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;6BACsB,qBAAqB;IAgB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;2BACoB,YAAY;IAKnC;;;;;;;;;;OAUG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;;;;;;;;OAWG;;CAK2C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAMlD,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAMlD,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAO9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAgEpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,cAAc,QAAO,oBAYjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,EAWxC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,OAEpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAO,MAAM,GAAG,IAMtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAyDF,eAAO,MAAM,eAAe;;yBAnCE,OAAO,CAAC,eAAe,CAAC;0BAuBvB,MAAM,IAAI;CAYa,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,GAAG,eAAe,EACpD,WAAU,CAAC,QAAQ,EAAE,eAAe,KAAK,CAA+B,MAQzE,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAWL,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,QAAQ,CAAC;AAEhF,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAG3B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAWL,KAAK,YAAY,EAElB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,KAAK,iBAAiB,EAAkC,MAAM,QAAQ,CAAC;AAEhF,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AACtE,cAAc,SAAS,CAAC;AACxB,OAAO,EACL,uBAAuB,EACvB,KAAK,kBAAkB,EACvB,4BAA4B,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,4BAA4B,EACjC,KAAK,4BAA4B,GAClC,MAAM,SAAS,CAAC;AACjB,YAAY,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,QAAQ,CAAC;AAsU1E,eAAO,MAAM,UAAU;IAtQnB;;;;;;;;;;;;;;;;;;;;;;;OAuBG;oBACa,iBAAiB;IAuCjC;;OAEG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;OAEG;;IAGH;;;;;;;;;;;;OAYG;;IAGH;;;;;;;;;;;;;;;;OAgBG;;IAGH;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;6BACsB,qBAAqB;IAgB9C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAgCG;2BACoB,YAAY;IAKnC;;;;;;;;;;OAUG;;IAGH;;;;;;;;;;;OAWG;;IAGH;;;;;;;;;;;OAWG;;CAK2C,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAMlD,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;
|
|
1
|
+
{"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../../src/native.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AACjE,OAAyB,EACvB,KAAK,kBAAkB,EACxB,MAAM,0BAA0B,CAAC;AAElC,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;AAMlD,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG;IAC5B,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH,CAAC;AAIF,eAAO,MAAM,WAAW,GAAI,CAAC,SAAS,MAAM,eAAe,EACzD,WAAW,CAAC,EACZ,UAAU,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC,KAAK,IAAI,eAO9C,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,kBAAkB,GAAG;IAC9C,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAOF;;;;;;GAMG;AACH,wBAAsB,YAAY,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;AAC3E;;GAEG;AACH,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,GAAG,IAAI,GACrB,OAAO,CAAC,OAAO,CAAC,CAAC;AAgEpB;;GAEG;AACH,eAAO,MAAM,aAAa,QAAO,MAAM,GAAG,IAGzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,MAAM,qBAElB,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,cAAc,QAAO,MAGjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,WAAW,QAAO,MAI9B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,UAAU,QAAO,MAG7B,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QAAO,MAAM,GAAG,IAG9C,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,MAAM,EAAE,UAAU,GAAG,WAAW,GAAG,QAAQ,CAAC;IAC5C,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AACH,eAAO,MAAM,cAAc,QAAO,oBAYjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,eAAe,QAAO,MAAM,EAWxC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,iBAAiB,QAAO,OAEpC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,UAAU,QAAO,MAAM,GAAG,IAMtC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"store.d.ts","sourceRoot":"","sources":["../../../src/store.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,OAAO,CAAC;CAC7B,CAAC;AAyDF,eAAO,MAAM,eAAe;;yBAnCE,OAAO,CAAC,eAAe,CAAC;0BAuBvB,MAAM,IAAI;CAYa,CAAC;AAEvD,eAAO,MAAM,kBAAkB,GAAI,CAAC,GAAG,eAAe,EACpD,WAAU,CAAC,QAAQ,EAAE,eAAe,KAAK,CAA+B,MAQzE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hot-updater/react-native",
|
|
3
|
-
"version": "0.25.
|
|
3
|
+
"version": "0.25.7",
|
|
4
4
|
"description": "React Native OTA solution for self-hosted",
|
|
5
5
|
"main": "lib/commonjs/index",
|
|
6
6
|
"module": "lib/module/index",
|
|
@@ -120,14 +120,14 @@
|
|
|
120
120
|
"react-native": "0.79.1",
|
|
121
121
|
"react-native-builder-bob": "^0.40.10",
|
|
122
122
|
"typescript": "^5.8.3",
|
|
123
|
-
"hot-updater": "0.25.
|
|
123
|
+
"hot-updater": "0.25.7"
|
|
124
124
|
},
|
|
125
125
|
"dependencies": {
|
|
126
126
|
"use-sync-external-store": "1.5.0",
|
|
127
|
-
"@hot-updater/cli-tools": "0.25.
|
|
128
|
-
"@hot-updater/core": "0.25.
|
|
129
|
-
"@hot-updater/js": "0.25.
|
|
130
|
-
"@hot-updater/plugin-core": "0.25.
|
|
127
|
+
"@hot-updater/cli-tools": "0.25.7",
|
|
128
|
+
"@hot-updater/core": "0.25.7",
|
|
129
|
+
"@hot-updater/js": "0.25.7",
|
|
130
|
+
"@hot-updater/plugin-core": "0.25.7"
|
|
131
131
|
},
|
|
132
132
|
"scripts": {
|
|
133
133
|
"build": "bob build && tsc -p plugin/tsconfig.build.json",
|
package/src/index.ts
CHANGED
|
@@ -34,12 +34,6 @@ export {
|
|
|
34
34
|
} from "./types";
|
|
35
35
|
export type { HotUpdaterOptions, RunUpdateProcessResponse } from "./wrap";
|
|
36
36
|
|
|
37
|
-
addListener("onProgress", ({ progress }) => {
|
|
38
|
-
hotUpdaterStore.setState({
|
|
39
|
-
progress,
|
|
40
|
-
});
|
|
41
|
-
});
|
|
42
|
-
|
|
43
37
|
/**
|
|
44
38
|
* Register getBaseURL to global objects for use without imports.
|
|
45
39
|
* This is needed for Expo DOM components and Babel plugin generated code.
|
package/src/native.ts
CHANGED
|
@@ -21,11 +21,12 @@ export type HotUpdaterEvent = {
|
|
|
21
21
|
};
|
|
22
22
|
};
|
|
23
23
|
|
|
24
|
+
const eventEmitter = new NativeEventEmitter(HotUpdaterNative);
|
|
25
|
+
|
|
24
26
|
export const addListener = <T extends keyof HotUpdaterEvent>(
|
|
25
27
|
eventName: T,
|
|
26
28
|
listener: (event: HotUpdaterEvent[T]) => void,
|
|
27
29
|
) => {
|
|
28
|
-
const eventEmitter = new NativeEventEmitter(HotUpdaterNative);
|
|
29
30
|
const subscription = eventEmitter.addListener(eventName, listener);
|
|
30
31
|
|
|
31
32
|
return () => {
|
package/src/store.ts
CHANGED
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
import useSyncExternalStoreExports from "use-sync-external-store/shim/with-selector";
|
|
2
|
+
import { addListener } from "./native";
|
|
3
|
+
|
|
2
4
|
export type HotUpdaterState = {
|
|
3
5
|
progress: number;
|
|
4
6
|
isUpdateDownloaded: boolean;
|
|
@@ -52,6 +54,10 @@ const createHotUpdaterStore = () => {
|
|
|
52
54
|
return () => listeners.delete(listener);
|
|
53
55
|
};
|
|
54
56
|
|
|
57
|
+
// Subscribe to native onProgress events
|
|
58
|
+
// This listener is registered once when the store is created
|
|
59
|
+
addListener("onProgress", setState);
|
|
60
|
+
|
|
55
61
|
return { getSnapshot, setState, subscribe };
|
|
56
62
|
};
|
|
57
63
|
|