@capawesome/capacitor-live-update 6.8.0 → 6.9.1
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 +2 -2
- package/README.md +429 -20
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdate.java +894 -279
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdateConfig.java +35 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdateHttpClient.java +56 -11
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/LiveUpdatePlugin.java +274 -38
- 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/GetChannelsResponseItem.java +28 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/api/GetLatestBundleResponse.java +11 -2
- 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/events/NextBundleSetEvent.java +26 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/options/FetchChannelsOptions.java +38 -0
- 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/ChannelResult.java +28 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/FetchChannelsResult.java +28 -0
- package/android/src/main/java/io/capawesome/capacitorjs/plugins/liveupdate/classes/results/FetchLatestBundleResult.java +8 -0
- 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 +853 -50
- package/dist/esm/definitions.d.ts +411 -1
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web.d.ts +10 -2
- package/dist/esm/web.js +24 -0
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +24 -0
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +24 -0
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/Classes/Events/DownloadBundleProgressEvent.swift +25 -0
- package/ios/Plugin/Classes/Events/NextBundleSetEvent.swift +16 -0
- package/ios/Plugin/Classes/Options/FetchChannelsOptions.swift +26 -0
- package/ios/Plugin/Classes/Options/SetConfigOptions.swift +14 -0
- package/ios/Plugin/Classes/Options/SyncOptions.swift +4 -0
- package/ios/Plugin/Classes/Results/ChannelResult.swift +19 -0
- package/ios/Plugin/Classes/Results/FetchChannelsResult.swift +16 -0
- package/ios/Plugin/Classes/Results/{FetchLatestBundle.swift → FetchLatestBundleResult.swift} +6 -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 +456 -152
- package/ios/Plugin/LiveUpdateConfig.swift +3 -0
- package/ios/Plugin/LiveUpdateHttpClient.swift +21 -4
- package/ios/Plugin/LiveUpdatePlugin.swift +174 -14
- package/ios/Plugin/LiveUpdatePreferences.swift +54 -12
- package/ios/Plugin/Protocols/Api/GetChannelsResponseItem.swift +4 -0
- package/ios/Plugin/Protocols/Api/GetLatestBundleResponse.swift +1 -0
- package/package.json +5 -5
- 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,36 @@
|
|
|
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;
|
|
17
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.FetchChannelsOptions;
|
|
11
18
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.FetchLatestBundleOptions;
|
|
12
19
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetBundleOptions;
|
|
13
20
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetChannelOptions;
|
|
21
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetConfigOptions;
|
|
14
22
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetCustomIdOptions;
|
|
15
23
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SetNextBundleOptions;
|
|
16
24
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.options.SyncOptions;
|
|
25
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.FetchChannelsResult;
|
|
26
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.FetchLatestBundleResult;
|
|
27
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetBlockedBundlesResult;
|
|
28
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetBundleResult;
|
|
29
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetConfigResult;
|
|
17
30
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetCurrentBundleResult;
|
|
31
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetDownloadedBundlesResult;
|
|
18
32
|
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.GetNextBundleResult;
|
|
33
|
+
import io.capawesome.capacitorjs.plugins.liveupdate.classes.results.IsSyncingResult;
|
|
19
34
|
import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.EmptyCallback;
|
|
20
35
|
import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.NonEmptyCallback;
|
|
21
36
|
import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.Result;
|
|
@@ -24,12 +39,13 @@ import io.capawesome.capacitorjs.plugins.liveupdate.interfaces.Result;
|
|
|
24
39
|
public class LiveUpdatePlugin extends Plugin {
|
|
25
40
|
|
|
26
41
|
public static final String TAG = "LiveUpdate";
|
|
27
|
-
public static final String VERSION = "6.
|
|
42
|
+
public static final String VERSION = "6.9.1";
|
|
28
43
|
public static final String SHARED_PREFERENCES_NAME = "CapawesomeLiveUpdate"; // DO NOT CHANGE
|
|
29
44
|
public static final String ERROR_APP_ID_MISSING = "appId must be configured.";
|
|
30
45
|
public static final String ERROR_BUNDLE_EXISTS = "bundle already exists.";
|
|
31
46
|
public static final String ERROR_BUNDLE_ID_MISSING = "bundleId must be provided.";
|
|
32
47
|
public static final String ERROR_BUNDLE_INDEX_HTML_MISSING = "The bundle does not contain an index.html file.";
|
|
48
|
+
public static final String ERROR_BUNDLE_MOVE_FAILED = "Bundle could not be moved.";
|
|
33
49
|
public static final String ERROR_BUNDLE_NOT_FOUND = "bundle not found.";
|
|
34
50
|
public static final String ERROR_CHECKSUM_CALCULATION_FAILED = "Failed to calculate checksum.";
|
|
35
51
|
public static final String ERROR_CHECKSUM_MISMATCH = "Checksum mismatch.";
|
|
@@ -42,8 +58,9 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
42
58
|
public static final String ERROR_SIGNATURE_MISSING = "Bundle does not contain a signature.";
|
|
43
59
|
public static final String ERROR_SYNC_IN_PROGRESS = "Sync is already in progress.";
|
|
44
60
|
public static final String ERROR_UNKNOWN_ERROR = "An unknown error has occurred.";
|
|
45
|
-
|
|
46
|
-
|
|
61
|
+
public static final String EVENT_DOWNLOAD_BUNDLE_PROGRESS = "downloadBundleProgress";
|
|
62
|
+
public static final String EVENT_NEXT_BUNDLE_SET = "nextBundleSet";
|
|
63
|
+
public static final String EVENT_RELOADED = "reloaded";
|
|
47
64
|
|
|
48
65
|
@Nullable
|
|
49
66
|
private LiveUpdateConfig config;
|
|
@@ -51,6 +68,8 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
51
68
|
@Nullable
|
|
52
69
|
private LiveUpdate implementation;
|
|
53
70
|
|
|
71
|
+
private boolean webViewListenerRegistered = false;
|
|
72
|
+
|
|
54
73
|
public void load() {
|
|
55
74
|
try {
|
|
56
75
|
config = getLiveUpdateConfig();
|
|
@@ -60,6 +79,46 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
60
79
|
}
|
|
61
80
|
}
|
|
62
81
|
|
|
82
|
+
@Override
|
|
83
|
+
protected void handleOnResume() {
|
|
84
|
+
super.handleOnResume();
|
|
85
|
+
try {
|
|
86
|
+
// Notify the implementation that the app has resumed
|
|
87
|
+
if (implementation != null) {
|
|
88
|
+
implementation.handleOnResume();
|
|
89
|
+
}
|
|
90
|
+
// Register WebView listener to trigger auto-update when page is loaded
|
|
91
|
+
// Important: For some reason, the listener CANNOT be registered in the load() method
|
|
92
|
+
// or constructor, it MUST be done here in onResume().
|
|
93
|
+
if (!webViewListenerRegistered) {
|
|
94
|
+
webViewListenerRegistered = true;
|
|
95
|
+
getBridge()
|
|
96
|
+
.addWebViewListener(
|
|
97
|
+
new WebViewListener() {
|
|
98
|
+
@Override
|
|
99
|
+
public void onPageLoaded(WebView webView) {
|
|
100
|
+
if (implementation != null) {
|
|
101
|
+
implementation.handleOnPageLoaded();
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
);
|
|
106
|
+
}
|
|
107
|
+
} catch (Exception exception) {
|
|
108
|
+
Logger.error(TAG, exception.getMessage(), exception);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
@PluginMethod
|
|
113
|
+
public void clearBlockedBundles(PluginCall call) {
|
|
114
|
+
try {
|
|
115
|
+
implementation.clearBlockedBundles();
|
|
116
|
+
resolveCall(call);
|
|
117
|
+
} catch (Exception exception) {
|
|
118
|
+
rejectCall(call, exception);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
|
|
63
122
|
@PluginMethod
|
|
64
123
|
public void deleteBundle(PluginCall call) {
|
|
65
124
|
try {
|
|
@@ -73,7 +132,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
73
132
|
EmptyCallback callback = new EmptyCallback() {
|
|
74
133
|
@Override
|
|
75
134
|
public void success() {
|
|
76
|
-
call
|
|
135
|
+
resolveCall(call);
|
|
77
136
|
}
|
|
78
137
|
|
|
79
138
|
@Override
|
|
@@ -109,7 +168,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
109
168
|
EmptyCallback callback = new EmptyCallback() {
|
|
110
169
|
@Override
|
|
111
170
|
public void success() {
|
|
112
|
-
call
|
|
171
|
+
resolveCall(call);
|
|
113
172
|
}
|
|
114
173
|
|
|
115
174
|
@Override
|
|
@@ -127,11 +186,17 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
127
186
|
@PluginMethod
|
|
128
187
|
public void fetchLatestBundle(PluginCall call) {
|
|
129
188
|
try {
|
|
189
|
+
String appId = config.getAppId();
|
|
190
|
+
if (appId == null || appId.isEmpty()) {
|
|
191
|
+
call.reject(ERROR_APP_ID_MISSING);
|
|
192
|
+
return;
|
|
193
|
+
}
|
|
194
|
+
|
|
130
195
|
FetchLatestBundleOptions options = new FetchLatestBundleOptions(call);
|
|
131
|
-
NonEmptyCallback<
|
|
196
|
+
NonEmptyCallback<FetchLatestBundleResult> callback = new NonEmptyCallback<>() {
|
|
132
197
|
@Override
|
|
133
|
-
public void success(
|
|
134
|
-
call
|
|
198
|
+
public void success(FetchLatestBundleResult result) {
|
|
199
|
+
resolveCall(call, result.toJSObject());
|
|
135
200
|
}
|
|
136
201
|
|
|
137
202
|
@Override
|
|
@@ -146,13 +211,63 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
146
211
|
}
|
|
147
212
|
}
|
|
148
213
|
|
|
214
|
+
@PluginMethod
|
|
215
|
+
public void getBlockedBundles(PluginCall call) {
|
|
216
|
+
try {
|
|
217
|
+
NonEmptyCallback<GetBlockedBundlesResult> callback = new NonEmptyCallback<>() {
|
|
218
|
+
@Override
|
|
219
|
+
public void success(GetBlockedBundlesResult result) {
|
|
220
|
+
resolveCall(call, result.toJSObject());
|
|
221
|
+
}
|
|
222
|
+
|
|
223
|
+
@Override
|
|
224
|
+
public void error(Exception exception) {
|
|
225
|
+
rejectCall(call, exception);
|
|
226
|
+
}
|
|
227
|
+
};
|
|
228
|
+
|
|
229
|
+
assert implementation != null;
|
|
230
|
+
implementation.getBlockedBundles(callback);
|
|
231
|
+
} catch (Exception exception) {
|
|
232
|
+
rejectCall(call, exception);
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
@PluginMethod
|
|
237
|
+
public void fetchChannels(PluginCall call) {
|
|
238
|
+
try {
|
|
239
|
+
String appId = config.getAppId();
|
|
240
|
+
if (appId == null || appId.isEmpty()) {
|
|
241
|
+
call.reject(ERROR_APP_ID_MISSING);
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
FetchChannelsOptions options = new FetchChannelsOptions(call);
|
|
246
|
+
NonEmptyCallback<FetchChannelsResult> callback = new NonEmptyCallback<>() {
|
|
247
|
+
@Override
|
|
248
|
+
public void success(FetchChannelsResult result) {
|
|
249
|
+
resolveCall(call, result.toJSObject());
|
|
250
|
+
}
|
|
251
|
+
|
|
252
|
+
@Override
|
|
253
|
+
public void error(Exception exception) {
|
|
254
|
+
rejectCall(call, exception);
|
|
255
|
+
}
|
|
256
|
+
};
|
|
257
|
+
|
|
258
|
+
implementation.fetchChannels(options, callback);
|
|
259
|
+
} catch (Exception exception) {
|
|
260
|
+
rejectCall(call, exception);
|
|
261
|
+
}
|
|
262
|
+
}
|
|
263
|
+
|
|
149
264
|
@PluginMethod
|
|
150
265
|
public void getBundle(PluginCall call) {
|
|
151
266
|
try {
|
|
152
|
-
NonEmptyCallback<
|
|
267
|
+
NonEmptyCallback<GetBundleResult> callback = new NonEmptyCallback<>() {
|
|
153
268
|
@Override
|
|
154
|
-
public void success(
|
|
155
|
-
call
|
|
269
|
+
public void success(GetBundleResult result) {
|
|
270
|
+
resolveCall(call, result.toJSObject());
|
|
156
271
|
}
|
|
157
272
|
|
|
158
273
|
@Override
|
|
@@ -161,6 +276,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
161
276
|
}
|
|
162
277
|
};
|
|
163
278
|
|
|
279
|
+
assert implementation != null;
|
|
164
280
|
implementation.getBundle(callback);
|
|
165
281
|
} catch (Exception exception) {
|
|
166
282
|
rejectCall(call, exception);
|
|
@@ -173,7 +289,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
173
289
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
174
290
|
@Override
|
|
175
291
|
public void success(Result result) {
|
|
176
|
-
call
|
|
292
|
+
resolveCall(call, result.toJSObject());
|
|
177
293
|
}
|
|
178
294
|
|
|
179
295
|
@Override
|
|
@@ -188,13 +304,35 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
188
304
|
}
|
|
189
305
|
}
|
|
190
306
|
|
|
307
|
+
@PluginMethod
|
|
308
|
+
public void getDownloadedBundles(PluginCall call) {
|
|
309
|
+
try {
|
|
310
|
+
NonEmptyCallback<GetDownloadedBundlesResult> callback = new NonEmptyCallback<>() {
|
|
311
|
+
@Override
|
|
312
|
+
public void success(GetDownloadedBundlesResult result) {
|
|
313
|
+
resolveCall(call, result.toJSObject());
|
|
314
|
+
}
|
|
315
|
+
|
|
316
|
+
@Override
|
|
317
|
+
public void error(Exception exception) {
|
|
318
|
+
rejectCall(call, exception);
|
|
319
|
+
}
|
|
320
|
+
};
|
|
321
|
+
|
|
322
|
+
assert implementation != null;
|
|
323
|
+
implementation.getDownloadedBundles(callback);
|
|
324
|
+
} catch (Exception exception) {
|
|
325
|
+
rejectCall(call, exception);
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
191
329
|
@PluginMethod
|
|
192
330
|
public void getChannel(PluginCall call) {
|
|
193
331
|
try {
|
|
194
332
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
195
333
|
@Override
|
|
196
334
|
public void success(Result result) {
|
|
197
|
-
call
|
|
335
|
+
resolveCall(call, result.toJSObject());
|
|
198
336
|
}
|
|
199
337
|
|
|
200
338
|
@Override
|
|
@@ -209,13 +347,35 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
209
347
|
}
|
|
210
348
|
}
|
|
211
349
|
|
|
350
|
+
@PluginMethod
|
|
351
|
+
public void getConfig(PluginCall call) {
|
|
352
|
+
try {
|
|
353
|
+
NonEmptyCallback<GetConfigResult> callback = new NonEmptyCallback<>() {
|
|
354
|
+
@Override
|
|
355
|
+
public void success(GetConfigResult result) {
|
|
356
|
+
resolveCall(call, result.toJSObject());
|
|
357
|
+
}
|
|
358
|
+
|
|
359
|
+
@Override
|
|
360
|
+
public void error(Exception exception) {
|
|
361
|
+
rejectCall(call, exception);
|
|
362
|
+
}
|
|
363
|
+
};
|
|
364
|
+
|
|
365
|
+
assert implementation != null;
|
|
366
|
+
implementation.getConfig(callback);
|
|
367
|
+
} catch (Exception exception) {
|
|
368
|
+
rejectCall(call, exception);
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
212
372
|
@PluginMethod
|
|
213
373
|
public void getCurrentBundle(PluginCall call) {
|
|
214
374
|
try {
|
|
215
375
|
NonEmptyCallback<GetCurrentBundleResult> callback = new NonEmptyCallback<>() {
|
|
216
376
|
@Override
|
|
217
377
|
public void success(GetCurrentBundleResult result) {
|
|
218
|
-
call
|
|
378
|
+
resolveCall(call, result.toJSObject());
|
|
219
379
|
}
|
|
220
380
|
|
|
221
381
|
@Override
|
|
@@ -237,7 +397,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
237
397
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
238
398
|
@Override
|
|
239
399
|
public void success(Result result) {
|
|
240
|
-
call
|
|
400
|
+
resolveCall(call, result.toJSObject());
|
|
241
401
|
}
|
|
242
402
|
|
|
243
403
|
@Override
|
|
@@ -258,7 +418,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
258
418
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
259
419
|
@Override
|
|
260
420
|
public void success(Result result) {
|
|
261
|
-
call
|
|
421
|
+
resolveCall(call, result.toJSObject());
|
|
262
422
|
}
|
|
263
423
|
|
|
264
424
|
@Override
|
|
@@ -279,7 +439,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
279
439
|
NonEmptyCallback<GetNextBundleResult> callback = new NonEmptyCallback<>() {
|
|
280
440
|
@Override
|
|
281
441
|
public void success(GetNextBundleResult result) {
|
|
282
|
-
call
|
|
442
|
+
resolveCall(call, result.toJSObject());
|
|
283
443
|
}
|
|
284
444
|
|
|
285
445
|
@Override
|
|
@@ -301,7 +461,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
301
461
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
302
462
|
@Override
|
|
303
463
|
public void success(Result result) {
|
|
304
|
-
call
|
|
464
|
+
resolveCall(call, result.toJSObject());
|
|
305
465
|
}
|
|
306
466
|
|
|
307
467
|
@Override
|
|
@@ -322,7 +482,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
322
482
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
323
483
|
@Override
|
|
324
484
|
public void success(Result result) {
|
|
325
|
-
call
|
|
485
|
+
resolveCall(call, result.toJSObject());
|
|
326
486
|
}
|
|
327
487
|
|
|
328
488
|
@Override
|
|
@@ -337,11 +497,44 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
337
497
|
}
|
|
338
498
|
}
|
|
339
499
|
|
|
500
|
+
@PluginMethod
|
|
501
|
+
public void isSyncing(PluginCall call) {
|
|
502
|
+
try {
|
|
503
|
+
NonEmptyCallback<IsSyncingResult> callback = new NonEmptyCallback<>() {
|
|
504
|
+
@Override
|
|
505
|
+
public void success(IsSyncingResult result) {
|
|
506
|
+
resolveCall(call, result.toJSObject());
|
|
507
|
+
}
|
|
508
|
+
|
|
509
|
+
@Override
|
|
510
|
+
public void error(Exception exception) {
|
|
511
|
+
rejectCall(call, exception);
|
|
512
|
+
}
|
|
513
|
+
};
|
|
514
|
+
|
|
515
|
+
assert implementation != null;
|
|
516
|
+
implementation.isSyncing(callback);
|
|
517
|
+
} catch (Exception exception) {
|
|
518
|
+
rejectCall(call, exception);
|
|
519
|
+
}
|
|
520
|
+
}
|
|
521
|
+
|
|
340
522
|
@PluginMethod
|
|
341
523
|
public void ready(PluginCall call) {
|
|
342
524
|
try {
|
|
343
|
-
|
|
344
|
-
|
|
525
|
+
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
526
|
+
@Override
|
|
527
|
+
public void success(Result result) {
|
|
528
|
+
resolveCall(call, result.toJSObject());
|
|
529
|
+
}
|
|
530
|
+
|
|
531
|
+
@Override
|
|
532
|
+
public void error(Exception exception) {
|
|
533
|
+
rejectCall(call, exception);
|
|
534
|
+
}
|
|
535
|
+
};
|
|
536
|
+
|
|
537
|
+
implementation.ready(callback);
|
|
345
538
|
} catch (Exception exception) {
|
|
346
539
|
rejectCall(call, exception);
|
|
347
540
|
}
|
|
@@ -351,7 +544,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
351
544
|
public void reload(PluginCall call) {
|
|
352
545
|
try {
|
|
353
546
|
implementation.reload();
|
|
354
|
-
call
|
|
547
|
+
resolveCall(call);
|
|
355
548
|
} catch (Exception exception) {
|
|
356
549
|
rejectCall(call, exception);
|
|
357
550
|
}
|
|
@@ -361,7 +554,17 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
361
554
|
public void reset(PluginCall call) {
|
|
362
555
|
try {
|
|
363
556
|
implementation.reset();
|
|
364
|
-
call
|
|
557
|
+
resolveCall(call);
|
|
558
|
+
} catch (Exception exception) {
|
|
559
|
+
rejectCall(call, exception);
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
|
|
563
|
+
@PluginMethod
|
|
564
|
+
public void resetConfig(PluginCall call) {
|
|
565
|
+
try {
|
|
566
|
+
implementation.resetConfig();
|
|
567
|
+
resolveCall(call);
|
|
365
568
|
} catch (Exception exception) {
|
|
366
569
|
rejectCall(call, exception);
|
|
367
570
|
}
|
|
@@ -380,7 +583,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
380
583
|
EmptyCallback callback = new EmptyCallback() {
|
|
381
584
|
@Override
|
|
382
585
|
public void success() {
|
|
383
|
-
call
|
|
586
|
+
resolveCall(call);
|
|
384
587
|
}
|
|
385
588
|
|
|
386
589
|
@Override
|
|
@@ -404,7 +607,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
404
607
|
EmptyCallback callback = new EmptyCallback() {
|
|
405
608
|
@Override
|
|
406
609
|
public void success() {
|
|
407
|
-
call
|
|
610
|
+
resolveCall(call);
|
|
408
611
|
}
|
|
409
612
|
|
|
410
613
|
@Override
|
|
@@ -419,6 +622,17 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
419
622
|
}
|
|
420
623
|
}
|
|
421
624
|
|
|
625
|
+
@PluginMethod
|
|
626
|
+
public void setConfig(PluginCall call) {
|
|
627
|
+
try {
|
|
628
|
+
SetConfigOptions options = new SetConfigOptions(call);
|
|
629
|
+
implementation.setConfig(options);
|
|
630
|
+
resolveCall(call);
|
|
631
|
+
} catch (Exception exception) {
|
|
632
|
+
rejectCall(call, exception);
|
|
633
|
+
}
|
|
634
|
+
}
|
|
635
|
+
|
|
422
636
|
@PluginMethod
|
|
423
637
|
public void setCustomId(PluginCall call) {
|
|
424
638
|
try {
|
|
@@ -432,7 +646,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
432
646
|
EmptyCallback callback = new EmptyCallback() {
|
|
433
647
|
@Override
|
|
434
648
|
public void success() {
|
|
435
|
-
call
|
|
649
|
+
resolveCall(call);
|
|
436
650
|
}
|
|
437
651
|
|
|
438
652
|
@Override
|
|
@@ -454,7 +668,7 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
454
668
|
EmptyCallback callback = new EmptyCallback() {
|
|
455
669
|
@Override
|
|
456
670
|
public void success() {
|
|
457
|
-
call
|
|
671
|
+
resolveCall(call);
|
|
458
672
|
}
|
|
459
673
|
|
|
460
674
|
@Override
|
|
@@ -473,46 +687,54 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
473
687
|
public void sync(PluginCall call) {
|
|
474
688
|
try {
|
|
475
689
|
String appId = config.getAppId();
|
|
476
|
-
if (appId == null) {
|
|
690
|
+
if (appId == null || appId.isEmpty()) {
|
|
477
691
|
call.reject(ERROR_APP_ID_MISSING);
|
|
478
692
|
return;
|
|
479
693
|
}
|
|
480
694
|
|
|
481
|
-
if (syncInProgress) {
|
|
482
|
-
call.reject(ERROR_SYNC_IN_PROGRESS);
|
|
483
|
-
return;
|
|
484
|
-
}
|
|
485
|
-
syncInProgress = true;
|
|
486
|
-
|
|
487
695
|
SyncOptions options = new SyncOptions(call);
|
|
488
696
|
NonEmptyCallback<Result> callback = new NonEmptyCallback<>() {
|
|
489
697
|
@Override
|
|
490
698
|
public void success(Result result) {
|
|
491
|
-
|
|
492
|
-
call.resolve(result.toJSObject());
|
|
699
|
+
resolveCall(call, result.toJSObject());
|
|
493
700
|
}
|
|
494
701
|
|
|
495
702
|
@Override
|
|
496
703
|
public void error(Exception exception) {
|
|
497
|
-
syncInProgress = false;
|
|
498
704
|
rejectCall(call, exception);
|
|
499
705
|
}
|
|
500
706
|
};
|
|
501
707
|
|
|
502
708
|
implementation.sync(options, callback);
|
|
503
709
|
} catch (Exception exception) {
|
|
504
|
-
syncInProgress = false;
|
|
505
710
|
rejectCall(call, exception);
|
|
506
711
|
}
|
|
507
712
|
}
|
|
508
713
|
|
|
714
|
+
public void notifyDownloadBundleProgressListeners(@NonNull DownloadBundleProgressEvent event) {
|
|
715
|
+
notifyListeners(EVENT_DOWNLOAD_BUNDLE_PROGRESS, event.toJSObject(), false);
|
|
716
|
+
}
|
|
717
|
+
|
|
718
|
+
public void notifyNextBundleSetListeners(@NonNull NextBundleSetEvent event) {
|
|
719
|
+
notifyListeners(EVENT_NEXT_BUNDLE_SET, event.toJSObject(), false);
|
|
720
|
+
}
|
|
721
|
+
|
|
722
|
+
public void notifyReloadedListeners() {
|
|
723
|
+
JSObject event = new JSObject();
|
|
724
|
+
notifyListeners(EVENT_RELOADED, event, true);
|
|
725
|
+
}
|
|
726
|
+
|
|
509
727
|
private LiveUpdateConfig getLiveUpdateConfig() {
|
|
510
728
|
LiveUpdateConfig config = new LiveUpdateConfig();
|
|
511
729
|
|
|
512
730
|
String appId = getConfig().getString("appId", config.getAppId());
|
|
513
731
|
config.setAppId(appId);
|
|
732
|
+
boolean autoBlockRolledBackBundles = getConfig().getBoolean("autoBlockRolledBackBundles", config.getAutoBlockRolledBackBundles());
|
|
733
|
+
config.setAutoBlockRolledBackBundles(autoBlockRolledBackBundles);
|
|
514
734
|
boolean autoDeleteBundles = getConfig().getBoolean("autoDeleteBundles", config.getAutoDeleteBundles());
|
|
515
735
|
config.setAutoDeleteBundles(autoDeleteBundles);
|
|
736
|
+
String autoUpdateStrategy = getConfig().getString("autoUpdateStrategy", config.getAutoUpdateStrategy());
|
|
737
|
+
config.setAutoUpdateStrategy(autoUpdateStrategy);
|
|
516
738
|
String defaultChannel = getConfig().getString("defaultChannel", config.getDefaultChannel());
|
|
517
739
|
config.setDefaultChannel(defaultChannel);
|
|
518
740
|
boolean enabled = getConfig().getBoolean("enabled", config.getEnabled());
|
|
@@ -527,10 +749,24 @@ public class LiveUpdatePlugin extends Plugin {
|
|
|
527
749
|
config.setReadyTimeout(readyTimeout);
|
|
528
750
|
boolean resetOnUpdate = getConfig().getBoolean("resetOnUpdate", config.getResetOnUpdate());
|
|
529
751
|
config.setResetOnUpdate(resetOnUpdate);
|
|
752
|
+
String serverDomain = getConfig().getString("serverDomain", config.getServerDomain());
|
|
753
|
+
config.setServerDomain(serverDomain);
|
|
754
|
+
// Map the deprecated `location` option to `serverDomain` if `serverDomain` was not explicitly set.
|
|
755
|
+
if (serverDomain.equals("api.cloud.capawesome.io") && location != null && location.equals("eu")) {
|
|
756
|
+
config.setServerDomain("api.cloud.capawesome.eu");
|
|
757
|
+
}
|
|
530
758
|
|
|
531
759
|
return config;
|
|
532
760
|
}
|
|
533
761
|
|
|
762
|
+
private void resolveCall(@NonNull PluginCall call) {
|
|
763
|
+
call.resolve();
|
|
764
|
+
}
|
|
765
|
+
|
|
766
|
+
private void resolveCall(@NonNull PluginCall call, @NonNull JSObject result) {
|
|
767
|
+
call.resolve(result);
|
|
768
|
+
}
|
|
769
|
+
|
|
534
770
|
private void rejectCall(PluginCall call, Exception exception) {
|
|
535
771
|
String message = exception.getMessage();
|
|
536
772
|
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
|
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
package io.capawesome.capacitorjs.plugins.liveupdate.classes.api;
|
|
2
|
+
|
|
3
|
+
import androidx.annotation.NonNull;
|
|
4
|
+
import org.json.JSONObject;
|
|
5
|
+
|
|
6
|
+
public class GetChannelsResponseItem {
|
|
7
|
+
|
|
8
|
+
@NonNull
|
|
9
|
+
private final String id;
|
|
10
|
+
|
|
11
|
+
@NonNull
|
|
12
|
+
private final String name;
|
|
13
|
+
|
|
14
|
+
public GetChannelsResponseItem(@NonNull JSONObject responseJson) {
|
|
15
|
+
this.id = responseJson.optString("id");
|
|
16
|
+
this.name = responseJson.optString("name");
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
@NonNull
|
|
20
|
+
public String getId() {
|
|
21
|
+
return id;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
@NonNull
|
|
25
|
+
public String getName() {
|
|
26
|
+
return name;
|
|
27
|
+
}
|
|
28
|
+
}
|