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