@capawesome/capacitor-live-update 6.4.2 → 6.6.0

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 (32) hide show
  1. package/README.md +46 -5
  2. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdate.java +363 -251
  3. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdateHttpClient.java +71 -0
  4. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdatePlugin.java +65 -60
  5. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/Manifest.java +58 -0
  6. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/ManifestItem.java +37 -0
  7. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/api/GetLatestBundleResponse.java +19 -27
  8. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/options/DownloadBundleOptions.java +15 -1
  9. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/FetchLatestBundleResult.java +22 -0
  10. package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/enums/ArtifactType.java +6 -0
  11. package/dist/docs.json +67 -4
  12. package/dist/esm/definitions.d.ts +42 -3
  13. package/dist/esm/definitions.js.map +1 -1
  14. package/dist/esm/web.d.ts +2 -1
  15. package/dist/esm/web.js +3 -0
  16. package/dist/esm/web.js.map +1 -1
  17. package/dist/plugin.cjs.js +3 -0
  18. package/dist/plugin.cjs.js.map +1 -1
  19. package/dist/plugin.js +3 -0
  20. package/dist/plugin.js.map +1 -1
  21. package/ios/Plugin/Classes/Manifest.swift +20 -0
  22. package/ios/Plugin/Classes/Options/DownloadBundleOptions.swift +11 -1
  23. package/ios/Plugin/Classes/Results/FetchLatestBundle.swift +16 -0
  24. package/ios/Plugin/Enums/ArtifactType.swift +4 -0
  25. package/ios/Plugin/{Classes → Enums}/CustomError.swift +3 -0
  26. package/ios/Plugin/LiveUpdate.swift +279 -198
  27. package/ios/Plugin/LiveUpdateHttpClient.swift +42 -0
  28. package/ios/Plugin/LiveUpdatePlugin.m +1 -0
  29. package/ios/Plugin/LiveUpdatePlugin.swift +77 -61
  30. package/ios/Plugin/Protocols/Api/GetLatestBundleResponse.swift +2 -3
  31. package/ios/Plugin/Protocols/Api/ManifestItem.swift +5 -0
  32. package/package.json +1 -1
@@ -8,7 +8,7 @@ import Capacitor
8
8
  @objc(LiveUpdatePlugin)
9
9
  public class LiveUpdatePlugin: CAPPlugin {
10
10
  public static let tag = "LiveUpdate"
11
- public static let version = "6.4.1"
11
+ public static let version = "6.6.0"
12
12
  public static let userDefaultsPrefix = "CapawesomeLiveUpdate" // DO NOT CHANGE
13
13
 
14
14
  private var config: LiveUpdateConfig?
@@ -30,8 +30,7 @@ public class LiveUpdatePlugin: CAPPlugin {
30
30
 
31
31
  implementation?.deleteBundle(options, completion: { error in
32
32
  if let error = error {
33
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
34
- call.reject(error.localizedDescription)
33
+ self.rejectCall(call, error)
35
34
  return
36
35
  }
37
36
  call.resolve()
@@ -39,33 +38,46 @@ public class LiveUpdatePlugin: CAPPlugin {
39
38
  }
40
39
 
41
40
  @objc func downloadBundle(_ call: CAPPluginCall) {
42
- guard let bundleId = call.getString("bundleId") else {
43
- call.reject(CustomError.bundleIdMissing.localizedDescription)
44
- return
45
- }
46
- let checksum = call.getString("checksum")
47
- guard let url = call.getString("url") else {
48
- call.reject(CustomError.urlMissing.localizedDescription)
49
- return
41
+ Task {
42
+ do {
43
+ let artifactType = call.getString("artifactType", "zip")
44
+ guard let bundleId = call.getString("bundleId") else {
45
+ call.reject(CustomError.bundleIdMissing.localizedDescription)
46
+ return
47
+ }
48
+ let checksum = call.getString("checksum")
49
+ guard let url = call.getString("url") else {
50
+ call.reject(CustomError.urlMissing.localizedDescription)
51
+ return
52
+ }
53
+
54
+ let options = DownloadBundleOptions(artifactType: artifactType, bundleId: bundleId, checksum: checksum, url: url)
55
+
56
+ try await implementation?.downloadBundle(options)
57
+ call.resolve()
58
+ } catch {
59
+ rejectCall(call, error)
60
+ }
50
61
  }
62
+ }
51
63
 
52
- let options = DownloadBundleOptions(bundleId: bundleId, checksum: checksum, url: url)
53
-
54
- implementation?.downloadBundle(options, completion: { error in
55
- if let error = error {
56
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
57
- call.reject(error.localizedDescription)
58
- return
64
+ @objc func fetchLatestBundle(_ call: CAPPluginCall) {
65
+ Task {
66
+ do {
67
+ let result = try await implementation?.fetchLatestBundle()
68
+ if let result = result?.toJSObject() as? JSObject {
69
+ call.resolve(result)
70
+ }
71
+ } catch {
72
+ rejectCall(call, error)
59
73
  }
60
- call.resolve()
61
- })
74
+ }
62
75
  }
63
76
 
64
77
  @objc func getBundle(_ call: CAPPluginCall) {
65
78
  implementation?.getBundle(completion: { result, error in
66
79
  if let error = error {
67
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
68
- call.reject(error.localizedDescription)
80
+ self.rejectCall(call, error)
69
81
  return
70
82
  }
71
83
  if let result = result?.toJSObject() as? JSObject {
@@ -77,8 +89,7 @@ public class LiveUpdatePlugin: CAPPlugin {
77
89
  @objc func getBundles(_ call: CAPPluginCall) {
78
90
  implementation?.getBundles(completion: { result, error in
79
91
  if let error = error {
80
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
81
- call.reject(error.localizedDescription)
92
+ self.rejectCall(call, error)
82
93
  return
83
94
  }
84
95
  if let result = result?.toJSObject() as? JSObject {
@@ -90,8 +101,7 @@ public class LiveUpdatePlugin: CAPPlugin {
90
101
  @objc func getChannel(_ call: CAPPluginCall) {
91
102
  implementation?.getChannel(completion: { result, error in
92
103
  if let error = error {
93
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
94
- call.reject(error.localizedDescription)
104
+ self.rejectCall(call, error)
95
105
  return
96
106
  }
97
107
  if let result = result?.toJSObject() as? JSObject {
@@ -103,8 +113,7 @@ public class LiveUpdatePlugin: CAPPlugin {
103
113
  @objc func getCustomId(_ call: CAPPluginCall) {
104
114
  implementation?.getCustomId(completion: { result, error in
105
115
  if let error = error {
106
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
107
- call.reject(error.localizedDescription)
116
+ self.rejectCall(call, error)
108
117
  return
109
118
  }
110
119
  if let result = result?.toJSObject() as? JSObject {
@@ -116,8 +125,7 @@ public class LiveUpdatePlugin: CAPPlugin {
116
125
  @objc func getDeviceId(_ call: CAPPluginCall) {
117
126
  implementation?.getDeviceId(completion: { result, error in
118
127
  if let error = error {
119
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
120
- call.reject(error.localizedDescription)
128
+ self.rejectCall(call, error)
121
129
  return
122
130
  }
123
131
  if let result = result?.toJSObject() as? JSObject {
@@ -129,8 +137,7 @@ public class LiveUpdatePlugin: CAPPlugin {
129
137
  @objc func getVersionCode(_ call: CAPPluginCall) {
130
138
  implementation?.getVersionCode(completion: { result, error in
131
139
  if let error = error {
132
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
133
- call.reject(error.localizedDescription)
140
+ self.rejectCall(call, error)
134
141
  return
135
142
  }
136
143
  if let result = result?.toJSObject() as? JSObject {
@@ -142,8 +149,7 @@ public class LiveUpdatePlugin: CAPPlugin {
142
149
  @objc func getVersionName(_ call: CAPPluginCall) {
143
150
  implementation?.getVersionName(completion: { result, error in
144
151
  if let error = error {
145
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
146
- call.reject(error.localizedDescription)
152
+ self.rejectCall(call, error)
147
153
  return
148
154
  }
149
155
  if let result = result?.toJSObject() as? JSObject {
@@ -177,8 +183,7 @@ public class LiveUpdatePlugin: CAPPlugin {
177
183
 
178
184
  implementation?.setBundle(options, completion: { error in
179
185
  if let error = error {
180
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
181
- call.reject(error.localizedDescription)
186
+ self.rejectCall(call, error)
182
187
  return
183
188
  }
184
189
  })
@@ -192,8 +197,7 @@ public class LiveUpdatePlugin: CAPPlugin {
192
197
 
193
198
  implementation?.setChannel(options, completion: { error in
194
199
  if let error = error {
195
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
196
- call.reject(error.localizedDescription)
200
+ self.rejectCall(call, error)
197
201
  return
198
202
  }
199
203
  })
@@ -210,8 +214,7 @@ public class LiveUpdatePlugin: CAPPlugin {
210
214
 
211
215
  implementation?.setCustomId(options, completion: { error in
212
216
  if let error = error {
213
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
214
- call.reject(error.localizedDescription)
217
+ self.rejectCall(call, error)
215
218
  return
216
219
  }
217
220
  })
@@ -219,28 +222,30 @@ public class LiveUpdatePlugin: CAPPlugin {
219
222
  }
220
223
 
221
224
  @objc func sync(_ call: CAPPluginCall) {
222
- guard let _ = config?.appId else {
223
- call.reject(CustomError.appIdMissing.localizedDescription)
224
- return
225
- }
226
-
227
- guard !syncInProgress else {
228
- call.reject(CustomError.syncInProgress.localizedDescription)
229
- return
230
- }
231
- syncInProgress = true
232
-
233
- implementation?.sync(completion: { result, error in
234
- self.syncInProgress = false
235
- if let error = error {
236
- CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
237
- call.reject(error.localizedDescription)
238
- return
225
+ Task {
226
+ do {
227
+
228
+ guard let _ = config?.appId else {
229
+ call.reject(CustomError.appIdMissing.localizedDescription)
230
+ return
231
+ }
232
+
233
+ guard !syncInProgress else {
234
+ call.reject(CustomError.syncInProgress.localizedDescription)
235
+ return
236
+ }
237
+ syncInProgress = true
238
+
239
+ let result = try await implementation?.sync()
240
+ self.syncInProgress = false
241
+ if let result = result?.toJSObject() as? JSObject {
242
+ call.resolve(result)
243
+ }
244
+ } catch {
245
+ self.syncInProgress = false
246
+ rejectCall(call, error)
239
247
  }
240
- if let result = result?.toJSObject() as? JSObject {
241
- call.resolve(result)
242
- }
243
- })
248
+ }
244
249
  }
245
250
 
246
251
  private func liveUpdateConfig() -> LiveUpdateConfig {
@@ -258,4 +263,15 @@ public class LiveUpdatePlugin: CAPPlugin {
258
263
 
259
264
  return config
260
265
  }
266
+
267
+ private func rejectCall(_ call: CAPPluginCall, _ error: Error) {
268
+ CAPLog.print("[", LiveUpdatePlugin.tag, "] ", error)
269
+ var message = error.localizedDescription
270
+ if let urlError = error as? URLError {
271
+ if urlError.code == .timedOut {
272
+ message = CustomError.httpTimeout.localizedDescription
273
+ }
274
+ }
275
+ call.reject(message)
276
+ }
261
277
  }
@@ -1,6 +1,5 @@
1
- struct GetLatestBundleResponse: Codable {
1
+ public struct GetLatestBundleResponse: Codable {
2
+ var artifactType: ArtifactType
2
3
  var bundleId: String
3
- var checksum: String?
4
- var signature: String?
5
4
  var url: String
6
5
  }
@@ -0,0 +1,5 @@
1
+ public struct ManifestItem: Codable {
2
+ var checksum: String
3
+ var href: String
4
+ var sizeInBytes: Int
5
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@capawesome/capacitor-live-update",
3
- "version": "6.4.2",
3
+ "version": "6.6.0",
4
4
  "description": "Capacitor plugin to update your app remotely in real-time.",
5
5
  "main": "dist/plugin.cjs.js",
6
6
  "module": "dist/esm/index.js",