@capawesome/capacitor-live-update 6.7.2 → 7.0.0-dev.1765885034
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/CapawesomeCapacitorLiveUpdate.podspec +3 -3
- package/Package.swift +32 -0
- package/README.md +419 -83
- package/android/build.gradle +12 -12
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdate.java +758 -273
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdateConfig.java +29 -27
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdateHttpClient.java +40 -7
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdatePlugin.java +212 -68
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdatePreferences.java +52 -3
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/api/GetLatestBundleResponse.java +27 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/events/DownloadBundleProgressEvent.java +32 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/{results/GetBundleResult.java → events/NextBundleSetEvent.java} +9 -7
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/options/DownloadBundleOptions.java +16 -1
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/options/SetConfigOptions.java +19 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/options/SyncOptions.java +4 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/FetchLatestBundleResult.java +29 -1
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/GetBlockedBundlesResult.java +27 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/GetConfigResult.java +40 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/GetDownloadedBundlesResult.java +27 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/IsSyncingResult.java +26 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/ReadyResult.java +32 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/interfaces/DownloadProgressCallback.java +5 -0
- package/dist/docs.json +630 -103
- package/dist/esm/definitions.d.ts +365 -39
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/web.d.ts +9 -2
- package/dist/esm/web.js +21 -0
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +22 -3
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +22 -3
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/Classes/Events/DownloadBundleProgressEvent.swift +25 -0
- package/ios/Plugin/Classes/{Results/GetBundleResult.swift → Events/NextBundleSetEvent.swift} +3 -3
- package/ios/Plugin/Classes/Options/DownloadBundleOptions.swift +7 -1
- package/ios/Plugin/Classes/Options/SetConfigOptions.swift +14 -0
- package/ios/Plugin/Classes/Options/SyncOptions.swift +4 -0
- package/ios/Plugin/Classes/Results/{FetchLatestBundle.swift → FetchLatestBundleResult.swift} +16 -1
- package/ios/Plugin/Classes/Results/GetBlockedBundlesResult.swift +16 -0
- package/ios/Plugin/Classes/Results/GetConfigResult.swift +19 -0
- package/ios/Plugin/Classes/Results/GetDownloadedBundlesResult.swift +16 -0
- package/ios/Plugin/Classes/Results/IsSyncingResult.swift +16 -0
- package/ios/Plugin/Classes/Results/ReadyResult.swift +22 -0
- package/ios/Plugin/LiveUpdate.swift +370 -151
- package/ios/Plugin/LiveUpdateConfig.swift +4 -4
- package/ios/Plugin/LiveUpdateHttpClient.swift +10 -4
- package/ios/Plugin/LiveUpdatePlugin.swift +138 -35
- package/ios/Plugin/LiveUpdatePreferences.swift +56 -14
- package/ios/Plugin/Protocols/Api/GetLatestBundleResponse.swift +3 -0
- package/package.json +19 -20
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/options/SetBundleOptions.java +0 -18
- package/ios/Plugin/Classes/Options/SetBundleOptions.swift +0 -14
- package/ios/Plugin/LiveUpdatePlugin.h +0 -10
- package/ios/Plugin/LiveUpdatePlugin.m +0 -27
package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdatePlugin.java
CHANGED
|
@@ -1,21 +1,32 @@
|
|
|
1
1
|
package io.capawesome.capacitorjs.plugins.liveupdate;
|
|
2
2
|
|
|
3
|
+
import android.webkit.WebView;
|
|
4
|
+
import androidx.annotation.NonNull;
|
|
3
5
|
import androidx.annotation.Nullable;
|
|
6
|
+
import com.getcapacitor.JSObject;
|
|
4
7
|
import com.getcapacitor.Logger;
|
|
5
8
|
import com.getcapacitor.Plugin;
|
|
6
9
|
import com.getcapacitor.PluginCall;
|
|
7
10
|
import com.getcapacitor.PluginMethod;
|
|
11
|
+
import com.getcapacitor.WebViewListener;
|
|
8
12
|
import com.getcapacitor.annotation.CapacitorPlugin;
|
|
13
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.events.DownloadBundleProgressEvent;
|
|
14
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.events.NextBundleSetEvent;
|
|
9
15
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.DeleteBundleOptions;
|
|
10
16
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.DownloadBundleOptions;
|
|
11
17
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.FetchLatestBundleOptions;
|
|
12
|
-
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetBundleOptions;
|
|
13
18
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetChannelOptions;
|
|
19
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetConfigOptions;
|
|
14
20
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetCustomIdOptions;
|
|
15
21
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetNextBundleOptions;
|
|
16
22
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SyncOptions;
|
|
23
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.FetchLatestBundleResult;
|
|
24
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetBlockedBundlesResult;
|
|
25
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetConfigResult;
|
|
17
26
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetCurrentBundleResult;
|
|
27
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetDownloadedBundlesResult;
|
|
18
28
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetNextBundleResult;
|
|
29
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.IsSyncingResult;
|
|
19
30
|
import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.EmptyCallback;
|
|
20
31
|
import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.NonEmptyCallback;
|
|
21
32
|
import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.Result;
|
|
@@ -24,7 +35,7 @@ import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.Result;
|
|
|
24
35
|
public class LiveUpdatePlugin extends Plugin {
|
|
25
36
|
|
|
26
37
|
public static final String TAG = "LiveUpdate";
|
|
27
|
-
public static final String VERSION = "
|
|
38
|
+
public static final String VERSION = "7.4.0";
|
|
28
39
|
public static final String SHARED_PREFERENCES_NAME = "CapawesomeLiveUpdate"; // DO NOT CHANGE
|
|
29
40
|
public static final String ERROR_APP_ID_MISSING = "appId must be configured.";
|
|
30
41
|
public static final String ERROR_BUNDLE_EXISTS = "bundle already exists.";
|
|
@@ -42,8 +53,9 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
42
53
|
public static final String ERROR_SIGNATURE_MISSING = "Bundle does not contain a signature.";
|
|
43
54
|
public static final String ERROR_SYNC_IN_PROGRESS = "Sync is already in progress.";
|
|
44
55
|
public static final String ERROR_UNKNOWN_ERROR = "An unknown error has occurred.";
|
|
45
|
-
|
|
46
|
-
|
|
56
|
+
public static final String EVENT_DOWNLOAD_BUNDLE_PROGRESS = "downloadBundleProgress";
|
|
57
|
+
public static final String EVENT_NEXT_BUNDLE_SET = "nextBundleSet";
|
|
58
|
+
public static final String EVENT_RELOADED = "reloaded";
|
|
47
59
|
|
|
48
60
|
@Nullable
|
|
49
61
|
private LiveUpdateConfig config;
|
|
@@ -51,6 +63,8 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
51
63
|
@Nullable
|
|
52
64
|
private LiveUpdate implementation;
|
|
53
65
|
|
|
66
|
+
private boolean webViewListenerRegistered = false;
|
|
67
|
+
|
|
54
68
|
public void load() {
|
|
55
69
|
try {
|
|
56
70
|
config = getLiveUpdateConfig();
|
|
@@ -60,6 +74,46 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
60
74
|
}
|
|
61
75
|
}
|
|
62
76
|
|
|
77
|
+
@Override
|
|
78
|
+
protected void handleOnResume() {
|
|
79
|
+
super.handleOnResume();
|
|
80
|
+
try {
|
|
81
|
+
// Notify the implementation that the app has resumed
|
|
82
|
+
if (implementation != null) {
|
|
83
|
+
implementation.handleOnResume();
|
|
84
|
+
}
|
|
85
|
+
// Register WebView listener to trigger auto-update when page is loaded
|
|
86
|
+
// Important: For some reason, the listener CANNOT be registered in the load() method
|
|
87
|
+
// or constructor, it MUST be done here in onResume().
|
|
88
|
+
if (!webViewListenerRegistered) {
|
|
89
|
+
webViewListenerRegistered = true;
|
|
90
|
+
getBridge()
|
|
91
|
+
.addWebViewListener(
|
|
92
|
+
new WebViewListener() {
|
|
93
|
+
@Override
|
|
94
|
+
public void onPageLoaded(WebView webView) {
|
|
95
|
+
if (implementation != null) {
|
|
96
|
+
implementation.handleOnPageLoaded();
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
} catch (Exception exception) {
|
|
103
|
+
Logger.error(TAG, exception.getMessage(), exception);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
@PluginMethod
|
|
108
|
+
public void clearBlockedBundles(PluginCall call) {
|
|
109
|
+
try {
|
|
110
|
+
implementation.clearBlockedBundles();
|
|
111
|
+
resolveCall(call);
|
|
112
|
+
} catch (Exception exception) {
|
|
113
|
+
rejectCall(call, exception);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
63
117
|
@PluginMethod
|
|
64
118
|
public void deleteBundle(PluginCall call) {
|
|
65
119
|
try {
|
|
@@ -73,7 +127,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
73
127
|
EmptyCallback callback = new EmptyCallback() {
|
|
74
128
|
@Override
|
|
75
129
|
public void success() {
|
|
76
|
-
call
|
|
130
|
+
resolveCall(call);
|
|
77
131
|
}
|
|
78
132
|
|
|
79
133
|
@Override
|
|
@@ -98,17 +152,18 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
98
152
|
return;
|
|
99
153
|
}
|
|
100
154
|
String checksum = call.getString("checksum");
|
|
155
|
+
String signature = call.getString("signature");
|
|
101
156
|
String url = call.getString("url");
|
|
102
157
|
if (url == null) {
|
|
103
158
|
call.reject(ERROR_URL_MISSING);
|
|
104
159
|
return;
|
|
105
160
|
}
|
|
106
161
|
|
|
107
|
-
DownloadBundleOptions options = new DownloadBundleOptions(artifactType, bundleId, checksum, url);
|
|
162
|
+
DownloadBundleOptions options = new DownloadBundleOptions(artifactType, bundleId, checksum, signature, url);
|
|
108
163
|
EmptyCallback callback = new EmptyCallback() {
|
|
109
164
|
@Override
|
|
110
165
|
public void success() {
|
|
111
|
-
call
|
|
166
|
+
resolveCall(call);
|
|
112
167
|
}
|
|
113
168
|
|
|
114
169
|
@Override
|
|
@@ -126,11 +181,17 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
126
181
|
@PluginMethod
|
|
127
182
|
public void fetchLatestBundle(PluginCall call) {
|
|
128
183
|
try {
|
|
184
|
+
String appId = config.getAppId();
|
|
185
|
+
if (appId == null || appId.isEmpty()) {
|
|
186
|
+
call.reject(ERROR_APP_ID_MISSING);
|
|
187
|
+
return;
|
|
188
|
+
}
|
|
189
|
+
|
|
129
190
|
FetchLatestBundleOptions options = new FetchLatestBundleOptions(call);
|
|
130
|
-
NonEmptyCallback<
|
|
191
|
+
NonEmptyCallback<FetchLatestBundleResult> callback = new NonEmptyCallback<>() {
|
|
131
192
|
@Override
|
|
132
|
-
public void success(
|
|
133
|
-
call
|
|
193
|
+
public void success(FetchLatestBundleResult result) {
|
|
194
|
+
resolveCall(call, result.toJSObject());
|
|
134
195
|
}
|
|
135
196
|
|
|
136
197
|
@Override
|
|
@@ -146,12 +207,12 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
146
207
|
}
|
|
147
208
|
|
|
148
209
|
@PluginMethod
|
|
149
|
-
public void
|
|
210
|
+
public void getBlockedBundles(PluginCall call) {
|
|
150
211
|
try {
|
|
151
|
-
NonEmptyCallback<
|
|
212
|
+
NonEmptyCallback<GetBlockedBundlesResult> callback = new NonEmptyCallback<>() {
|
|
152
213
|
@Override
|
|
153
|
-
public void success(
|
|
154
|
-
call
|
|
214
|
+
public void success(GetBlockedBundlesResult result) {
|
|
215
|
+
resolveCall(call, result.toJSObject());
|
|
155
216
|
}
|
|
156
217
|
|
|
157
218
|
@Override
|
|
@@ -160,7 +221,8 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
160
221
|
}
|
|
161
222
|
};
|
|
162
223
|
|
|
163
|
-
implementation
|
|
224
|
+
assert implementation != null;
|
|
225
|
+
implementation.getBlockedBundles(callback);
|
|
164
226
|
} catch (Exception exception) {
|
|
165
227
|
rejectCall(call, exception);
|
|
166
228
|
}
|
|
@@ -172,7 +234,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
172
234
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
173
235
|
@Override
|
|
174
236
|
public void success(Result result) {
|
|
175
|
-
call
|
|
237
|
+
resolveCall(call, result.toJSObject());
|
|
176
238
|
}
|
|
177
239
|
|
|
178
240
|
@Override
|
|
@@ -187,13 +249,35 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
187
249
|
}
|
|
188
250
|
}
|
|
189
251
|
|
|
252
|
+
@PluginMethod
|
|
253
|
+
public void getDownloadedBundles(PluginCall call) {
|
|
254
|
+
try {
|
|
255
|
+
NonEmptyCallback<GetDownloadedBundlesResult> callback = new NonEmptyCallback<>() {
|
|
256
|
+
@Override
|
|
257
|
+
public void success(GetDownloadedBundlesResult result) {
|
|
258
|
+
resolveCall(call, result.toJSObject());
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
@Override
|
|
262
|
+
public void error(Exception exception) {
|
|
263
|
+
rejectCall(call, exception);
|
|
264
|
+
}
|
|
265
|
+
};
|
|
266
|
+
|
|
267
|
+
assert implementation != null;
|
|
268
|
+
implementation.getDownloadedBundles(callback);
|
|
269
|
+
} catch (Exception exception) {
|
|
270
|
+
rejectCall(call, exception);
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
|
|
190
274
|
@PluginMethod
|
|
191
275
|
public void getChannel(PluginCall call) {
|
|
192
276
|
try {
|
|
193
277
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
194
278
|
@Override
|
|
195
279
|
public void success(Result result) {
|
|
196
|
-
call
|
|
280
|
+
resolveCall(call, result.toJSObject());
|
|
197
281
|
}
|
|
198
282
|
|
|
199
283
|
@Override
|
|
@@ -208,13 +292,35 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
208
292
|
}
|
|
209
293
|
}
|
|
210
294
|
|
|
295
|
+
@PluginMethod
|
|
296
|
+
public void getConfig(PluginCall call) {
|
|
297
|
+
try {
|
|
298
|
+
NonEmptyCallback<GetConfigResult> callback = new NonEmptyCallback<>() {
|
|
299
|
+
@Override
|
|
300
|
+
public void success(GetConfigResult result) {
|
|
301
|
+
resolveCall(call, result.toJSObject());
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
@Override
|
|
305
|
+
public void error(Exception exception) {
|
|
306
|
+
rejectCall(call, exception);
|
|
307
|
+
}
|
|
308
|
+
};
|
|
309
|
+
|
|
310
|
+
assert implementation != null;
|
|
311
|
+
implementation.getConfig(callback);
|
|
312
|
+
} catch (Exception exception) {
|
|
313
|
+
rejectCall(call, exception);
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
211
317
|
@PluginMethod
|
|
212
318
|
public void getCurrentBundle(PluginCall call) {
|
|
213
319
|
try {
|
|
214
320
|
NonEmptyCallback<GetCurrentBundleResult> callback = new NonEmptyCallback<>() {
|
|
215
321
|
@Override
|
|
216
322
|
public void success(GetCurrentBundleResult result) {
|
|
217
|
-
call
|
|
323
|
+
resolveCall(call, result.toJSObject());
|
|
218
324
|
}
|
|
219
325
|
|
|
220
326
|
@Override
|
|
@@ -236,7 +342,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
236
342
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
237
343
|
@Override
|
|
238
344
|
public void success(Result result) {
|
|
239
|
-
call
|
|
345
|
+
resolveCall(call, result.toJSObject());
|
|
240
346
|
}
|
|
241
347
|
|
|
242
348
|
@Override
|
|
@@ -257,7 +363,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
257
363
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
258
364
|
@Override
|
|
259
365
|
public void success(Result result) {
|
|
260
|
-
call
|
|
366
|
+
resolveCall(call, result.toJSObject());
|
|
261
367
|
}
|
|
262
368
|
|
|
263
369
|
@Override
|
|
@@ -278,7 +384,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
278
384
|
NonEmptyCallback<GetNextBundleResult> callback = new NonEmptyCallback<>() {
|
|
279
385
|
@Override
|
|
280
386
|
public void success(GetNextBundleResult result) {
|
|
281
|
-
call
|
|
387
|
+
resolveCall(call, result.toJSObject());
|
|
282
388
|
}
|
|
283
389
|
|
|
284
390
|
@Override
|
|
@@ -300,7 +406,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
300
406
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
301
407
|
@Override
|
|
302
408
|
public void success(Result result) {
|
|
303
|
-
call
|
|
409
|
+
resolveCall(call, result.toJSObject());
|
|
304
410
|
}
|
|
305
411
|
|
|
306
412
|
@Override
|
|
@@ -321,7 +427,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
321
427
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
322
428
|
@Override
|
|
323
429
|
public void success(Result result) {
|
|
324
|
-
call
|
|
430
|
+
resolveCall(call, result.toJSObject());
|
|
325
431
|
}
|
|
326
432
|
|
|
327
433
|
@Override
|
|
@@ -336,11 +442,44 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
336
442
|
}
|
|
337
443
|
}
|
|
338
444
|
|
|
445
|
+
@PluginMethod
|
|
446
|
+
public void isSyncing(PluginCall call) {
|
|
447
|
+
try {
|
|
448
|
+
NonEmptyCallback<IsSyncingResult> callback = new NonEmptyCallback<>() {
|
|
449
|
+
@Override
|
|
450
|
+
public void success(IsSyncingResult result) {
|
|
451
|
+
resolveCall(call, result.toJSObject());
|
|
452
|
+
}
|
|
453
|
+
|
|
454
|
+
@Override
|
|
455
|
+
public void error(Exception exception) {
|
|
456
|
+
rejectCall(call, exception);
|
|
457
|
+
}
|
|
458
|
+
};
|
|
459
|
+
|
|
460
|
+
assert implementation != null;
|
|
461
|
+
implementation.isSyncing(callback);
|
|
462
|
+
} catch (Exception exception) {
|
|
463
|
+
rejectCall(call, exception);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
466
|
+
|
|
339
467
|
@PluginMethod
|
|
340
468
|
public void ready(PluginCall call) {
|
|
341
469
|
try {
|
|
342
|
-
|
|
343
|
-
|
|
470
|
+
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
471
|
+
@Override
|
|
472
|
+
public void success(Result result) {
|
|
473
|
+
resolveCall(call, result.toJSObject());
|
|
474
|
+
}
|
|
475
|
+
|
|
476
|
+
@Override
|
|
477
|
+
public void error(Exception exception) {
|
|
478
|
+
rejectCall(call, exception);
|
|
479
|
+
}
|
|
480
|
+
};
|
|
481
|
+
|
|
482
|
+
implementation.ready(callback);
|
|
344
483
|
} catch (Exception exception) {
|
|
345
484
|
rejectCall(call, exception);
|
|
346
485
|
}
|
|
@@ -350,7 +489,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
350
489
|
public void reload(PluginCall call) {
|
|
351
490
|
try {
|
|
352
491
|
implementation.reload();
|
|
353
|
-
call
|
|
492
|
+
resolveCall(call);
|
|
354
493
|
} catch (Exception exception) {
|
|
355
494
|
rejectCall(call, exception);
|
|
356
495
|
}
|
|
@@ -360,35 +499,17 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
360
499
|
public void reset(PluginCall call) {
|
|
361
500
|
try {
|
|
362
501
|
implementation.reset();
|
|
363
|
-
call
|
|
502
|
+
resolveCall(call);
|
|
364
503
|
} catch (Exception exception) {
|
|
365
504
|
rejectCall(call, exception);
|
|
366
505
|
}
|
|
367
506
|
}
|
|
368
507
|
|
|
369
508
|
@PluginMethod
|
|
370
|
-
public void
|
|
509
|
+
public void resetConfig(PluginCall call) {
|
|
371
510
|
try {
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
call.reject(ERROR_BUNDLE_ID_MISSING);
|
|
375
|
-
return;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
SetBundleOptions options = new SetBundleOptions(bundleId);
|
|
379
|
-
EmptyCallback callback = new EmptyCallback() {
|
|
380
|
-
@Override
|
|
381
|
-
public void success() {
|
|
382
|
-
call.resolve();
|
|
383
|
-
}
|
|
384
|
-
|
|
385
|
-
@Override
|
|
386
|
-
public void error(Exception exception) {
|
|
387
|
-
rejectCall(call, exception);
|
|
388
|
-
}
|
|
389
|
-
};
|
|
390
|
-
|
|
391
|
-
implementation.setBundle(options, callback);
|
|
511
|
+
implementation.resetConfig();
|
|
512
|
+
resolveCall(call);
|
|
392
513
|
} catch (Exception exception) {
|
|
393
514
|
rejectCall(call, exception);
|
|
394
515
|
}
|
|
@@ -403,7 +524,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
403
524
|
EmptyCallback callback = new EmptyCallback() {
|
|
404
525
|
@Override
|
|
405
526
|
public void success() {
|
|
406
|
-
call
|
|
527
|
+
resolveCall(call);
|
|
407
528
|
}
|
|
408
529
|
|
|
409
530
|
@Override
|
|
@@ -418,6 +539,17 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
418
539
|
}
|
|
419
540
|
}
|
|
420
541
|
|
|
542
|
+
@PluginMethod
|
|
543
|
+
public void setConfig(PluginCall call) {
|
|
544
|
+
try {
|
|
545
|
+
SetConfigOptions options = new SetConfigOptions(call);
|
|
546
|
+
implementation.setConfig(options);
|
|
547
|
+
resolveCall(call);
|
|
548
|
+
} catch (Exception exception) {
|
|
549
|
+
rejectCall(call, exception);
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
421
553
|
@PluginMethod
|
|
422
554
|
public void setCustomId(PluginCall call) {
|
|
423
555
|
try {
|
|
@@ -431,7 +563,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
431
563
|
EmptyCallback callback = new EmptyCallback() {
|
|
432
564
|
@Override
|
|
433
565
|
public void success() {
|
|
434
|
-
call
|
|
566
|
+
resolveCall(call);
|
|
435
567
|
}
|
|
436
568
|
|
|
437
569
|
@Override
|
|
@@ -453,7 +585,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
453
585
|
EmptyCallback callback = new EmptyCallback() {
|
|
454
586
|
@Override
|
|
455
587
|
public void success() {
|
|
456
|
-
call
|
|
588
|
+
resolveCall(call);
|
|
457
589
|
}
|
|
458
590
|
|
|
459
591
|
@Override
|
|
@@ -472,64 +604,76 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
472
604
|
public void sync(PluginCall call) {
|
|
473
605
|
try {
|
|
474
606
|
String appId = config.getAppId();
|
|
475
|
-
if (appId == null) {
|
|
607
|
+
if (appId == null || appId.isEmpty()) {
|
|
476
608
|
call.reject(ERROR_APP_ID_MISSING);
|
|
477
609
|
return;
|
|
478
610
|
}
|
|
479
611
|
|
|
480
|
-
if (syncInProgress) {
|
|
481
|
-
call.reject(ERROR_SYNC_IN_PROGRESS);
|
|
482
|
-
return;
|
|
483
|
-
}
|
|
484
|
-
syncInProgress = true;
|
|
485
|
-
|
|
486
612
|
SyncOptions options = new SyncOptions(call);
|
|
487
613
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
488
614
|
@Override
|
|
489
615
|
public void success(Result result) {
|
|
490
|
-
|
|
491
|
-
call.resolve(result.toJSObject());
|
|
616
|
+
resolveCall(call, result.toJSObject());
|
|
492
617
|
}
|
|
493
618
|
|
|
494
619
|
@Override
|
|
495
620
|
public void error(Exception exception) {
|
|
496
|
-
syncInProgress = false;
|
|
497
621
|
rejectCall(call, exception);
|
|
498
622
|
}
|
|
499
623
|
};
|
|
500
624
|
|
|
501
625
|
implementation.sync(options, callback);
|
|
502
626
|
} catch (Exception exception) {
|
|
503
|
-
syncInProgress = false;
|
|
504
627
|
rejectCall(call, exception);
|
|
505
628
|
}
|
|
506
629
|
}
|
|
507
630
|
|
|
631
|
+
public void notifyDownloadBundleProgressListeners(@NonNull DownloadBundleProgressEvent event) {
|
|
632
|
+
notifyListeners(EVENT_DOWNLOAD_BUNDLE_PROGRESS, event.toJSObject(), false);
|
|
633
|
+
}
|
|
634
|
+
|
|
635
|
+
public void notifyNextBundleSetListeners(@NonNull NextBundleSetEvent event) {
|
|
636
|
+
notifyListeners(EVENT_NEXT_BUNDLE_SET, event.toJSObject(), false);
|
|
637
|
+
}
|
|
638
|
+
|
|
639
|
+
public void notifyReloadedListeners() {
|
|
640
|
+
JSObject event = new JSObject();
|
|
641
|
+
notifyListeners(EVENT_RELOADED, event, true);
|
|
642
|
+
}
|
|
643
|
+
|
|
508
644
|
private LiveUpdateConfig getLiveUpdateConfig() {
|
|
509
645
|
LiveUpdateConfig config = new LiveUpdateConfig();
|
|
510
646
|
|
|
511
647
|
String appId = getConfig().getString("appId", config.getAppId());
|
|
512
648
|
config.setAppId(appId);
|
|
649
|
+
boolean autoBlockRolledBackBundles = getConfig().getBoolean("autoBlockRolledBackBundles", config.getAutoBlockRolledBackBundles());
|
|
650
|
+
config.setAutoBlockRolledBackBundles(autoBlockRolledBackBundles);
|
|
513
651
|
boolean autoDeleteBundles = getConfig().getBoolean("autoDeleteBundles", config.getAutoDeleteBundles());
|
|
514
652
|
config.setAutoDeleteBundles(autoDeleteBundles);
|
|
653
|
+
String autoUpdateStrategy = getConfig().getString("autoUpdateStrategy", config.getAutoUpdateStrategy());
|
|
654
|
+
config.setAutoUpdateStrategy(autoUpdateStrategy);
|
|
515
655
|
String defaultChannel = getConfig().getString("defaultChannel", config.getDefaultChannel());
|
|
516
656
|
config.setDefaultChannel(defaultChannel);
|
|
517
|
-
boolean enabled = getConfig().getBoolean("enabled", config.getEnabled());
|
|
518
|
-
config.setEnabled(enabled);
|
|
519
657
|
int httpTimeout = getConfig().getInt("httpTimeout", config.getHttpTimeout());
|
|
520
658
|
config.setHttpTimeout(httpTimeout);
|
|
521
|
-
String location = getConfig().getString("location", config.getLocation());
|
|
522
|
-
config.setLocation(location);
|
|
523
659
|
String publicKey = getConfig().getString("publicKey", config.getPublicKey());
|
|
524
660
|
config.setPublicKey(publicKey);
|
|
525
661
|
int readyTimeout = getConfig().getInt("readyTimeout", config.getReadyTimeout());
|
|
526
662
|
config.setReadyTimeout(readyTimeout);
|
|
527
|
-
|
|
528
|
-
config.
|
|
663
|
+
String serverDomain = getConfig().getString("serverDomain", config.getServerDomain());
|
|
664
|
+
config.setServerDomain(serverDomain);
|
|
529
665
|
|
|
530
666
|
return config;
|
|
531
667
|
}
|
|
532
668
|
|
|
669
|
+
private void resolveCall(@NonNull PluginCall call) {
|
|
670
|
+
call.resolve();
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
private void resolveCall(@NonNull PluginCall call, @NonNull JSObject result) {
|
|
674
|
+
call.resolve(result);
|
|
675
|
+
}
|
|
676
|
+
|
|
533
677
|
private void rejectCall(PluginCall call, Exception exception) {
|
|
534
678
|
String message = exception.getMessage();
|
|
535
679
|
if (exception instanceof java.net.SocketTimeoutException) {
|
|
@@ -15,16 +15,24 @@ public class LiveUpdatePreferences {
|
|
|
15
15
|
@NonNull
|
|
16
16
|
private final SharedPreferences.Editor settingsEditor;
|
|
17
17
|
|
|
18
|
+
private final String appIdKey = "appId"; // DO NOT CHANGE
|
|
19
|
+
private final String blockedBundleIdsKey = "blockedBundleIds"; // DO NOT CHANGE
|
|
18
20
|
private final String channelKey = "channel"; // DO NOT CHANGE
|
|
19
21
|
private final String deviceIdKey = "deviceId"; // DO NOT CHANGE
|
|
20
22
|
private final String customIdKey = "customId"; // DO NOT CHANGE
|
|
21
23
|
private final String lastVersionCodeKey = "lastVersionCode"; // DO NOT CHANGE
|
|
24
|
+
private final String previousBundleIdKey = "previousBundleId"; // DO NOT CHANGE
|
|
22
25
|
|
|
23
26
|
public LiveUpdatePreferences(@NonNull Context context) {
|
|
24
27
|
this.context = context;
|
|
25
28
|
this.settingsEditor = context.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE).edit();
|
|
26
29
|
}
|
|
27
30
|
|
|
31
|
+
@Nullable
|
|
32
|
+
public String getAppId() {
|
|
33
|
+
return context.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE).getString(appIdKey, null);
|
|
34
|
+
}
|
|
35
|
+
|
|
28
36
|
@Nullable
|
|
29
37
|
public String getChannel() {
|
|
30
38
|
return context.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE).getString(channelKey, null);
|
|
@@ -49,7 +57,39 @@ public class LiveUpdatePreferences {
|
|
|
49
57
|
}
|
|
50
58
|
|
|
51
59
|
public int getLastVersionCode() {
|
|
52
|
-
return context.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE).getInt(lastVersionCodeKey,
|
|
60
|
+
return context.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE).getInt(lastVersionCodeKey, -1);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
@Nullable
|
|
64
|
+
public String getPreviousBundleId() {
|
|
65
|
+
return context
|
|
66
|
+
.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE)
|
|
67
|
+
.getString(previousBundleIdKey, null);
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
@Nullable
|
|
71
|
+
public String getBlockedBundleIds() {
|
|
72
|
+
return context
|
|
73
|
+
.getSharedPreferences(LiveUpdatePlugin.SHARED_PREFERENCES_NAME, Activity.MODE_PRIVATE)
|
|
74
|
+
.getString(blockedBundleIdsKey, null);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
public void setAppId(@Nullable String appId) {
|
|
78
|
+
if (appId == null) {
|
|
79
|
+
settingsEditor.remove(appIdKey);
|
|
80
|
+
} else {
|
|
81
|
+
settingsEditor.putString(appIdKey, appId);
|
|
82
|
+
}
|
|
83
|
+
settingsEditor.apply();
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
public void setBlockedBundleIds(@Nullable String blockedBundleIds) {
|
|
87
|
+
if (blockedBundleIds == null) {
|
|
88
|
+
settingsEditor.remove(blockedBundleIdsKey);
|
|
89
|
+
} else {
|
|
90
|
+
settingsEditor.putString(blockedBundleIdsKey, blockedBundleIds);
|
|
91
|
+
}
|
|
92
|
+
settingsEditor.apply();
|
|
53
93
|
}
|
|
54
94
|
|
|
55
95
|
public void setChannel(@Nullable String channel) {
|
|
@@ -79,8 +119,17 @@ public class LiveUpdatePreferences {
|
|
|
79
119
|
settingsEditor.apply();
|
|
80
120
|
}
|
|
81
121
|
|
|
82
|
-
public void setLastVersionCode(int
|
|
83
|
-
settingsEditor.putInt(lastVersionCodeKey,
|
|
122
|
+
public void setLastVersionCode(int versionCode) {
|
|
123
|
+
settingsEditor.putInt(lastVersionCodeKey, versionCode);
|
|
124
|
+
settingsEditor.apply();
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
public void setPreviousBundleId(@Nullable String bundleId) {
|
|
128
|
+
if (bundleId == null) {
|
|
129
|
+
settingsEditor.remove(previousBundleIdKey);
|
|
130
|
+
} else {
|
|
131
|
+
settingsEditor.putString(previousBundleIdKey, bundleId);
|
|
132
|
+
}
|
|
84
133
|
settingsEditor.apply();
|
|
85
134
|
}
|
|
86
135
|
}
|
|
@@ -16,6 +16,15 @@ public class GetLatestBundleResponse {
|
|
|
16
16
|
@NonNull
|
|
17
17
|
private String bundleId;
|
|
18
18
|
|
|
19
|
+
@Nullable
|
|
20
|
+
private String checksum;
|
|
21
|
+
|
|
22
|
+
@Nullable
|
|
23
|
+
private JSONObject customProperties;
|
|
24
|
+
|
|
25
|
+
@Nullable
|
|
26
|
+
private String signature;
|
|
27
|
+
|
|
19
28
|
@NonNull
|
|
20
29
|
private String url;
|
|
21
30
|
|
|
@@ -27,6 +36,9 @@ public class GetLatestBundleResponse {
|
|
|
27
36
|
this.artifactType = ArtifactType.ZIP;
|
|
28
37
|
}
|
|
29
38
|
this.bundleId = responseJson.optString("bundleId");
|
|
39
|
+
this.checksum = responseJson.isNull("checksum") ? null : responseJson.optString("checksum");
|
|
40
|
+
this.customProperties = responseJson.optJSONObject("customProperties");
|
|
41
|
+
this.signature = responseJson.isNull("signature") ? null : responseJson.optString("signature");
|
|
30
42
|
this.url = responseJson.optString("url");
|
|
31
43
|
}
|
|
32
44
|
|
|
@@ -40,6 +52,21 @@ public class GetLatestBundleResponse {
|
|
|
40
52
|
return bundleId;
|
|
41
53
|
}
|
|
42
54
|
|
|
55
|
+
@Nullable
|
|
56
|
+
public JSONObject getCustomProperties() {
|
|
57
|
+
return customProperties;
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
@Nullable
|
|
61
|
+
public String getChecksum() {
|
|
62
|
+
return checksum;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
@Nullable
|
|
66
|
+
public String getSignature() {
|
|
67
|
+
return signature;
|
|
68
|
+
}
|
|
69
|
+
|
|
43
70
|
@NonNull
|
|
44
71
|
public String getUrl() {
|
|
45
72
|
return url;
|