@softpak/components 19.1.0-beta.4 → 19.1.0-beta.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/fesm2022/softpak-components-spx-helpers.mjs +9 -1
  2. package/fesm2022/softpak-components-spx-helpers.mjs.map +1 -1
  3. package/fesm2022/softpak-components-spx-translate.mjs +34 -0
  4. package/fesm2022/softpak-components-spx-translate.mjs.map +1 -0
  5. package/fesm2022/softpak-components-spx-update.mjs +336 -111
  6. package/fesm2022/softpak-components-spx-update.mjs.map +1 -1
  7. package/package.json +17 -17
  8. package/spx-helpers/public-api.d.ts +1 -0
  9. package/spx-helpers/unsubscribe-subscriptions.function.d.ts +1 -0
  10. package/{spx-app-update → spx-translate}/index.d.ts +1 -1
  11. package/spx-translate/public-api.d.ts +3 -0
  12. package/spx-translate/spx-translate._const.d.ts +16 -0
  13. package/spx-translate/spx-translate.en.d.ts +2 -0
  14. package/spx-translate/spx-translate.nl.d.ts +2 -0
  15. package/spx-update/public-api.d.ts +12 -2
  16. package/spx-update/spx-upd-page.component.d.ts +16 -0
  17. package/spx-update/spx-upd-pending.component.d.ts +28 -0
  18. package/tailwind.css +1 -1
  19. package/fesm2022/softpak-components-spx-app-update.mjs +0 -573
  20. package/fesm2022/softpak-components-spx-app-update.mjs.map +0 -1
  21. package/spx-app-update/public-api.d.ts +0 -11
  22. package/spx-app-update/spx-app-update.component.d.ts +0 -49
  23. package/spx-update/src/spx-update-info.component.d.ts +0 -18
  24. package/spx-update/src/spx-update-progress.component.d.ts +0 -14
  25. /package/{spx-app-update → spx-update}/store/upd-check/upd-check.actions.d.ts +0 -0
  26. /package/{spx-app-update → spx-update}/store/upd-check/upd-check.effects.d.ts +0 -0
  27. /package/{spx-app-update → spx-update}/store/upd-check/upd-check.initial.d.ts +0 -0
  28. /package/{spx-app-update → spx-update}/store/upd-check/upd-check.reducer.d.ts +0 -0
  29. /package/{spx-app-update → spx-update}/store/upd-check/upd-check.state.d.ts +0 -0
  30. /package/{spx-app-update → spx-update}/store/upd-pending/upd-pending.actions.d.ts +0 -0
  31. /package/{spx-app-update → spx-update}/store/upd-pending/upd-pending.effects.d.ts +0 -0
  32. /package/{spx-app-update → spx-update}/store/upd-pending/upd-pending.initial.d.ts +0 -0
  33. /package/{spx-app-update → spx-update}/store/upd-pending/upd-pending.reducer.d.ts +0 -0
  34. /package/{spx-app-update → spx-update}/store/upd-pending/upd-pending.state.d.ts +0 -0
@@ -1,573 +0,0 @@
1
- import * as i0 from '@angular/core';
2
- import { Component, Input, Injectable } from '@angular/core';
3
- import * as i3 from '@angular/forms';
4
- import { FormsModule, ReactiveFormsModule } from '@angular/forms';
5
- import * as i2 from '@ngx-translate/core';
6
- import { TranslateModule } from '@ngx-translate/core';
7
- import { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';
8
- import { SpxInputComponent } from '@softpak/components/spx-inputs';
9
- import { SpxProgressBarComponent } from '@softpak/components/spx-progress-bar';
10
- import { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';
11
- import { Device } from '@capacitor/device';
12
- import { getCurrentScope, captureMessage } from '@sentry/angular';
13
- import * as i4 from '@ionic/angular/standalone';
14
- import { IonHeader, IonToolbar, IonTitle, IonContent } from '@ionic/angular/standalone';
15
- import * as i1 from 'cordova-plugin-ionic/dist/ngx';
16
- import { createAction, props, union, createFeature, createReducer, on } from '@ngrx/store';
17
- import * as i1$1 from '@ngrx/effects';
18
- import { createEffect, ofType } from '@ngrx/effects';
19
- import { from, of } from 'rxjs';
20
- import { delay, mergeMap, tap, exhaustMap, map, catchError } from 'rxjs/operators';
21
- import { getConfig, setConfig, sync, reload } from '@capacitor/live-updates';
22
- import { Capacitor } from '@capacitor/core';
23
- import { AppUpdate } from '@capawesome/capacitor-app-update';
24
- import { DateTime } from 'luxon';
25
-
26
- const ctrlNextVersionNumber = 'ctrlNextVersionNumber';
27
- const ctrlVersionNumber = 'ctrlVersionNumber';
28
- const ctrlConfiguredChannel = 'ctrlConfiguredChannel';
29
- const ctrlAppStoreVersion = 'ctrlAppStoreVersion';
30
- class SpxAppUpdateComponent {
31
- constructor(deploy, changeDetector, applicationRef, translateService, formBuilder, navController) {
32
- this.deploy = deploy;
33
- this.changeDetector = changeDetector;
34
- this.applicationRef = applicationRef;
35
- this.translateService = translateService;
36
- this.formBuilder = formBuilder;
37
- this.navController = navController;
38
- this.delayedPercentage = 0;
39
- this.percentage = 0;
40
- this.syncTruckInterval = null;
41
- this.updateStatus = this.textCheckingForUpdates;
42
- this.form = this.formBuilder.group({
43
- [ctrlNextVersionNumber]: [null, []],
44
- [ctrlVersionNumber]: [null, []],
45
- [ctrlConfiguredChannel]: [null, []],
46
- [ctrlAppStoreVersion]: [null, []],
47
- });
48
- }
49
- get ctrlVersionNumber() { return this.form.get(ctrlVersionNumber); }
50
- get ctrlNextVersionNumber() { return this.form.get(ctrlNextVersionNumber); }
51
- get ctrlConfiguredChannel() { return this.form.get(ctrlConfiguredChannel); }
52
- get ctrlAppStoreVersion() { return this.form.get(ctrlAppStoreVersion); }
53
- init() {
54
- this.delayedPercentage = 0;
55
- this.percentage = 0;
56
- this.performAutomaticUpdate().then(() => { });
57
- this.startLoaderSync();
58
- this.changeStatus({
59
- percentage: 0,
60
- text: this.translateService.instant(this.textCheckingForUpdates),
61
- });
62
- }
63
- destroy() {
64
- this.stopLoaderSync();
65
- }
66
- async performAutomaticUpdate() {
67
- const deviceInfo = await Device.getInfo();
68
- if (deviceInfo?.platform === 'web') {
69
- // Local? Skip the update page.
70
- this.closeUpdateScreen();
71
- }
72
- try {
73
- this.updateInfo();
74
- // Start upgrade
75
- const currentVersion = await this.deploy.getCurrentVersion();
76
- if (currentVersion?.binaryVersionName) {
77
- const binaryGroup = currentVersion.binaryVersionName.substring(0, 3); // e.g. "1.4"
78
- const channelGroup = currentVersion.channel.split('-')[1].substring(0, 3); // e.g. "1.4"
79
- const channelType = currentVersion.channel.split('-')[0];
80
- if (binaryGroup != channelGroup) {
81
- await this.deploy.configure({
82
- appId: this.spxAppId,
83
- channel: `${channelType}-${binaryGroup}.x`
84
- }).then(() => {
85
- this.sync().then(() => { });
86
- });
87
- }
88
- else {
89
- this.sync().then(() => { });
90
- }
91
- }
92
- else {
93
- this.sync().then(() => { });
94
- }
95
- // End upgrade
96
- }
97
- catch (error) {
98
- this.changeStatus({
99
- closeScreen: true,
100
- error,
101
- percentage: 100,
102
- text: this.translateService.instant(this.textUnexpectedError)
103
- });
104
- }
105
- }
106
- async sync() {
107
- try {
108
- this.updateInfo();
109
- const updateAvailableInfo = await this.deploy.checkForUpdate();
110
- if (!updateAvailableInfo.available) {
111
- // No update available
112
- this.changeStatus({
113
- closeScreen: true,
114
- percentage: 0,
115
- text: this.translateService.instant(this.textNoUpdatesAvailable),
116
- });
117
- }
118
- else {
119
- // Download update
120
- await this.deploy.sync({ updateMethod: 'auto' }, (percentage) => {
121
- this.changeStatus({
122
- percentage: percentage ?? 0,
123
- text: this.translateService.instant(this.textDownloadingUpdate, { percentage, version: updateAvailableInfo.build }),
124
- });
125
- }).catch((error) => {
126
- this.changeStatus({
127
- closeScreen: true,
128
- error,
129
- percentage: 100,
130
- text: this.translateService.instant(this.textErrorWhileUpdatingApp),
131
- });
132
- });
133
- this.changeStatus({
134
- closeScreen: true,
135
- percentage: 100,
136
- text: this.translateService.instant(this.textFinishedUpdating, { version: updateAvailableInfo.build })
137
- });
138
- }
139
- }
140
- catch (error) {
141
- // Catch unexpected plug-in errors
142
- this.changeStatus({
143
- closeScreen: true,
144
- error,
145
- percentage: 100,
146
- text: this.translateService.instant(this.textUnexpectedError)
147
- });
148
- }
149
- }
150
- async updateInfo() {
151
- const currentVersion = await this.deploy.getCurrentVersion();
152
- const configuration = await this.deploy.getConfiguration();
153
- const updateAvailableInfo = await this.deploy.checkForUpdate();
154
- if (currentVersion) {
155
- this.ctrlVersionNumber.setValue({
156
- value: configuration?.currentBuildId,
157
- });
158
- this.ctrlNextVersionNumber.setValue({
159
- value: updateAvailableInfo?.build
160
- });
161
- this.ctrlConfiguredChannel.setValue({
162
- value: configuration ? configuration.channel : null
163
- });
164
- this.ctrlAppStoreVersion.setValue({
165
- value: configuration ? configuration.binaryVersionName : null
166
- });
167
- {
168
- const scope = getCurrentScope();
169
- scope.setTag('version_binary_code', currentVersion?.binaryVersionCode);
170
- scope.setTag('version_binary_name', currentVersion?.binaryVersionName);
171
- scope.setTag('version_build_id', currentVersion?.buildId);
172
- scope.setTag('channel_type', currentVersion?.channel);
173
- scope.setTag('version_snapshot_id', currentVersion?.versionId);
174
- }
175
- ;
176
- this.changeDetector.markForCheck();
177
- this.applicationRef.tick();
178
- }
179
- }
180
- changeStatus(status) {
181
- this.updateStatus = status.text;
182
- this.percentage = status.percentage;
183
- if (status.closeScreen) {
184
- this.closeUpdateScreen();
185
- }
186
- if (status.error) {
187
- // this.appStore.dispatch(
188
- // sharedToasterActions.CREATE_ERROR({
189
- // messageText: status.error,
190
- // })
191
- // );
192
- }
193
- this.changeDetector.markForCheck();
194
- this.applicationRef.tick();
195
- }
196
- closeUpdateScreen() {
197
- // Allowing some time to make a screenshot of version info
198
- SpxStorage.clearSetting(SpxStorageKeyEnum.updateInProgress);
199
- setTimeout(() => {
200
- if (SpxStorage.getSetting(SpxStorageKeyEnum.afterSignIn) &&
201
- this.spxIsSignedIn) {
202
- this.navController.navigateRoot([SpxStorage.getSetting(SpxStorageKeyEnum.afterSignIn)]);
203
- SpxStorage.clearSetting(SpxStorageKeyEnum.afterSignIn);
204
- }
205
- else {
206
- this.navController.navigateRoot([this.spxHomeUrl]);
207
- }
208
- }, 0);
209
- }
210
- startLoaderSync() {
211
- SpxStorage.setSetting(SpxStorageKeyEnum.updateInProgress, '1');
212
- if (this.syncTruckInterval === null) {
213
- this.syncTruckInterval = setInterval(() => {
214
- this.delayedPercentage = this.percentage;
215
- }, 200);
216
- }
217
- }
218
- stopLoaderSync() {
219
- if (this.syncTruckInterval !== null) {
220
- clearInterval(this.syncTruckInterval);
221
- this.syncTruckInterval = null;
222
- }
223
- }
224
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SpxAppUpdateComponent, deps: [{ token: i1.Deploy }, { token: i0.ChangeDetectorRef }, { token: i0.ApplicationRef }, { token: i2.TranslateService }, { token: i3.FormBuilder }, { token: i4.NavController }], target: i0.ɵɵFactoryTarget.Component }); }
225
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.0.5", type: SpxAppUpdateComponent, isStandalone: true, selector: "spx-app-update", inputs: { spxHomeUrl: "spxHomeUrl", spxIsSignedIn: "spxIsSignedIn", textCheckingForUpdates: "textCheckingForUpdates", textDownloadingUpdate: "textDownloadingUpdate", textErrorWhileUpdatingApp: "textErrorWhileUpdatingApp", textFinishedUpdating: "textFinishedUpdating", textNoUpdatesAvailable: "textNoUpdatesAvailable", textUnexpectedError: "textUnexpectedError", txtAppStoreVersion: "txtAppStoreVersion", txtChannel: "txtChannel", txtNextVersion: "txtNextVersion", txtUpdate: "txtUpdate", txtVersion: "txtVersion", spxAppId: "spxAppId" }, ngImport: i0, template: `<ion-header>
226
- <ion-toolbar>
227
- <ion-title>
228
- {{ txtUpdate | translate | capitalize }}
229
- </ion-title>
230
- </ion-toolbar>
231
- </ion-header>
232
-
233
- <ion-content class="ion-content--upd" [fullscreen]="true">
234
- <div class="ion-padding">
235
- <spx-progress-bar [spxPercentage]="delayedPercentage" [spxTitle]="updateStatus | capitalize">
236
- </spx-progress-bar>
237
- <form [formGroup]="form" class="mt-3">
238
- @if (ctrlAppStoreVersion.value && ctrlAppStoreVersion.value.value) {
239
- <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3">
240
- <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | translate | capitalize"
241
- [spxReadonly]="true"></spx-input>
242
- <spx-input [formControl]="ctrlConfiguredChannel" [spxLabel]="txtChannel | translate | capitalize"
243
- [spxReadonly]="true"></spx-input>
244
- <spx-input [formControl]="ctrlVersionNumber" [spxLabel]="txtVersion | translate | capitalize"
245
- [spxReadonly]="true"></spx-input>
246
- @if (ctrlNextVersionNumber.value && ctrlNextVersionNumber.value.value) {
247
- <spx-input [formControl]="ctrlNextVersionNumber" [spxLabel]="txtNextVersion | translate | capitalize"
248
- [spxReadonly]="true"></spx-input>
249
- }
250
- </div>
251
- }
252
- </form>
253
- </div>
254
- </ion-content>`, isInline: true, dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i3.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i3.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i3.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: IonHeader, selector: "ion-header", inputs: ["collapse", "mode", "translucent"] }, { kind: "component", type: IonToolbar, selector: "ion-toolbar", inputs: ["color", "mode"] }, { kind: "component", type: IonTitle, selector: "ion-title", inputs: ["color", "size"] }, { kind: "component", type: IonContent, selector: "ion-content", inputs: ["color", "fixedSlotPlacement", "forceOverscroll", "fullscreen", "scrollEvents", "scrollX", "scrollY"] }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i3.FormControlDirective, selector: "[formControl]", inputs: ["formControl", "disabled", "ngModel"], outputs: ["ngModelChange"], exportAs: ["ngForm"] }, { kind: "directive", type: i3.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "pipe", type: SpxCapitalizePipe, name: "capitalize" }, { kind: "component", type: SpxInputComponent, selector: "spx-input", inputs: ["spxLabel", "spxMax", "spxMin", "spxName", "spxReadonly", "spxAutocomplete", "spxAutofocus", "spxInputMode", "spxPattern", "spxRequired", "spxSelectMonth", "spxSelectDay", "spxShowEdit", "spxShowHelp", "spxShowLabel", "spxCompact", "spxShowClear", "spxShowSearch", "spxShowValidationMessages", "spxStep", "spxSuggestions", "spxType", "spxValidators", "value", "spxCapitalize", "spxFocused"], outputs: ["spxBlur", "spxClear", "spxChange", "spxFocus", "spxEdit", "spxHelp", "spxSearch"] }, { kind: "component", type: SpxProgressBarComponent, selector: "spx-progress-bar", inputs: ["spxPercentage", "spxTitle"] }, { kind: "ngmodule", type: TranslateModule }, { kind: "pipe", type: i2.TranslatePipe, name: "translate" }] }); }
255
- }
256
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: SpxAppUpdateComponent, decorators: [{
257
- type: Component,
258
- args: [{
259
- selector: 'spx-app-update',
260
- imports: [
261
- FormsModule,
262
- IonHeader,
263
- IonToolbar,
264
- IonTitle,
265
- IonContent,
266
- ReactiveFormsModule,
267
- SpxCapitalizePipe,
268
- SpxInputComponent,
269
- SpxProgressBarComponent,
270
- TranslateModule
271
- ],
272
- template: `<ion-header>
273
- <ion-toolbar>
274
- <ion-title>
275
- {{ txtUpdate | translate | capitalize }}
276
- </ion-title>
277
- </ion-toolbar>
278
- </ion-header>
279
-
280
- <ion-content class="ion-content--upd" [fullscreen]="true">
281
- <div class="ion-padding">
282
- <spx-progress-bar [spxPercentage]="delayedPercentage" [spxTitle]="updateStatus | capitalize">
283
- </spx-progress-bar>
284
- <form [formGroup]="form" class="mt-3">
285
- @if (ctrlAppStoreVersion.value && ctrlAppStoreVersion.value.value) {
286
- <div class="grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3">
287
- <spx-input [formControl]="ctrlAppStoreVersion" [spxLabel]="txtAppStoreVersion | translate | capitalize"
288
- [spxReadonly]="true"></spx-input>
289
- <spx-input [formControl]="ctrlConfiguredChannel" [spxLabel]="txtChannel | translate | capitalize"
290
- [spxReadonly]="true"></spx-input>
291
- <spx-input [formControl]="ctrlVersionNumber" [spxLabel]="txtVersion | translate | capitalize"
292
- [spxReadonly]="true"></spx-input>
293
- @if (ctrlNextVersionNumber.value && ctrlNextVersionNumber.value.value) {
294
- <spx-input [formControl]="ctrlNextVersionNumber" [spxLabel]="txtNextVersion | translate | capitalize"
295
- [spxReadonly]="true"></spx-input>
296
- }
297
- </div>
298
- }
299
- </form>
300
- </div>
301
- </ion-content>`
302
- }]
303
- }], ctorParameters: () => [{ type: i1.Deploy }, { type: i0.ChangeDetectorRef }, { type: i0.ApplicationRef }, { type: i2.TranslateService }, { type: i3.FormBuilder }, { type: i4.NavController }], propDecorators: { spxHomeUrl: [{
304
- type: Input
305
- }], spxIsSignedIn: [{
306
- type: Input
307
- }], textCheckingForUpdates: [{
308
- type: Input
309
- }], textDownloadingUpdate: [{
310
- type: Input
311
- }], textErrorWhileUpdatingApp: [{
312
- type: Input
313
- }], textFinishedUpdating: [{
314
- type: Input
315
- }], textNoUpdatesAvailable: [{
316
- type: Input
317
- }], textUnexpectedError: [{
318
- type: Input
319
- }], txtAppStoreVersion: [{
320
- type: Input
321
- }], txtChannel: [{
322
- type: Input
323
- }], txtNextVersion: [{
324
- type: Input
325
- }], txtUpdate: [{
326
- type: Input
327
- }], txtVersion: [{
328
- type: Input
329
- }], spxAppId: [{
330
- type: Input
331
- }] } });
332
-
333
- const anUpdateIsReady = createAction('[UPD / Check] An update is ready', props());
334
- const clearError = createAction('[UPD / Check] Clear error', props());
335
- const checkFailed = createAction('[UPD / Check] Error happened', props());
336
- const initialize = createAction('[UPD / Check] Initialize', props());
337
- const noUpdateWasFound = createAction('[UPD / Check] No update was found', props());
338
- const notAvailableOnWeb = createAction('[UPD / Check] Not available on web', props());
339
- const runCheck = createAction('[UPD / Check] Run', props());
340
- const all$1 = union({
341
- anUpdateIsReady,
342
- clearError,
343
- checkFailed,
344
- initialize,
345
- noUpdateWasFound,
346
- notAvailableOnWeb,
347
- runCheck,
348
- });
349
-
350
- var updCheck_actions = /*#__PURE__*/Object.freeze({
351
- __proto__: null,
352
- anUpdateIsReady: anUpdateIsReady,
353
- checkFailed: checkFailed,
354
- clearError: clearError,
355
- initialize: initialize,
356
- noUpdateWasFound: noUpdateWasFound,
357
- notAvailableOnWeb: notAvailableOnWeb,
358
- runCheck: runCheck
359
- });
360
-
361
- const acceptUpdate = createAction('[UPD / Available] Accept update', props());
362
- const hasBeenDownloaded = createAction('[UPD / Available] Has been downloaded', props());
363
- const hasBeenInstalled = createAction('[UPD / Available] Has been installed', props());
364
- const postpone = createAction('[UPD / Available] Postpone', props());
365
- const postponeExpired = createAction('[UPD / Available] Postpone expired', props());
366
- const all = union({
367
- acceptUpdate,
368
- hasBeenDownloaded,
369
- hasBeenInstalled,
370
- postpone,
371
- postponeExpired,
372
- });
373
-
374
- var updPending_actions = /*#__PURE__*/Object.freeze({
375
- __proto__: null,
376
- acceptUpdate: acceptUpdate,
377
- hasBeenDownloaded: hasBeenDownloaded,
378
- hasBeenInstalled: hasBeenInstalled,
379
- postpone: postpone,
380
- postponeExpired: postponeExpired
381
- });
382
-
383
- let Effects$1 = class Effects {
384
- constructor(actions$) {
385
- this.actions$ = actions$;
386
- this.afterInitialize$ = createEffect(() => this.actions$.pipe(ofType(initialize), delay(120000), mergeMap(() => [
387
- runCheck({}),
388
- ])));
389
- this.onRun$ = createEffect(() => this.actions$.pipe(ofType(runCheck), tap(async () => {
390
- if (Capacitor.getPlatform() !== 'web') {
391
- // Migrate from e.g. 1.2.x to 1.3.x
392
- const binaryInfo = await AppUpdate.getAppUpdateInfo();
393
- const binaryVersionGroup = (Capacitor.getPlatform() === 'android' ? binaryInfo.currentVersionCode : binaryInfo.currentVersionName).substring(0, 3);
394
- const config = await getConfig();
395
- const channelVersionGroup = config.channel.split('-')[1].substring(0, 3); // e.g. "1.4"
396
- const channelType = config.channel.split('-')[0];
397
- captureMessage("[UPD] Changed chanel to `${channelType}-${binaryVersionGroup}.x`");
398
- if (binaryVersionGroup != channelVersionGroup) {
399
- await setConfig({
400
- channel: `${channelType}-${binaryVersionGroup}.x`
401
- });
402
- }
403
- // End migrate from e.g. 1.2.x to 1.3.x
404
- }
405
- }), exhaustMap((action) => from(sync()).pipe(map((syncResult) => {
406
- if (syncResult.activeApplicationPathChanged) {
407
- if (action.forceWaitForUpdate) {
408
- reload();
409
- }
410
- return anUpdateIsReady({});
411
- }
412
- else {
413
- return noUpdateWasFound({ startUpdateAgainAfterTimeout: !action.forceWaitForUpdate });
414
- }
415
- }), catchError((err) => {
416
- if (err.message !== 'Not implemented for web only') {
417
- captureMessage("[UPD] Handled: " + err.message);
418
- }
419
- return err.message === 'Not implemented for web only' ? of(notAvailableOnWeb({})) : of(checkFailed({ startUpdateAgainAfterTimeout: !action.forceWaitForUpdate }));
420
- })))));
421
- this.whenAndUpdateIsReady$ = createEffect(() => this.actions$.pipe(ofType(anUpdateIsReady), mergeMap(() => [
422
- hasBeenDownloaded({}),
423
- ])));
424
- this.whenCheckHasFailed$ = createEffect(() => this.actions$.pipe(ofType(checkFailed), delay(30000), mergeMap((action) => !action.startUpdateAgainAfterTimeout ? [] : [
425
- runCheck({}),
426
- ])));
427
- this.whenNoUpdateWasFound$ = createEffect(() => this.actions$.pipe(ofType(noUpdateWasFound), delay(120000), mergeMap((action) => !action.startUpdateAgainAfterTimeout ? [] : [
428
- runCheck({}),
429
- ])));
430
- }
431
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Effects, deps: [{ token: i1$1.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
432
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Effects }); }
433
- };
434
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Effects$1, decorators: [{
435
- type: Injectable
436
- }], ctorParameters: () => [{ type: i1$1.Actions }] });
437
-
438
- var updCheck_effects = /*#__PURE__*/Object.freeze({
439
- __proto__: null,
440
- Effects: Effects$1
441
- });
442
-
443
- const initialState$1 = {
444
- forceWaitForUpdate: false,
445
- lastCheck: null,
446
- showError: false,
447
- };
448
-
449
- var updCheck_initial = /*#__PURE__*/Object.freeze({
450
- __proto__: null,
451
- initialState: initialState$1
452
- });
453
-
454
- var updCheck_reducer = createFeature({
455
- name: 'spxUpdCheck',
456
- reducer: createReducer(initialState$1, on(anUpdateIsReady, (state) => {
457
- return {
458
- ...state,
459
- lastCheck: DateTime.now().toISO(),
460
- showError: false,
461
- };
462
- }), on(clearError, (state) => {
463
- return {
464
- ...state,
465
- showError: false,
466
- };
467
- }), on(checkFailed, (state) => {
468
- return {
469
- ...state,
470
- forceWaitForUpdate: false,
471
- showError: true,
472
- };
473
- }), on(noUpdateWasFound, (state) => {
474
- return {
475
- ...state,
476
- forceWaitForUpdate: false,
477
- lastCheck: DateTime.now().toISO(),
478
- showError: false,
479
- };
480
- }), on(runCheck, (state, { forceWaitForUpdate }) => {
481
- return {
482
- ...state,
483
- forceWaitForUpdate: forceWaitForUpdate ? true : state.forceWaitForUpdate
484
- };
485
- }), on(notAvailableOnWeb, (state) => {
486
- return {
487
- ...state,
488
- forceWaitForUpdate: false
489
- };
490
- })),
491
- });
492
-
493
- var updCheck_reducer$1 = /*#__PURE__*/Object.freeze({
494
- __proto__: null,
495
- default: updCheck_reducer
496
- });
497
-
498
- var updCheck_state = /*#__PURE__*/Object.freeze({
499
- __proto__: null
500
- });
501
-
502
- class Effects {
503
- constructor(actions$) {
504
- this.actions$ = actions$;
505
- this.whenAccepted$ = createEffect(() => this.actions$.pipe(ofType(acceptUpdate), mergeMap(() => {
506
- reload();
507
- return [];
508
- })));
509
- }
510
- static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Effects, deps: [{ token: i1$1.Actions }], target: i0.ɵɵFactoryTarget.Injectable }); }
511
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Effects }); }
512
- }
513
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.0.5", ngImport: i0, type: Effects, decorators: [{
514
- type: Injectable
515
- }], ctorParameters: () => [{ type: i1$1.Actions }] });
516
-
517
- var updPending_effects = /*#__PURE__*/Object.freeze({
518
- __proto__: null,
519
- Effects: Effects
520
- });
521
-
522
- const initialState = {
523
- showLiveUpdateReady: false,
524
- updateIsDownloadedAndPending: false,
525
- };
526
-
527
- var updPending_initial = /*#__PURE__*/Object.freeze({
528
- __proto__: null,
529
- initialState: initialState
530
- });
531
-
532
- var updPending_reducer = createFeature({
533
- name: 'spxUpdPending',
534
- reducer: createReducer(initialState, on(hasBeenDownloaded, (state) => {
535
- return {
536
- ...state,
537
- showLiveUpdateReady: true,
538
- updateIsDownloadedAndPending: true,
539
- };
540
- }), on(hasBeenInstalled, (state) => {
541
- return {
542
- ...state,
543
- showLiveUpdateReady: false,
544
- updateIsDownloadedAndPending: false,
545
- };
546
- }), on(postpone, (state) => {
547
- return {
548
- ...state,
549
- showLiveUpdateReady: false,
550
- };
551
- }), on(postponeExpired, (state) => {
552
- return {
553
- ...state,
554
- showLiveUpdateReady: true,
555
- };
556
- })),
557
- });
558
-
559
- var updPending_reducer$1 = /*#__PURE__*/Object.freeze({
560
- __proto__: null,
561
- default: updPending_reducer
562
- });
563
-
564
- var updPending_state = /*#__PURE__*/Object.freeze({
565
- __proto__: null
566
- });
567
-
568
- /**
569
- * Generated bundle index. Do not edit.
570
- */
571
-
572
- export { SpxAppUpdateComponent, updCheck_actions as updCheckActions, updCheck_effects as updCheckEffects, updCheck_initial as updCheckInitial, updCheck_reducer$1 as updCheckReducer, updCheck_state as updCheckState, updPending_actions as updPendingActions, updPending_effects as updPendingEffects, updPending_initial as updPendingInitial, updPending_reducer$1 as updPendingReducer, updPending_state as updPendingState };
573
- //# sourceMappingURL=softpak-components-spx-app-update.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"softpak-components-spx-app-update.mjs","sources":["../../../../projects/softpak/components/spx-app-update/spx-app-update.component.ts","../../../../projects/softpak/components/spx-app-update/store/upd-check/upd-check.actions.ts","../../../../projects/softpak/components/spx-app-update/store/upd-pending/upd-pending.actions.ts","../../../../projects/softpak/components/spx-app-update/store/upd-check/upd-check.effects.ts","../../../../projects/softpak/components/spx-app-update/store/upd-check/upd-check.initial.ts","../../../../projects/softpak/components/spx-app-update/store/upd-check/upd-check.reducer.ts","../../../../projects/softpak/components/spx-app-update/store/upd-pending/upd-pending.effects.ts","../../../../projects/softpak/components/spx-app-update/store/upd-pending/upd-pending.initial.ts","../../../../projects/softpak/components/spx-app-update/store/upd-pending/upd-pending.reducer.ts","../../../../projects/softpak/components/spx-app-update/softpak-components-spx-app-update.ts"],"sourcesContent":["import { NgClass } from '@angular/common';\nimport { ApplicationRef, ChangeDetectorRef, Component, Input } from '@angular/core';\nimport { FormBuilder, FormControl, FormGroup, FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { TranslateModule, TranslateService } from '@ngx-translate/core';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { SpxInputComponent } from '@softpak/components/spx-inputs';\nimport { SpxProgressBarComponent } from '@softpak/components/spx-progress-bar';\nimport { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';\nimport { Device } from '@capacitor/device';\nimport { Deploy } from 'cordova-plugin-ionic/dist/ngx';\nimport { getCurrentScope } from '@sentry/angular';\nimport { IonContent, IonHeader, IonTitle, IonToolbar, NavController } from '@ionic/angular/standalone';\n\nconst ctrlNextVersionNumber = 'ctrlNextVersionNumber';\nconst ctrlVersionNumber = 'ctrlVersionNumber';\nconst ctrlConfiguredChannel = 'ctrlConfiguredChannel';\nconst ctrlAppStoreVersion = 'ctrlAppStoreVersion';\n\n@Component({\n selector: 'spx-app-update',\n imports: [\n FormsModule,\n IonHeader,\n IonToolbar,\n IonTitle,\n IonContent,\n ReactiveFormsModule,\n SpxCapitalizePipe,\n SpxInputComponent,\n SpxProgressBarComponent,\n TranslateModule\n ],\n template: `<ion-header>\n <ion-toolbar>\n <ion-title>\n {{ txtUpdate | translate | capitalize }}\n </ion-title>\n </ion-toolbar>\n </ion-header>\n \n <ion-content class=\"ion-content--upd\" [fullscreen]=\"true\">\n <div class=\"ion-padding\">\n <spx-progress-bar [spxPercentage]=\"delayedPercentage\" [spxTitle]=\"updateStatus | capitalize\">\n </spx-progress-bar>\n <form [formGroup]=\"form\" class=\"mt-3\">\n @if (ctrlAppStoreVersion.value && ctrlAppStoreVersion.value.value) {\n <div class=\"grid grid-cols-1 md:grid-cols-2 xl:grid-cols-3 gap-3\">\n <spx-input [formControl]=\"ctrlAppStoreVersion\" [spxLabel]=\"txtAppStoreVersion | translate | capitalize\"\n [spxReadonly]=\"true\"></spx-input>\n <spx-input [formControl]=\"ctrlConfiguredChannel\" [spxLabel]=\"txtChannel | translate | capitalize\"\n [spxReadonly]=\"true\"></spx-input>\n <spx-input [formControl]=\"ctrlVersionNumber\" [spxLabel]=\"txtVersion | translate | capitalize\"\n [spxReadonly]=\"true\"></spx-input>\n @if (ctrlNextVersionNumber.value && ctrlNextVersionNumber.value.value) {\n <spx-input [formControl]=\"ctrlNextVersionNumber\" [spxLabel]=\"txtNextVersion | translate | capitalize\"\n [spxReadonly]=\"true\"></spx-input>\n }\n </div>\n }\n </form>\n </div>\n </ion-content>`\n})\nexport class SpxAppUpdateComponent {\n @Input() spxHomeUrl!: string;\n @Input() spxIsSignedIn!: boolean;\n @Input() textCheckingForUpdates!: string;\n @Input() textDownloadingUpdate!: string;\n @Input() textErrorWhileUpdatingApp!: string;\n @Input() textFinishedUpdating!: string;\n @Input() textNoUpdatesAvailable!: string;\n @Input() textUnexpectedError!: string;\n @Input() txtAppStoreVersion!: string;\n @Input() txtChannel!: string;\n @Input() txtNextVersion!: string;\n @Input() txtUpdate!: string;\n @Input() txtVersion!: string;\n @Input() spxAppId!: string;\n\n form: FormGroup;\n\n delayedPercentage: number = 0;\n percentage: number = 0;\n syncTruckInterval: any | null = null;\n updateStatus: string = this.textCheckingForUpdates;\n\n constructor(\n private readonly deploy: Deploy,\n private readonly changeDetector: ChangeDetectorRef,\n private readonly applicationRef: ApplicationRef,\n private readonly translateService: TranslateService,\n private readonly formBuilder: FormBuilder,\n private readonly navController: NavController,\n ) {\n this.form = this.formBuilder.group({\n [ctrlNextVersionNumber]: [null, []],\n [ctrlVersionNumber]: [null, []],\n [ctrlConfiguredChannel]: [null, []],\n [ctrlAppStoreVersion]: [null, []],\n });\n }\n\n get ctrlVersionNumber(): FormControl { return this.form.get(ctrlVersionNumber) as FormControl; }\n get ctrlNextVersionNumber(): FormControl { return this.form.get(ctrlNextVersionNumber) as FormControl; }\n get ctrlConfiguredChannel(): FormControl { return this.form.get(ctrlConfiguredChannel) as FormControl; }\n get ctrlAppStoreVersion(): FormControl { return this.form.get(ctrlAppStoreVersion) as FormControl; }\n\n init() {\n this.delayedPercentage = 0;\n this.percentage = 0;\n this.performAutomaticUpdate().then(() => { });\n this.startLoaderSync();\n this.changeStatus({\n percentage: 0,\n text: this.translateService.instant(this.textCheckingForUpdates),\n });\n }\n\n destroy() {\n this.stopLoaderSync();\n }\n\n async performAutomaticUpdate() {\n const deviceInfo = await Device.getInfo();\n\n if (deviceInfo?.platform === 'web') {\n // Local? Skip the update page.\n this.closeUpdateScreen();\n }\n try {\n this.updateInfo();\n\n // Start upgrade\n const currentVersion = await this.deploy.getCurrentVersion();\n if (currentVersion?.binaryVersionName) {\n const binaryGroup = currentVersion.binaryVersionName.substring(0, 3); // e.g. \"1.4\"\n const channelGroup = currentVersion.channel.split('-')[1].substring(0, 3); // e.g. \"1.4\"\n const channelType = currentVersion.channel.split('-')[0];\n\n if (binaryGroup != channelGroup) {\n await this.deploy.configure({\n appId: this.spxAppId,\n channel: `${channelType}-${binaryGroup}.x`\n }).then(() => {\n this.sync().then(() => { });\n });\n } else {\n this.sync().then(() => { });\n }\n } else {\n this.sync().then(() => { });\n }\n // End upgrade\n } catch (error: any) {\n this.changeStatus({\n closeScreen: true,\n error,\n percentage: 100,\n text: this.translateService.instant(this.textUnexpectedError)\n });\n }\n }\n\n private async sync() {\n try {\n this.updateInfo();\n\n const updateAvailableInfo = await this.deploy.checkForUpdate();\n if (!updateAvailableInfo.available) {\n // No update available\n this.changeStatus({\n closeScreen: true,\n percentage: 0,\n text: this.translateService.instant(this.textNoUpdatesAvailable),\n });\n } else {\n // Download update\n await this.deploy.sync({ updateMethod: 'auto' }, (percentage) => {\n this.changeStatus({\n percentage: percentage ?? 0,\n text: this.translateService.instant(this.textDownloadingUpdate, { percentage, version: updateAvailableInfo.build }),\n });\n }).catch((error) => {\n this.changeStatus({\n closeScreen: true,\n error,\n percentage: 100,\n text: this.translateService.instant(this.textErrorWhileUpdatingApp),\n });\n });\n\n this.changeStatus({\n closeScreen: true,\n percentage: 100,\n text: this.translateService.instant(this.textFinishedUpdating, { version: updateAvailableInfo.build })\n });\n }\n } catch (error: any) {\n // Catch unexpected plug-in errors\n this.changeStatus({\n closeScreen: true,\n error,\n percentage: 100,\n text: this.translateService.instant(this.textUnexpectedError)\n });\n }\n }\n\n private async updateInfo(): Promise<void> {\n const currentVersion = await this.deploy.getCurrentVersion();\n const configuration = await this.deploy.getConfiguration();\n const updateAvailableInfo = await this.deploy.checkForUpdate();\n\n if (currentVersion) {\n this.ctrlVersionNumber.setValue({\n value: configuration?.currentBuildId,\n });\n this.ctrlNextVersionNumber.setValue({\n value: updateAvailableInfo?.build\n });\n this.ctrlConfiguredChannel.setValue({\n value: configuration ? configuration.channel : null\n });\n this.ctrlAppStoreVersion.setValue({\n value: configuration ? configuration.binaryVersionName : null\n });\n\n {\n const scope = getCurrentScope();\n scope.setTag('version_binary_code', currentVersion?.binaryVersionCode);\n scope.setTag('version_binary_name', currentVersion?.binaryVersionName);\n scope.setTag('version_build_id', currentVersion?.buildId);\n scope.setTag('channel_type', currentVersion?.channel);\n scope.setTag('version_snapshot_id', currentVersion?.versionId);\n };\n\n this.changeDetector.markForCheck();\n this.applicationRef.tick();\n }\n }\n\n private changeStatus(status: {\n error?: string;\n text: string;\n closeScreen?: boolean;\n percentage: number;\n }) {\n this.updateStatus = status.text;\n this.percentage = status.percentage;\n if (status.closeScreen) {\n this.closeUpdateScreen();\n }\n if (status.error) {\n // this.appStore.dispatch(\n // sharedToasterActions.CREATE_ERROR({\n // messageText: status.error,\n // })\n // );\n }\n this.changeDetector.markForCheck();\n this.applicationRef.tick();\n }\n\n private closeUpdateScreen() {\n // Allowing some time to make a screenshot of version info\n SpxStorage.clearSetting<any>(SpxStorageKeyEnum.updateInProgress);\n setTimeout(() => {\n if (\n SpxStorage.getSetting<any>(SpxStorageKeyEnum.afterSignIn) &&\n this.spxIsSignedIn\n ) {\n this.navController.navigateRoot([SpxStorage.getSetting<any>(SpxStorageKeyEnum.afterSignIn)]);\n SpxStorage.clearSetting<any>(SpxStorageKeyEnum.afterSignIn)\n } else {\n this.navController.navigateRoot([this.spxHomeUrl]);\n }\n }, 0);\n }\n\n private startLoaderSync() {\n SpxStorage.setSetting<any>(SpxStorageKeyEnum.updateInProgress, '1');\n if (this.syncTruckInterval === null) {\n this.syncTruckInterval = setInterval(() => {\n this.delayedPercentage = this.percentage;\n }, 200);\n }\n }\n\n private stopLoaderSync() {\n if (this.syncTruckInterval !== null) {\n clearInterval(this.syncTruckInterval);\n this.syncTruckInterval = null;\n }\n }\n}\n","import { createAction, props, union } from '@ngrx/store';\n\nexport const anUpdateIsReady = createAction('[UPD / Check] An update is ready', props<Record<string, unknown>>());\nexport const clearError = createAction('[UPD / Check] Clear error', props<Record<string, unknown>>());\nexport const checkFailed = createAction('[UPD / Check] Error happened', props<{ startUpdateAgainAfterTimeout?: boolean }>());\nexport const initialize = createAction('[UPD / Check] Initialize', props<Record<string, unknown>>());\nexport const noUpdateWasFound = createAction('[UPD / Check] No update was found', props<{ startUpdateAgainAfterTimeout?: boolean }>());\nexport const notAvailableOnWeb = createAction('[UPD / Check] Not available on web', props<Record<string, unknown>>());\nexport const runCheck = createAction('[UPD / Check] Run', props<{ forceWaitForUpdate?: boolean; }>());\n\nconst all = union({\n anUpdateIsReady,\n clearError,\n checkFailed,\n initialize,\n noUpdateWasFound,\n notAvailableOnWeb,\n runCheck,\n});\n\nexport type Actions = typeof all;\n","import { createAction, props, union } from '@ngrx/store';\n\nexport const acceptUpdate = createAction('[UPD / Available] Accept update', props<Record<string, unknown>>());\nexport const hasBeenDownloaded = createAction('[UPD / Available] Has been downloaded', props<Record<string, unknown>>());\nexport const hasBeenInstalled = createAction('[UPD / Available] Has been installed', props<Record<string, unknown>>());\nexport const postpone = createAction('[UPD / Available] Postpone', props<Record<string, unknown>>());\nexport const postponeExpired = createAction('[UPD / Available] Postpone expired', props<Record<string, unknown>>());\n\nconst all = union({\n acceptUpdate,\n hasBeenDownloaded,\n hasBeenInstalled,\n postpone,\n postponeExpired,\n});\n\nexport type Actions = typeof all;\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { from, Observable, of } from 'rxjs';\nimport { catchError, delay, exhaustMap, map, mergeMap, tap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport * as actions from './upd-check.actions';\nimport { getConfig, reload, setConfig, sync, SyncResult } from '@capacitor/live-updates';\nimport { captureMessage } from '@sentry/angular';\nimport { Capacitor } from '@capacitor/core';\nimport { AppUpdate } from '@capawesome/capacitor-app-update';\nimport { hasBeenDownloaded } from '../upd-pending/upd-pending.actions';\n\n@Injectable()\nexport class Effects {\n afterInitialize$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(actions.initialize),\n delay(120000),\n mergeMap(() => [\n actions.runCheck({}),\n ]))\n );\n onRun$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(actions.runCheck),\n tap(async () => {\n if (Capacitor.getPlatform() !== 'web') {\n // Migrate from e.g. 1.2.x to 1.3.x\n const binaryInfo = await AppUpdate.getAppUpdateInfo()\n const binaryVersionGroup = (Capacitor.getPlatform() === 'android' ? binaryInfo.currentVersionCode : binaryInfo.currentVersionName).substring(0, 3);\n const config = await getConfig();\n const channelVersionGroup = config.channel!.split('-')[1].substring(0, 3); // e.g. \"1.4\"\n const channelType = config.channel!.split('-')[0];\n captureMessage(\"[UPD] Changed chanel to `${channelType}-${binaryVersionGroup}.x`\");\n if (binaryVersionGroup != channelVersionGroup) {\n await setConfig({\n channel: `${channelType}-${binaryVersionGroup}.x`\n });\n }\n // End migrate from e.g. 1.2.x to 1.3.x\n }\n }),\n exhaustMap((action) => from(sync()).pipe(\n map((syncResult: SyncResult) => {\n if (syncResult.activeApplicationPathChanged) {\n if (action.forceWaitForUpdate) {\n reload();\n }\n return actions.anUpdateIsReady({});\n } else {\n return actions.noUpdateWasFound({ startUpdateAgainAfterTimeout: !action.forceWaitForUpdate });\n }\n }),\n catchError((err) => {\n if (err.message !== 'Not implemented for web only') {\n captureMessage(\"[UPD] Handled: \" + err.message);\n }\n return err.message === 'Not implemented for web only' ? of(actions.notAvailableOnWeb({})) : of(actions.checkFailed({ startUpdateAgainAfterTimeout: !action.forceWaitForUpdate }))\n })\n )),\n ));\n\n constructor(\n private readonly actions$: Actions,\n ) { }\n\n whenAndUpdateIsReady$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(actions.anUpdateIsReady),\n mergeMap(() => [\n hasBeenDownloaded({}),\n ]))\n );\n\n whenCheckHasFailed$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(actions.checkFailed),\n delay(30000),\n mergeMap((action) => !action.startUpdateAgainAfterTimeout ? [] : [\n actions.runCheck({}),\n ]))\n );\n\n whenNoUpdateWasFound$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(actions.noUpdateWasFound),\n delay(120000),\n mergeMap((action) => !action.startUpdateAgainAfterTimeout ? [] : [\n actions.runCheck({}),\n ]))\n );\n}\n\n","import { StateI } from \"./upd-check.state\";\n\nexport const initialState: StateI = {\n forceWaitForUpdate: false,\n lastCheck: null,\n showError: false,\n};\n","\nimport * as actions from './upd-check.actions';\nimport { createFeature, createReducer, on } from '@ngrx/store';\nimport { StateI } from './upd-check.state';\nimport { initialState } from './upd-check.initial';\nimport { DateTime } from 'luxon';\n \nexport default createFeature({\n name: 'spxUpdCheck',\n reducer: createReducer(\n initialState,\n on(actions.anUpdateIsReady, (state: StateI): StateI => {\n return {\n ...state,\n lastCheck: DateTime.now().toISO(),\n showError: false,\n };\n }),\n on(actions.clearError, (state: StateI): StateI => {\n return {\n ...state,\n showError: false,\n };\n }),\n on(actions.checkFailed, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n showError: true,\n };\n }),\n on(actions.noUpdateWasFound, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n lastCheck: DateTime.now().toISO(),\n showError: false,\n };\n }),\n on(actions.runCheck, (state: StateI, { forceWaitForUpdate }): StateI => {\n return {\n ...state,\n forceWaitForUpdate: forceWaitForUpdate ? true : state.forceWaitForUpdate\n };\n }),\n on(actions.notAvailableOnWeb, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false\n };\n }),\n ),\n});\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Observable } from 'rxjs';\nimport { mergeMap } from 'rxjs/operators';\nimport { Injectable } from '@angular/core';\nimport * as actions from './upd-pending.actions';\nimport { reload } from '@capacitor/live-updates';\n\n@Injectable()\nexport class Effects {\n\n constructor(\n private readonly actions$: Actions,\n ) { }\n\n whenAccepted$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(actions.acceptUpdate),\n mergeMap(() => {\n reload();\n return []; \n })) as any\n );\n}\n\n","import { StateI } from \"./upd-pending.state\";\n\nexport const initialState: StateI = {\n showLiveUpdateReady: false,\n updateIsDownloadedAndPending: false,\n};\n","\nimport * as actions from './upd-pending.actions';\nimport { createReducer, on, createFeature } from '@ngrx/store';\nimport { StateI } from './upd-pending.state';\nimport { initialState } from './upd-pending.initial';\n\nexport default createFeature({\n name: 'spxUpdPending',\n reducer: createReducer(\n initialState,\n on(actions.hasBeenDownloaded, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: true,\n updateIsDownloadedAndPending: true,\n };\n }),\n on(actions.hasBeenInstalled, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: false,\n updateIsDownloadedAndPending: false,\n };\n }),\n on(actions.postpone, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: false,\n };\n }),\n on(actions.postponeExpired, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: true,\n };\n }),\n ),\n});\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["all","actions.initialize","actions.runCheck","actions.anUpdateIsReady","actions.noUpdateWasFound","actions.notAvailableOnWeb","actions.checkFailed","i1","Effects","initialState","actions.clearError","actions.acceptUpdate","actions.hasBeenDownloaded","actions.hasBeenInstalled","actions.postpone","actions.postponeExpired"],"mappings":"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"}