react-native-ota-hot-update 2.0.7 → 2.0.8

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.
Files changed (30) hide show
  1. package/README.md +56 -0
  2. package/android/generated/java/com/otahotupdate/NativeOtaHotUpdateSpec.java +4 -0
  3. package/android/generated/jni/RNOtaHotUpdateSpec-generated.cpp +6 -0
  4. package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI-generated.cpp +7 -0
  5. package/android/generated/jni/react/renderer/components/RNOtaHotUpdateSpec/RNOtaHotUpdateSpecJSI.h +9 -0
  6. package/android/src/main/java/com/otahotupdate/OtaHotUpdateModule.kt +59 -14
  7. package/android/src/main/java/com/otahotupdate/SharedPrefs.kt +1 -0
  8. package/android/src/oldarch/OtaHotUpdateSpec.kt +1 -0
  9. package/ios/OtaHotUpdate.mm +71 -8
  10. package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec-generated.mm +7 -0
  11. package/ios/generated/RNOtaHotUpdateSpec/RNOtaHotUpdateSpec.h +3 -0
  12. package/ios/generated/RNOtaHotUpdateSpecJSI-generated.cpp +7 -0
  13. package/ios/generated/RNOtaHotUpdateSpecJSI.h +9 -0
  14. package/lib/commonjs/NativeOtaHotUpdate.js.map +1 -1
  15. package/lib/commonjs/index.js +4 -0
  16. package/lib/commonjs/index.js.map +1 -1
  17. package/lib/module/NativeOtaHotUpdate.js.map +1 -1
  18. package/lib/module/index.js +4 -0
  19. package/lib/module/index.js.map +1 -1
  20. package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts +1 -0
  21. package/lib/typescript/commonjs/src/NativeOtaHotUpdate.d.ts.map +1 -1
  22. package/lib/typescript/commonjs/src/index.d.ts +2 -0
  23. package/lib/typescript/commonjs/src/index.d.ts.map +1 -1
  24. package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts +1 -0
  25. package/lib/typescript/module/src/NativeOtaHotUpdate.d.ts.map +1 -1
  26. package/lib/typescript/module/src/index.d.ts +2 -0
  27. package/lib/typescript/module/src/index.d.ts.map +1 -1
  28. package/package.json +1 -1
  29. package/src/NativeOtaHotUpdate.ts +1 -0
  30. package/src/index.tsx +4 -0
package/README.md CHANGED
@@ -49,6 +49,31 @@ Open `AppDelegate.m` and add this:
49
49
  #endif
50
50
  }
51
51
  ```
52
+ ### IOS React native 0.77 or above
53
+
54
+ From react native 0.77, AppDelegate changed to swift file, so the configuration will be change a bit.
55
+
56
+ 1. Create a Bridging Header
57
+ - Right-click on your project in the Xcode navigator and select New File from template.
58
+ - Select Header File under the iOS section and click Next.
59
+ - Name it something like `YourProjectName-Bridging-Header.h` and save it in your project directory.
60
+ - In your project's Build Settings: Search for `Objective-C Bridging Header`.
61
+ Set its value to the relative path of your bridging header file, e.g., YourProjectName/YourProjectName-Bridging-Header.h.
62
+ 2. Open `YourProjectName-Bridging-Header.h` and add this line:
63
+
64
+ `#import "OtaHotUpdate.h"`
65
+ 3. Open AppDelegate.swift:
66
+
67
+ ```bash
68
+ override func bundleURL() -> URL? {
69
+ #if DEBUG
70
+ RCTBundleURLProvider.sharedSettings().jsBundleURL(forBundleRoot: "index")
71
+ #else
72
+ OtaHotUpdate.getBundle() // -> Add this line
73
+ #endif
74
+ }
75
+ ```
76
+
52
77
  #### For downloading in background mode on IOS, following this (optional):
53
78
 
54
79
  AppDelegate.h:
@@ -74,6 +99,32 @@ AppDelegate.mm:
74
99
  }
75
100
  ```
76
101
 
102
+ AppDelegate.swift(RN >= 0.77):
103
+
104
+ ```bash
105
+ class AppDelegate: RCTAppDelegate {
106
+ var taskIdentifier: UIBackgroundTaskIdentifier = .invalid
107
+ ...
108
+ ```
109
+ ```bash
110
+ override func applicationWillResignActive(_ application: UIApplication) {
111
+ // End any existing background task
112
+ if taskIdentifier != .invalid {
113
+ application.endBackgroundTask(taskIdentifier)
114
+ taskIdentifier = .invalid
115
+ }
116
+
117
+ // Start a new background task
118
+ taskIdentifier = application.beginBackgroundTask(withName: nil) { [weak self] in
119
+ if let strongSelf = self {
120
+ application.endBackgroundTask(strongSelf.taskIdentifier)
121
+ strongSelf.taskIdentifier = .invalid
122
+ }
123
+ }
124
+ }
125
+
126
+ ```
127
+
77
128
 
78
129
  ### Android
79
130
  Open `MainApplication.kt` and add these codes bellow:
@@ -119,6 +170,11 @@ This method allows you to use a Git repository to host the bundle JS. The app pu
119
170
 
120
171
  For detailed instructions on how to implement this, refer to [**DOC_OTA_GIT.md**](DOC_OTA_GIT.md).
121
172
 
173
+
174
+ ### Build a Custom Admin Panel with CMS
175
+ Using Strapi, you can build a tailored admin panel to manage React Native hot updates effectively. This approach allows you to centralize the control of versioning and OTA updates while providing a user-friendly interface for managing content. To get started, refer to the detailed steps and code examples in this guide. For additional details, see [**OTA_CMS.md**](OTA_CMS.md).
176
+
177
+
122
178
  ## License
123
179
 
124
180
  [MIT](LICENSE)
@@ -55,4 +55,8 @@ public abstract class NativeOtaHotUpdateSpec extends ReactContextBaseJavaModule
55
55
  @ReactMethod
56
56
  @DoNotStrip
57
57
  public abstract void setCurrentVersion(String version, Promise promise);
58
+
59
+ @ReactMethod
60
+ @DoNotStrip
61
+ public abstract void rollbackToPreviousBundle(double a, Promise promise);
58
62
  }
@@ -42,6 +42,11 @@ static facebook::jsi::Value __hostFunction_NativeOtaHotUpdateSpecJSI_setCurrentV
42
42
  return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "setCurrentVersion", "(Ljava/lang/String;Lcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
43
43
  }
44
44
 
45
+ static facebook::jsi::Value __hostFunction_NativeOtaHotUpdateSpecJSI_rollbackToPreviousBundle(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
46
+ static jmethodID cachedMethodId = nullptr;
47
+ return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, PromiseKind, "rollbackToPreviousBundle", "(DLcom/facebook/react/bridge/Promise;)V", args, count, cachedMethodId);
48
+ }
49
+
45
50
  NativeOtaHotUpdateSpecJSI::NativeOtaHotUpdateSpecJSI(const JavaTurboModule::InitParams &params)
46
51
  : JavaTurboModule(params) {
47
52
  methodMap_["setupBundlePath"] = MethodMetadata {2, __hostFunction_NativeOtaHotUpdateSpecJSI_setupBundlePath};
@@ -50,6 +55,7 @@ NativeOtaHotUpdateSpecJSI::NativeOtaHotUpdateSpecJSI(const JavaTurboModule::Init
50
55
  methodMap_["restart"] = MethodMetadata {0, __hostFunction_NativeOtaHotUpdateSpecJSI_restart};
51
56
  methodMap_["getCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateSpecJSI_getCurrentVersion};
52
57
  methodMap_["setCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateSpecJSI_setCurrentVersion};
58
+ methodMap_["rollbackToPreviousBundle"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateSpecJSI_rollbackToPreviousBundle};
53
59
  }
54
60
 
55
61
  std::shared_ptr<TurboModule> RNOtaHotUpdateSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams &params) {
@@ -48,6 +48,12 @@ static jsi::Value __hostFunction_NativeOtaHotUpdateCxxSpecJSI_setCurrentVersion(
48
48
  count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
49
49
  );
50
50
  }
51
+ static jsi::Value __hostFunction_NativeOtaHotUpdateCxxSpecJSI_rollbackToPreviousBundle(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
52
+ return static_cast<NativeOtaHotUpdateCxxSpecJSI *>(&turboModule)->rollbackToPreviousBundle(
53
+ rt,
54
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
55
+ );
56
+ }
51
57
 
52
58
  NativeOtaHotUpdateCxxSpecJSI::NativeOtaHotUpdateCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
53
59
  : TurboModule("OtaHotUpdate", jsInvoker) {
@@ -57,6 +63,7 @@ NativeOtaHotUpdateCxxSpecJSI::NativeOtaHotUpdateCxxSpecJSI(std::shared_ptr<CallI
57
63
  methodMap_["restart"] = MethodMetadata {0, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_restart};
58
64
  methodMap_["getCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_getCurrentVersion};
59
65
  methodMap_["setCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_setCurrentVersion};
66
+ methodMap_["rollbackToPreviousBundle"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_rollbackToPreviousBundle};
60
67
  }
61
68
 
62
69
 
@@ -26,6 +26,7 @@ public:
26
26
  virtual void restart(jsi::Runtime &rt) = 0;
27
27
  virtual jsi::Value getCurrentVersion(jsi::Runtime &rt, double a) = 0;
28
28
  virtual jsi::Value setCurrentVersion(jsi::Runtime &rt, jsi::String version) = 0;
29
+ virtual jsi::Value rollbackToPreviousBundle(jsi::Runtime &rt, double a) = 0;
29
30
 
30
31
  };
31
32
 
@@ -100,6 +101,14 @@ private:
100
101
  return bridging::callFromJs<jsi::Value>(
101
102
  rt, &T::setCurrentVersion, jsInvoker_, instance_, std::move(version));
102
103
  }
104
+ jsi::Value rollbackToPreviousBundle(jsi::Runtime &rt, double a) override {
105
+ static_assert(
106
+ bridging::getParameterCount(&T::rollbackToPreviousBundle) == 2,
107
+ "Expected rollbackToPreviousBundle(...) to have 2 parameters");
108
+
109
+ return bridging::callFromJs<jsi::Value>(
110
+ rt, &T::rollbackToPreviousBundle, jsInvoker_, instance_, std::move(a));
111
+ }
103
112
 
104
113
  private:
105
114
  friend class NativeOtaHotUpdateCxxSpec;
@@ -1,6 +1,7 @@
1
1
  package com.otahotupdate
2
2
 
3
3
  import android.content.Context
4
+ import android.icu.text.SimpleDateFormat
4
5
  import android.util.Log
5
6
  import com.facebook.react.bridge.Promise
6
7
  import com.facebook.react.bridge.ReactApplicationContext
@@ -9,9 +10,12 @@ import com.jakewharton.processphoenix.ProcessPhoenix
9
10
  import com.otahotupdate.OtaHotUpdate.Companion.getPackageInfo
10
11
  import com.rnhotupdate.Common.CURRENT_VERSION_NAME
11
12
  import com.rnhotupdate.Common.PATH
13
+ import com.rnhotupdate.Common.PREVIOUS_PATH
12
14
  import com.rnhotupdate.Common.VERSION
13
15
  import com.rnhotupdate.SharedPrefs
14
16
  import java.io.File
17
+ import java.util.Date
18
+ import java.util.Locale
15
19
  import java.util.zip.ZipFile
16
20
 
17
21
  class OtaHotUpdateModule internal constructor(context: ReactApplicationContext) :
@@ -37,13 +41,14 @@ class OtaHotUpdateModule internal constructor(context: ReactApplicationContext)
37
41
  // Finally, delete the empty directory or file
38
42
  return directory.delete()
39
43
  }
40
- private fun deleteOldBundleIfneeded(): Boolean {
44
+ private fun deleteOldBundleIfneeded(pathKey: String?): Boolean {
45
+ val pathName = if (pathKey != null) pathKey else PREVIOUS_PATH
41
46
  val sharedPrefs = SharedPrefs(reactApplicationContext)
42
- val path = sharedPrefs.getString(PATH)
47
+ val path = sharedPrefs.getString(pathName)
43
48
  val file = File(path)
44
49
  if (file.exists() && file.isFile) {
45
50
  val isDeleted = deleteDirectory(file.parentFile)
46
- sharedPrefs.clear()
51
+ sharedPrefs.putString(pathName, "")
47
52
  return isDeleted
48
53
  } else {
49
54
  return false
@@ -54,27 +59,44 @@ class OtaHotUpdateModule internal constructor(context: ReactApplicationContext)
54
59
  ): String? {
55
60
  return try {
56
61
  val outputDir = zipFile.parentFile
62
+ val timestamp = SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(Date())
63
+ var topLevelFolder: String? = null
57
64
  var bundlePath: String? = null
58
65
  ZipFile(zipFile).use { zip ->
59
66
  zip.entries().asSequence().forEach { entry ->
60
67
  zip.getInputStream(entry).use { input ->
68
+ if (topLevelFolder == null) {
69
+ val parts = entry.name.split("/")
70
+ if (parts.size > 1) {
71
+ topLevelFolder = parts.first()
72
+ }
73
+ }
74
+ val outputFile = File(outputDir, entry.name)
61
75
  if (entry.isDirectory) {
62
- val d = File(outputDir, entry.name)
63
- if (!d.exists()) d.mkdirs()
76
+ if (!outputFile.exists()) outputFile.mkdirs()
64
77
  } else {
65
- val f = File(outputDir, entry.name)
66
- if (f.parentFile?.exists() != true) f.parentFile?.mkdirs()
67
-
68
- f.outputStream().use { output ->
78
+ if (outputFile.parentFile?.exists() != true) outputFile.parentFile?.mkdirs()
79
+ outputFile.outputStream().use { output ->
69
80
  input.copyTo(output)
70
81
  }
71
- if (f.absolutePath.contains(extension)) {
72
- bundlePath = f.absolutePath
82
+ if (outputFile.absolutePath.endsWith(extension)) {
83
+ bundlePath = outputFile.absolutePath
84
+ return@use // Exit early if found
73
85
  }
74
86
  }
75
87
  }
76
88
  }
77
89
  }
90
+ // Rename the detected top-level folder
91
+ if (topLevelFolder != null) {
92
+ val extractedFolder = File(outputDir, topLevelFolder)
93
+ val renamedFolder = File(outputDir, "output_$timestamp")
94
+ if (extractedFolder.exists()) {
95
+ extractedFolder.renameTo(renamedFolder)
96
+ // Update bundlePath if the file was inside the renamed folder
97
+ bundlePath = bundlePath?.replace(extractedFolder.absolutePath, renamedFolder.absolutePath)
98
+ }
99
+ }
78
100
  bundlePath
79
101
  } catch (e: Exception) {
80
102
  e.printStackTrace()
@@ -88,12 +110,16 @@ class OtaHotUpdateModule internal constructor(context: ReactApplicationContext)
88
110
  if (path != null) {
89
111
  val file = File(path)
90
112
  if (file.exists() && file.isFile) {
91
- deleteOldBundleIfneeded()
113
+ deleteOldBundleIfneeded(null)
92
114
  val fileUnzip = extractZipFile(file, extension ?: ".bundle")
93
115
  if (fileUnzip != null) {
94
116
  Log.d("setupBundlePath----: ", fileUnzip)
95
117
  file.delete()
96
118
  val sharedPrefs = SharedPrefs(reactApplicationContext)
119
+ val oldPath = sharedPrefs.getString(PATH)
120
+ if (!oldPath.equals("")) {
121
+ sharedPrefs.putString(PREVIOUS_PATH, oldPath)
122
+ }
97
123
  sharedPrefs.putString(PATH, fileUnzip)
98
124
  sharedPrefs.putString(CURRENT_VERSION_NAME, reactApplicationContext?.getPackageInfo()?.versionName)
99
125
  promise.resolve(true)
@@ -114,10 +140,11 @@ class OtaHotUpdateModule internal constructor(context: ReactApplicationContext)
114
140
 
115
141
  @ReactMethod
116
142
  override fun deleteBundle(i: Double, promise: Promise) {
117
- val isDeleted = deleteOldBundleIfneeded()
143
+ val isDeleted = deleteOldBundleIfneeded(PATH)
144
+ val isDeletedOldPath = deleteOldBundleIfneeded(PREVIOUS_PATH)
118
145
  val sharedPrefs = SharedPrefs(reactApplicationContext)
119
146
  sharedPrefs.putString(VERSION, "0")
120
- promise.resolve(isDeleted)
147
+ promise.resolve(isDeleted && isDeletedOldPath)
121
148
  }
122
149
 
123
150
  @ReactMethod
@@ -151,6 +178,24 @@ class OtaHotUpdateModule internal constructor(context: ReactApplicationContext)
151
178
  sharedPrefs.putString(CURRENT_VERSION_NAME, reactApplicationContext?.getPackageInfo()?.versionName)
152
179
  promise.resolve(true)
153
180
  }
181
+
182
+ @ReactMethod
183
+ override fun rollbackToPreviousBundle(a: Double, promise: Promise) {
184
+ val sharedPrefs = SharedPrefs(reactApplicationContext)
185
+ val oldPath = sharedPrefs.getString(PREVIOUS_PATH)
186
+ if (oldPath != "") {
187
+ val isDeleted = deleteOldBundleIfneeded(PATH)
188
+ if (isDeleted) {
189
+ sharedPrefs.putString(PATH, oldPath)
190
+ sharedPrefs.putString(PREVIOUS_PATH, "")
191
+ promise.resolve(true)
192
+ } else {
193
+ promise.resolve(false)
194
+ }
195
+ } else {
196
+ promise.resolve(false)
197
+ }
198
+ }
154
199
  companion object {
155
200
  const val NAME = "OtaHotUpdate"
156
201
  }
@@ -25,6 +25,7 @@ class SharedPrefs internal constructor(context: Context) {
25
25
  }
26
26
  object Common {
27
27
  val PATH = "PATH"
28
+ val PREVIOUS_PATH = "PREVIOUS_PATH"
28
29
  val VERSION = "VERSION"
29
30
  val CURRENT_VERSION_NAME = "CURRENT_VERSION_NAME"
30
31
  val SHARED_PREFERENCE_NAME = "HOT-UPDATE-REACT_NATIVE"
@@ -13,4 +13,5 @@ abstract class OtaHotUpdateSpec internal constructor(context: ReactApplicationCo
13
13
  abstract fun getCurrentVersion(a: Double, promise: Promise)
14
14
  abstract fun setCurrentVersion(version: String?, promise: Promise)
15
15
  abstract fun setExactBundlePath(path: String?, promise: Promise)
16
+ abstract fun rollbackToPreviousBundle()
16
17
  }
@@ -66,13 +66,14 @@ RCT_EXPORT_MODULE()
66
66
  return success;
67
67
  }
68
68
 
69
- - (BOOL)removeBundleIfNeeded {
69
+ - (BOOL)removeBundleIfNeeded:(NSString *)pathKey {
70
+ NSString *keyToUse = pathKey ? pathKey : @"OLD_PATH";
70
71
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
71
- NSString *retrievedString = [defaults stringForKey:@"PATH"];
72
+ NSString *retrievedString = [defaults stringForKey:keyToUse];
72
73
  NSError *error = nil;
73
74
  if (retrievedString && [self isFilePathValid:retrievedString]) {
74
75
  BOOL isDeleted = [self deleteAllContentsOfParentDirectoryOfFile:retrievedString error:&error];
75
- [defaults removeObjectForKey:@"PATH"];
76
+ [defaults removeObjectForKey:keyToUse];
76
77
  [defaults synchronize];
77
78
  return isDeleted;
78
79
  } else {
@@ -129,6 +130,34 @@ RCT_EXPORT_MODULE()
129
130
 
130
131
  return nil;
131
132
  }
133
+ - (NSString *)renameExtractedFolderInDirectory:(NSString *)directoryPath {
134
+ NSFileManager *fileManager = [NSFileManager defaultManager];
135
+ NSError *error = nil;
136
+
137
+ // Get the contents of the extracted directory
138
+ NSArray *contents = [fileManager contentsOfDirectoryAtPath:directoryPath error:&error];
139
+ if (error || contents.count != 1) {
140
+ NSLog(@"Error retrieving extracted folder or unexpected structure: %@", error.localizedDescription);
141
+ return nil;
142
+ }
143
+
144
+ // Get the original extracted folder name (assuming only one folder exists)
145
+ NSString *originalFolderName = contents.firstObject;
146
+ NSString *originalFolderPath = [directoryPath stringByAppendingPathComponent:originalFolderName];
147
+
148
+ // Generate new folder name with timestamp
149
+ NSString *timestamp = [NSString stringWithFormat:@"output_%ld", (long)[[NSDate date] timeIntervalSince1970]];
150
+ NSString *newFolderPath = [directoryPath stringByAppendingPathComponent:timestamp];
151
+
152
+ // Rename the extracted folder
153
+ if (![fileManager moveItemAtPath:originalFolderPath toPath:newFolderPath error:&error]) {
154
+ NSLog(@"Failed to rename folder: %@", error.localizedDescription);
155
+ return nil;
156
+ }
157
+
158
+ NSLog(@"Renamed extracted folder to: %@", newFolderPath);
159
+ return newFolderPath;
160
+ }
132
161
  - (NSString *)unzipFileAtPath:(NSString *)zipFilePath extension:(NSString *)extension {
133
162
  // Define the directory where the files will be extracted
134
163
  NSString *extractedFolderPath = [[zipFilePath stringByDeletingPathExtension] stringByAppendingPathExtension:@"unzip"];
@@ -152,8 +181,14 @@ RCT_EXPORT_MODULE()
152
181
  NSLog(@"Failed to unzip file");
153
182
  return nil;
154
183
  }
184
+ // Try renaming the extracted folder
185
+ NSString *renamedFolderPath = [self renameExtractedFolderInDirectory:extractedFolderPath];
186
+
187
+ // If renaming fails, use the original extracted folder path
188
+ NSString *finalFolderPath = renamedFolderPath ? renamedFolderPath : extractedFolderPath;
189
+
155
190
  // Find .jsbundle files in the extracted directory
156
- NSString *jsbundleFilePath = [self searchForJsBundleInDirectory:extractedFolderPath extension:extension];
191
+ NSString *jsbundleFilePath = [self searchForJsBundleInDirectory:finalFolderPath extension:extension];
157
192
 
158
193
  // Delete the zip file after extraction
159
194
  NSError *removeError = nil;
@@ -171,12 +206,16 @@ RCT_EXPORT_METHOD(setupBundlePath:(NSString *)path extension:(NSString *)extensi
171
206
  resolve:(RCTPromiseResolveBlock)resolve
172
207
  reject:(RCTPromiseRejectBlock)reject) {
173
208
  if ([self isFilePathValid:path]) {
174
- [self removeBundleIfNeeded];
209
+ [self removeBundleIfNeeded:nil];
175
210
  //Unzip file
176
211
  NSString *extractedFilePath = [self unzipFileAtPath:path extension:(extension != nil) ? extension : @".jsbundle"];
177
212
  if (extractedFilePath) {
178
213
  NSLog(@"file extraction----- %@", extractedFilePath);
179
214
  NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
215
+ NSString *oldPath = [defaults stringForKey:@"PATH"];
216
+ if (oldPath) {
217
+ [defaults setObject:oldPath forKey:@"OLD_PATH"];
218
+ }
180
219
  [defaults setObject:extractedFilePath forKey:@"PATH"];
181
220
  [defaults setObject:[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"] forKey:@"VERSION_NAME"];
182
221
  [defaults synchronize];
@@ -188,12 +227,36 @@ RCT_EXPORT_METHOD(setupBundlePath:(NSString *)path extension:(NSString *)extensi
188
227
  resolve(@(NO));
189
228
  }
190
229
  }
191
- // Expose deleteBundle method to JavaScript
192
230
  RCT_EXPORT_METHOD(deleteBundle:(double)i
193
231
  resolve:(RCTPromiseResolveBlock)resolve
194
232
  reject:(RCTPromiseRejectBlock)reject) {
195
- BOOL isDeleted = [self removeBundleIfNeeded];
196
- resolve(@(isDeleted));
233
+ BOOL isDeleted = [self removeBundleIfNeeded:@"PATH"];
234
+ BOOL isDeletedOld = [self removeBundleIfNeeded:nil];
235
+ if (isDeleted && isDeletedOld) {
236
+ resolve(@(YES));
237
+ } else {
238
+ resolve(@(NO));
239
+ }
240
+ }
241
+ // Expose deleteBundle method to JavaScript
242
+ RCT_EXPORT_METHOD(rollbackToPreviousBundle:(double)i
243
+ resolve:(RCTPromiseResolveBlock)resolve
244
+ reject:(RCTPromiseRejectBlock)reject) {
245
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
246
+ NSString *oldPath = [defaults stringForKey:@"OLD_PATH"];
247
+ if (oldPath && [self isFilePathValid:oldPath]) {
248
+ BOOL isDeleted = [self removeBundleIfNeeded:@"PATH"];
249
+ if (isDeleted) {
250
+ [defaults setObject:oldPath forKey:@"PATH"];
251
+ [defaults removeObjectForKey:@"OLD_PATH"];
252
+ [defaults synchronize];
253
+ resolve(@(YES));
254
+ } else {
255
+ resolve(@(NO));
256
+ }
257
+ } else {
258
+ resolve(@(NO));
259
+ }
197
260
  }
198
261
 
199
262
  RCT_EXPORT_METHOD(getCurrentVersion:(double)a
@@ -50,6 +50,10 @@ namespace facebook::react {
50
50
  return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "setCurrentVersion", @selector(setCurrentVersion:resolve:reject:), args, count);
51
51
  }
52
52
 
53
+ static facebook::jsi::Value __hostFunction_NativeOtaHotUpdateSpecJSI_rollbackToPreviousBundle(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
54
+ return static_cast<ObjCTurboModule&>(turboModule).invokeObjCMethod(rt, PromiseKind, "rollbackToPreviousBundle", @selector(rollbackToPreviousBundle:resolve:reject:), args, count);
55
+ }
56
+
53
57
  NativeOtaHotUpdateSpecJSI::NativeOtaHotUpdateSpecJSI(const ObjCTurboModule::InitParams &params)
54
58
  : ObjCTurboModule(params) {
55
59
 
@@ -70,5 +74,8 @@ namespace facebook::react {
70
74
 
71
75
  methodMap_["setCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateSpecJSI_setCurrentVersion};
72
76
 
77
+
78
+ methodMap_["rollbackToPreviousBundle"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateSpecJSI_rollbackToPreviousBundle};
79
+
73
80
  }
74
81
  } // namespace facebook::react
@@ -50,6 +50,9 @@
50
50
  - (void)setCurrentVersion:(NSString *)version
51
51
  resolve:(RCTPromiseResolveBlock)resolve
52
52
  reject:(RCTPromiseRejectBlock)reject;
53
+ - (void)rollbackToPreviousBundle:(double)a
54
+ resolve:(RCTPromiseResolveBlock)resolve
55
+ reject:(RCTPromiseRejectBlock)reject;
53
56
 
54
57
  @end
55
58
 
@@ -48,6 +48,12 @@ static jsi::Value __hostFunction_NativeOtaHotUpdateCxxSpecJSI_setCurrentVersion(
48
48
  count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt)
49
49
  );
50
50
  }
51
+ static jsi::Value __hostFunction_NativeOtaHotUpdateCxxSpecJSI_rollbackToPreviousBundle(jsi::Runtime &rt, TurboModule &turboModule, const jsi::Value* args, size_t count) {
52
+ return static_cast<NativeOtaHotUpdateCxxSpecJSI *>(&turboModule)->rollbackToPreviousBundle(
53
+ rt,
54
+ count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asNumber()
55
+ );
56
+ }
51
57
 
52
58
  NativeOtaHotUpdateCxxSpecJSI::NativeOtaHotUpdateCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
53
59
  : TurboModule("OtaHotUpdate", jsInvoker) {
@@ -57,6 +63,7 @@ NativeOtaHotUpdateCxxSpecJSI::NativeOtaHotUpdateCxxSpecJSI(std::shared_ptr<CallI
57
63
  methodMap_["restart"] = MethodMetadata {0, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_restart};
58
64
  methodMap_["getCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_getCurrentVersion};
59
65
  methodMap_["setCurrentVersion"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_setCurrentVersion};
66
+ methodMap_["rollbackToPreviousBundle"] = MethodMetadata {1, __hostFunction_NativeOtaHotUpdateCxxSpecJSI_rollbackToPreviousBundle};
60
67
  }
61
68
 
62
69
 
@@ -26,6 +26,7 @@ public:
26
26
  virtual void restart(jsi::Runtime &rt) = 0;
27
27
  virtual jsi::Value getCurrentVersion(jsi::Runtime &rt, double a) = 0;
28
28
  virtual jsi::Value setCurrentVersion(jsi::Runtime &rt, jsi::String version) = 0;
29
+ virtual jsi::Value rollbackToPreviousBundle(jsi::Runtime &rt, double a) = 0;
29
30
 
30
31
  };
31
32
 
@@ -100,6 +101,14 @@ private:
100
101
  return bridging::callFromJs<jsi::Value>(
101
102
  rt, &T::setCurrentVersion, jsInvoker_, instance_, std::move(version));
102
103
  }
104
+ jsi::Value rollbackToPreviousBundle(jsi::Runtime &rt, double a) override {
105
+ static_assert(
106
+ bridging::getParameterCount(&T::rollbackToPreviousBundle) == 2,
107
+ "Expected rollbackToPreviousBundle(...) to have 2 parameters");
108
+
109
+ return bridging::callFromJs<jsi::Value>(
110
+ rt, &T::rollbackToPreviousBundle, jsInvoker_, instance_, std::move(a));
111
+ }
103
112
 
104
113
  private:
105
114
  friend class NativeOtaHotUpdateCxxSpec;
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOtaHotUpdate.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAWpCC,gCAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_default","exports","default","TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOtaHotUpdate.ts"],"mappings":";;;;;;AACA,IAAAA,YAAA,GAAAC,OAAA;AAAmD,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAYpCC,gCAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -44,6 +44,9 @@ function deleteBundlePath() {
44
44
  function getCurrentVersion() {
45
45
  return RNhotupdate.getCurrentVersion(0);
46
46
  }
47
+ function rollbackToPreviousBundle() {
48
+ return RNhotupdate.rollbackToPreviousBundle(0);
49
+ }
47
50
  async function getVersionAsNumber() {
48
51
  const rawVersion = await getCurrentVersion();
49
52
  return +rawVersion;
@@ -163,6 +166,7 @@ var _default = exports.default = {
163
166
  resetApp,
164
167
  getCurrentVersion: getVersionAsNumber,
165
168
  setCurrentVersion,
169
+ rollbackToPreviousBundle,
166
170
  git: {
167
171
  checkForGitUpdate,
168
172
  ..._index.default,
@@ -1 +1 @@
1
- {"version":3,"names":["_reactNative","require","_index","_interopRequireDefault","e","__esModule","default","LINKING_ERROR","Platform","select","ios","isTurboModuleEnabled","global","__turboModuleProxy","OtaHotUpdateModule","NativeModules","OtaHotUpdate","RNhotupdate","Proxy","get","Error","downloadBundleFile","downloadManager","uri","headers","callback","res","config","fileCache","OS","fetch","progress","received","total","path","setupBundlePath","extension","setupExactBundlePath","setExactBundlePath","deleteBundlePath","deleteBundle","getCurrentVersion","getVersionAsNumber","rawVersion","setCurrentVersion","version","resetApp","restart","removeBundle","restartAfterRemoved","then","data","setTimeout","installFail","option","updateFail","JSON","stringify","console","error","downloadBundleUri","currentVersion","extensionBundle","success","updateSuccess","restartAfterInstall","checkForGitUpdate","options","url","bundlePath","branch","Promise","all","git","getConfig","getBranchName","pull","pullUpdate","onProgress","folderName","onPullSuccess","onPullFailed","msg","clone","cloneRepo","bundle","onCloneSuccess","onCloneFailed","toString","onFinishProgress","_default","exports","removeUpdate","removeGitUpdate","folder"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_reactNative","require","_index","_interopRequireDefault","e","__esModule","default","LINKING_ERROR","Platform","select","ios","isTurboModuleEnabled","global","__turboModuleProxy","OtaHotUpdateModule","NativeModules","OtaHotUpdate","RNhotupdate","Proxy","get","Error","downloadBundleFile","downloadManager","uri","headers","callback","res","config","fileCache","OS","fetch","progress","received","total","path","setupBundlePath","extension","setupExactBundlePath","setExactBundlePath","deleteBundlePath","deleteBundle","getCurrentVersion","rollbackToPreviousBundle","getVersionAsNumber","rawVersion","setCurrentVersion","version","resetApp","restart","removeBundle","restartAfterRemoved","then","data","setTimeout","installFail","option","updateFail","JSON","stringify","console","error","downloadBundleUri","currentVersion","extensionBundle","success","updateSuccess","restartAfterInstall","checkForGitUpdate","options","url","bundlePath","branch","Promise","all","git","getConfig","getBranchName","pull","pullUpdate","onProgress","folderName","onPullSuccess","onPullFailed","msg","clone","cloneRepo","bundle","onCloneSuccess","onCloneFailed","toString","onFinishProgress","_default","exports","removeUpdate","removeGitUpdate","folder"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOtaHotUpdate.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAWlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
1
+ {"version":3,"names":["TurboModuleRegistry","getEnforcing"],"sourceRoot":"../../src","sources":["NativeOtaHotUpdate.ts"],"mappings":";;AACA,SAASA,mBAAmB,QAAQ,cAAc;AAYlD,eAAeA,mBAAmB,CAACC,YAAY,CAAO,cAAc,CAAC","ignoreList":[]}
@@ -39,6 +39,9 @@ function deleteBundlePath() {
39
39
  function getCurrentVersion() {
40
40
  return RNhotupdate.getCurrentVersion(0);
41
41
  }
42
+ function rollbackToPreviousBundle() {
43
+ return RNhotupdate.rollbackToPreviousBundle(0);
44
+ }
42
45
  async function getVersionAsNumber() {
43
46
  const rawVersion = await getCurrentVersion();
44
47
  return +rawVersion;
@@ -158,6 +161,7 @@ export default {
158
161
  resetApp,
159
162
  getCurrentVersion: getVersionAsNumber,
160
163
  setCurrentVersion,
164
+ rollbackToPreviousBundle,
161
165
  git: {
162
166
  checkForGitUpdate,
163
167
  ...git,
@@ -1 +1 @@
1
- {"version":3,"names":["NativeModules","Platform","git","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","OtaHotUpdateModule","require","OtaHotUpdate","RNhotupdate","Proxy","get","Error","downloadBundleFile","downloadManager","uri","headers","callback","res","config","fileCache","OS","fetch","progress","received","total","path","setupBundlePath","extension","setupExactBundlePath","setExactBundlePath","deleteBundlePath","deleteBundle","getCurrentVersion","getVersionAsNumber","rawVersion","setCurrentVersion","version","resetApp","restart","removeBundle","restartAfterRemoved","then","data","setTimeout","installFail","option","e","updateFail","JSON","stringify","console","error","downloadBundleUri","currentVersion","extensionBundle","success","updateSuccess","restartAfterInstall","checkForGitUpdate","options","url","bundlePath","branch","Promise","all","getConfig","getBranchName","pull","pullUpdate","onProgress","folderName","onPullSuccess","onPullFailed","msg","clone","cloneRepo","bundle","onCloneSuccess","onCloneFailed","toString","onFinishProgress","removeUpdate","removeGitUpdate","folder"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NativeModules","Platform","git","LINKING_ERROR","select","ios","default","isTurboModuleEnabled","global","__turboModuleProxy","OtaHotUpdateModule","require","OtaHotUpdate","RNhotupdate","Proxy","get","Error","downloadBundleFile","downloadManager","uri","headers","callback","res","config","fileCache","OS","fetch","progress","received","total","path","setupBundlePath","extension","setupExactBundlePath","setExactBundlePath","deleteBundlePath","deleteBundle","getCurrentVersion","rollbackToPreviousBundle","getVersionAsNumber","rawVersion","setCurrentVersion","version","resetApp","restart","removeBundle","restartAfterRemoved","then","data","setTimeout","installFail","option","e","updateFail","JSON","stringify","console","error","downloadBundleUri","currentVersion","extensionBundle","success","updateSuccess","restartAfterInstall","checkForGitUpdate","options","url","bundlePath","branch","Promise","all","getConfig","getBranchName","pull","pullUpdate","onProgress","folderName","onPullSuccess","onPullFailed","msg","clone","cloneRepo","bundle","onCloneSuccess","onCloneFailed","toString","onFinishProgress","removeUpdate","removeGitUpdate","folder"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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","ignoreList":[]}
@@ -6,6 +6,7 @@ export interface Spec extends TurboModule {
6
6
  restart(): void;
7
7
  getCurrentVersion(a: number): Promise<string>;
8
8
  setCurrentVersion(version: string): Promise<boolean>;
9
+ rollbackToPreviousBundle(a: number): Promise<boolean>;
9
10
  }
10
11
  declare const _default: Spec;
11
12
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeOtaHotUpdate.d.ts","sourceRoot":"","sources":["../../../../src/NativeOtaHotUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;;AAED,wBAAsE"}
1
+ {"version":3,"file":"NativeOtaHotUpdate.d.ts","sourceRoot":"","sources":["../../../../src/NativeOtaHotUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;;AAED,wBAAsE"}
@@ -2,6 +2,7 @@ import type { DownloadManager } from './download';
2
2
  import type { UpdateGitOption, UpdateOption } from './type';
3
3
  declare function setupBundlePath(path: string, extension?: string): Promise<boolean>;
4
4
  declare function setupExactBundlePath(path: string): Promise<boolean>;
5
+ declare function rollbackToPreviousBundle(): Promise<boolean>;
5
6
  declare function getVersionAsNumber(): Promise<number>;
6
7
  declare function setCurrentVersion(version: number): Promise<boolean>;
7
8
  declare function resetApp(): Promise<void>;
@@ -15,6 +16,7 @@ declare const _default: {
15
16
  resetApp: typeof resetApp;
16
17
  getCurrentVersion: typeof getVersionAsNumber;
17
18
  setCurrentVersion: typeof setCurrentVersion;
19
+ rollbackToPreviousBundle: typeof rollbackToPreviousBundle;
18
20
  git: {
19
21
  removeGitUpdate: (folder?: string) => void;
20
22
  cloneRepo: (options: import("./type").CloneOption) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA+C5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,iBA8CtB;;;;;;;;;;mCA+D8B,MAAM;;;;;;;;;;;;;;;;oBAxLX,CAAC;iBAEd,CAAC;;;qCAwH4B,eAAe;;;AAmDzD,wBAgBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA+C5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAS,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AACD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,iBA8CtB;;;;;;;;;;;mCAgE8B,MAAM;;;;;;;;;;;;;;;;oBA5LX,CAAC;iBAEd,CAAC;;;qCA2H4B,eAAe;;;AAmDzD,wBAiBE"}
@@ -6,6 +6,7 @@ export interface Spec extends TurboModule {
6
6
  restart(): void;
7
7
  getCurrentVersion(a: number): Promise<string>;
8
8
  setCurrentVersion(version: string): Promise<boolean>;
9
+ rollbackToPreviousBundle(a: number): Promise<boolean>;
9
10
  }
10
11
  declare const _default: Spec;
11
12
  export default _default;
@@ -1 +1 @@
1
- {"version":3,"file":"NativeOtaHotUpdate.d.ts","sourceRoot":"","sources":["../../../../src/NativeOtaHotUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACtD;;AAED,wBAAsE"}
1
+ {"version":3,"file":"NativeOtaHotUpdate.d.ts","sourceRoot":"","sources":["../../../../src/NativeOtaHotUpdate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAGhD,MAAM,WAAW,IAAK,SAAQ,WAAW;IACvC,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnD,YAAY,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1C,OAAO,IAAI,IAAI,CAAC;IAChB,iBAAiB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC9C,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,wBAAwB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACvD;;AAED,wBAAsE"}
@@ -2,6 +2,7 @@ import type { DownloadManager } from './download';
2
2
  import type { UpdateGitOption, UpdateOption } from './type';
3
3
  declare function setupBundlePath(path: string, extension?: string): Promise<boolean>;
4
4
  declare function setupExactBundlePath(path: string): Promise<boolean>;
5
+ declare function rollbackToPreviousBundle(): Promise<boolean>;
5
6
  declare function getVersionAsNumber(): Promise<number>;
6
7
  declare function setCurrentVersion(version: number): Promise<boolean>;
7
8
  declare function resetApp(): Promise<void>;
@@ -15,6 +16,7 @@ declare const _default: {
15
16
  resetApp: typeof resetApp;
16
17
  getCurrentVersion: typeof getVersionAsNumber;
17
18
  setCurrentVersion: typeof setCurrentVersion;
19
+ rollbackToPreviousBundle: typeof rollbackToPreviousBundle;
18
20
  git: {
19
21
  removeGitUpdate: (folder?: string) => void;
20
22
  cloneRepo: (options: import("./type").CloneOption) => Promise<{
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA+C5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,iBA8CtB;;;;;;;;;;mCA+D8B,MAAM;;;;;;;;;;;;;;;;oBAxLX,CAAC;iBAEd,CAAC;;;qCAwH4B,eAAe;;;AAmDzD,wBAgBE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/index.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA+C5D,iBAAS,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE3E;AACD,iBAAS,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AAOD,iBAAS,wBAAwB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEpD;AACD,iBAAe,kBAAkB,oBAGhC;AACD,iBAAS,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAE5D;AACD,iBAAe,QAAQ,kBAEtB;AACD,iBAAS,YAAY,CAAC,mBAAmB,CAAC,EAAE,OAAO,QAWlD;AAKD,iBAAe,iBAAiB,CAC9B,eAAe,EAAE,eAAe,EAChC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,YAAY,iBA8CtB;;;;;;;;;;;mCAgE8B,MAAM;;;;;;;;;;;;;;;;oBA5LX,CAAC;iBAEd,CAAC;;;qCA2H4B,eAAe;;;AAmDzD,wBAiBE"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "react-native-ota-hot-update",
3
- "version": "2.0.7",
3
+ "version": "2.0.8",
4
4
  "description": "Hot update for react native",
5
5
  "source": "./src/index.tsx",
6
6
  "main": "./lib/commonjs/index.js",
@@ -8,6 +8,7 @@ export interface Spec extends TurboModule {
8
8
  restart(): void;
9
9
  getCurrentVersion(a: number): Promise<string>;
10
10
  setCurrentVersion(version: string): Promise<boolean>;
11
+ rollbackToPreviousBundle(a: number): Promise<boolean>;
11
12
  }
12
13
 
13
14
  export default TurboModuleRegistry.getEnforcing<Spec>('OtaHotUpdate');
package/src/index.tsx CHANGED
@@ -59,6 +59,9 @@ function deleteBundlePath(): Promise<boolean> {
59
59
  function getCurrentVersion(): Promise<string> {
60
60
  return RNhotupdate.getCurrentVersion(0);
61
61
  }
62
+ function rollbackToPreviousBundle(): Promise<boolean> {
63
+ return RNhotupdate.rollbackToPreviousBundle(0);
64
+ }
62
65
  async function getVersionAsNumber() {
63
66
  const rawVersion = await getCurrentVersion();
64
67
  return +rawVersion;
@@ -195,6 +198,7 @@ export default {
195
198
  resetApp,
196
199
  getCurrentVersion: getVersionAsNumber,
197
200
  setCurrentVersion,
201
+ rollbackToPreviousBundle,
198
202
  git: {
199
203
  checkForGitUpdate,
200
204
  ...git,