@softpak/components 21.3.6 → 21.3.7
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.
|
@@ -21,7 +21,7 @@ import { Actions, createEffect, ofType } from '@ngrx/effects';
|
|
|
21
21
|
import { LiveUpdate } from '@capawesome/capacitor-live-update';
|
|
22
22
|
import { spxToasterActions, SpxToasterAutoCloseSpeedEnum } from '@softpak/components/spx-toaster';
|
|
23
23
|
import { timer, of, concat, from } from 'rxjs';
|
|
24
|
-
import { mergeMap, switchMap, map, exhaustMap, catchError,
|
|
24
|
+
import { mergeMap, switchMap, map, exhaustMap, catchError, tap } from 'rxjs/operators';
|
|
25
25
|
import { Capacitor } from '@capacitor/core';
|
|
26
26
|
import { captureMessage } from '@sentry/angular';
|
|
27
27
|
|
|
@@ -459,7 +459,7 @@ let Effects$1 = class Effects {
|
|
|
459
459
|
constructor() {
|
|
460
460
|
this.actions$ = inject(Actions);
|
|
461
461
|
this.translateService = inject(TranslateService);
|
|
462
|
-
this.nextCheckDelayMs =
|
|
462
|
+
this.nextCheckDelayMs = updateCheckInitialDelayMs + updateCheckDelayStepMs;
|
|
463
463
|
this.afterInitialize$ = createEffect(() => this.actions$.pipe(ofType(spxUpdateCheckActions.initialize), mergeMap(() => [
|
|
464
464
|
spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: updateCheckInitialDelayMs }),
|
|
465
465
|
])));
|
|
@@ -513,7 +513,7 @@ let Effects$1 = class Effects {
|
|
|
513
513
|
captureMessage(`[UPD] Reload failed: ${errorReason}`);
|
|
514
514
|
return of(spxUpdateCheckActions.checkFailed({
|
|
515
515
|
errorReason,
|
|
516
|
-
startUpdateAgainAfterTimeout:
|
|
516
|
+
startUpdateAgainAfterTimeout: !action.forceWaitForUpdate,
|
|
517
517
|
}));
|
|
518
518
|
})));
|
|
519
519
|
}
|
|
@@ -530,7 +530,7 @@ let Effects$1 = class Effects {
|
|
|
530
530
|
captureMessage(`[UPD] Handled: ${errorReason}`);
|
|
531
531
|
return of(spxUpdateCheckActions.checkFailed({
|
|
532
532
|
errorReason,
|
|
533
|
-
startUpdateAgainAfterTimeout:
|
|
533
|
+
startUpdateAgainAfterTimeout: !action.forceWaitForUpdate,
|
|
534
534
|
}));
|
|
535
535
|
})));
|
|
536
536
|
})));
|
|
@@ -542,9 +542,16 @@ let Effects$1 = class Effects {
|
|
|
542
542
|
spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),
|
|
543
543
|
];
|
|
544
544
|
})));
|
|
545
|
-
this.whenCheckHasFailed$ = createEffect(() => this.actions$.pipe(ofType(spxUpdateCheckActions.checkFailed),
|
|
546
|
-
|
|
547
|
-
|
|
545
|
+
this.whenCheckHasFailed$ = createEffect(() => this.actions$.pipe(ofType(spxUpdateCheckActions.checkFailed), mergeMap((action) => {
|
|
546
|
+
if (!action.startUpdateAgainAfterTimeout) {
|
|
547
|
+
return [];
|
|
548
|
+
}
|
|
549
|
+
const delayMs = updateCheckMinimumDelayMs;
|
|
550
|
+
this.nextCheckDelayMs = delayMs + updateCheckDelayStepMs;
|
|
551
|
+
return [
|
|
552
|
+
spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),
|
|
553
|
+
];
|
|
554
|
+
})));
|
|
548
555
|
this.whenCheckHasFailedShowError$ = createEffect(() => this.actions$.pipe(ofType(spxUpdateCheckActions.checkFailed), map((action) => spxToasterActions.createError({
|
|
549
556
|
autoClose: SpxToasterAutoCloseSpeedEnum.DEFAULT,
|
|
550
557
|
messageText: action.errorReason
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"softpak-components-spx-update.mjs","sources":["../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.actions.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.state.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.initial.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.reducer.ts","../../../../projects/softpak/components/spx-update/spx-update-page.component.ts","../../../../projects/softpak/components/spx-update/spx-update-page.component.html","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.actions.ts","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.initial.ts","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.reducer.ts","../../../../projects/softpak/components/spx-update/spx-update-pending.component.ts","../../../../projects/softpak/components/spx-update/spx-update-pending.component.html","../../../../projects/softpak/components/spx-update/spx-update-url.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.effects.ts","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.effects.ts","../../../../projects/softpak/components/spx-update/softpak-components-spx-update.ts"],"sourcesContent":["import { createActionGroup, emptyProps, props } from '@ngrx/store';\n\nexport const spxUpdateCheckActions = createActionGroup({\n source: 'SpxUpdateCheck',\n events: {\n anUpdateIsReady: emptyProps(),\n checkFailed: props<{ errorReason?: string; startUpdateAgainAfterTimeout?: boolean; }>(),\n clearError: emptyProps(),\n initialize: emptyProps(),\n noUpdateWasFound: props<{ startUpdateAgainAfterTimeout?: boolean; }>(),\n notAvailableOnWeb: emptyProps(),\n reset: emptyProps(),\n reloadStarted: emptyProps(),\n runCheck: props<{ forceWaitForUpdate?: boolean }>(),\n runCheckAfterTimeout: props<{ timeoutInMs: number }>(),\n syncStarted: emptyProps(),\n },\n});\n","export enum SpxUpdateCheckStatusEnum {\n failed = 'failed',\n idle = 'idle',\n notAvailableOnWeb = 'notAvailableOnWeb',\n preparing = 'preparing',\n reloading = 'reloading',\n syncing = 'syncing',\n upToDate = 'upToDate',\n updateReady = 'updateReady',\n}\n\nexport interface StateI {\n currentCycleTimeInMs: number;\n forceWaitForUpdate: boolean;\n lastErrorReason: string | null;\n lastCheck: string | null;\n showError: boolean;\n status: SpxUpdateCheckStatusEnum;\n}\n","import { SpxUpdateCheckStatusEnum, StateI } from \"./spx-update-check.state\";\n\nconst defaultCycleTimeInMs = 9999;\n\nexport const initialState: StateI = {\n currentCycleTimeInMs: defaultCycleTimeInMs,\n forceWaitForUpdate: false,\n lastErrorReason: null,\n lastCheck: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.idle,\n};\n","import { createFeature, createReducer, on } from '@ngrx/store';\n\nimport { DateTime } from 'luxon';\nimport { SpxUpdateCheckStatusEnum, StateI } from './spx-update-check.state';\nimport { initialState } from './spx-update-check.initial';\nimport { spxUpdateCheckActions } from './spx-update-check.actions';\n\nexport default createFeature({\n name: 'spxUpdateCheck',\n reducer: createReducer(\n initialState,\n on(spxUpdateCheckActions.anUpdateIsReady, (state: StateI): StateI => {\n return {\n ...state,\n currentCycleTimeInMs: 2 * 60 * 1000,\n lastCheck: DateTime.now().toISO(),\n lastErrorReason: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.updateReady,\n };\n }),\n on(spxUpdateCheckActions.clearError, (state: StateI): StateI => {\n return {\n ...state,\n lastErrorReason: null,\n showError: false,\n };\n }),\n on(spxUpdateCheckActions.checkFailed, (state: StateI, { errorReason }): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n lastErrorReason: errorReason || null,\n showError: true,\n status: SpxUpdateCheckStatusEnum.failed,\n };\n }),\n on(spxUpdateCheckActions.noUpdateWasFound, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n lastCheck: DateTime.now().toISO(),\n lastErrorReason: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.upToDate,\n };\n }),\n on(spxUpdateCheckActions.runCheckAfterTimeout, (state: StateI, { timeoutInMs }): StateI => {\n return {\n ...state,\n currentCycleTimeInMs: timeoutInMs,\n };\n }),\n on(spxUpdateCheckActions.runCheck, (state: StateI, { forceWaitForUpdate }): StateI => {\n return {\n ...state,\n forceWaitForUpdate: typeof forceWaitForUpdate === 'boolean' ? forceWaitForUpdate : state.forceWaitForUpdate,\n lastErrorReason: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.preparing,\n };\n }),\n on(spxUpdateCheckActions.syncStarted, (state: StateI): StateI => {\n return {\n ...state,\n status: SpxUpdateCheckStatusEnum.syncing,\n };\n }),\n on(spxUpdateCheckActions.reloadStarted, (state: StateI): StateI => {\n return {\n ...state,\n status: SpxUpdateCheckStatusEnum.reloading,\n };\n }),\n on(spxUpdateCheckActions.notAvailableOnWeb, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n status: SpxUpdateCheckStatusEnum.notAvailableOnWeb,\n };\n }),\n on(spxUpdateCheckActions.reset, (): StateI => {\n return {\n ...initialState,\n };\n }),\n ),\n});\n","import { IonContent, IonHeader, IonTitle, IonToolbar, NavController } from '@ionic/angular/standalone';\nimport {\n spxTextCheckingForUpdates,\n spxTextUpdateErrorReason,\n spxTextUpdateAppVersion,\n spxTextUpdateBinaryVersionGroup,\n spxTextUpdateBuildVersion,\n spxTextUpdateCurrentVersionNumber,\n spxTextUpdateLiveBundle,\n spxTextUpdateLiveChannel,\n spxTextUpdateNextVersionNumber,\n spxTextUpdateStatus,\n spxTextUpdateStatusCompleted,\n spxTextUpdateStatusFailed,\n spxTextUpdateStatusPreparing,\n spxTextUpdateStatusReloading,\n spxTextUpdateStatusSyncing,\n spxTextUpdateStatusUpdateReady,\n spxTextUpdateStatusUpToDate,\n spxTextUpdateStatusWebNotAvailable,\n spxTextUpdateVersionInfo\n} from '@softpak/components/spx-translate';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { App } from '@capacitor/app';\nimport { Component, computed, effect, signal } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { faCircleCheck, faCircleExclamation } from '@fortawesome/free-solid-svg-icons';\nimport { SpxAppChannelTypeEnum } from '@softpak/components/spx-app-configuration';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { getBinaryVersionGroup } from '@softpak/components/spx-helpers';\nimport { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';\nimport { Store } from '@ngrx/store';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { spxUpdateCheckActions } from './store/spx-update-check/spx-update-check.actions';\nimport { SpxUpdateCheckStatusEnum } from './store/spx-update-check/spx-update-check.state';\nimport { default as updCheck } from './store/spx-update-check/spx-update-check.reducer';\n\n@Component({\n selector: 'spx-update-page',\n imports: [\n IonContent,\n IonHeader,\n IonToolbar,\n IonTitle,\n FaIconComponent,\n SpxCapitalizePipe,\n TranslatePipe,\n ],\n templateUrl: `./spx-update-page.component.html`,\n styleUrls: [`./spx-update-page.component.scss`],\n standalone: true,\n})\nexport class SpxUpdatePageComponent {\n private static readonly SUCCESS_CLOSE_DELAY_MS = 1000;\n\n appVersion = signal<string>('-');\n binaryVersionGroup = signal<string>('-');\n buildVersion = signal<string>('-');\n currentVersionNumber = signal<string>('-');\n lastErrorReason = this.appStore.selectSignal(updCheck.selectLastErrorReason);\n hasStarted = signal<boolean>(false);\n hasNavigatedAway = signal<boolean>(false);\n liveBundle = signal<string>('-');\n liveUpdateChannel = signal<string>('-');\n nextVersionNumber = signal<string>('-');\n status = this.appStore.selectSignal(updCheck.selectStatus);\n private closeTimerId: ReturnType<typeof setTimeout> | null = null;\n faCircleCheck = faCircleCheck;\n faCircleExclamation = faCircleExclamation;\n spxTextCheckingForUpdates = spxTextCheckingForUpdates;\n spxTextUpdateErrorReason = spxTextUpdateErrorReason;\n spxTextUpdateAppVersion = spxTextUpdateAppVersion;\n spxTextUpdateBinaryVersionGroup = spxTextUpdateBinaryVersionGroup;\n spxTextUpdateBuildVersion = spxTextUpdateBuildVersion;\n spxTextUpdateCurrentVersionNumber = spxTextUpdateCurrentVersionNumber;\n spxTextUpdateLiveBundle = spxTextUpdateLiveBundle;\n spxTextUpdateLiveChannel = spxTextUpdateLiveChannel;\n spxTextUpdateNextVersionNumber = spxTextUpdateNextVersionNumber;\n spxTextUpdateStatus = spxTextUpdateStatus;\n spxTextUpdateVersionInfo = spxTextUpdateVersionInfo;\n isRunningStatus = computed(() => {\n const status = this.status();\n return status === SpxUpdateCheckStatusEnum.idle ||\n status === SpxUpdateCheckStatusEnum.preparing ||\n status === SpxUpdateCheckStatusEnum.syncing ||\n status === SpxUpdateCheckStatusEnum.reloading;\n });\n isSuccessStatus = computed(() => {\n const status = this.status();\n return status === SpxUpdateCheckStatusEnum.upToDate ||\n status === SpxUpdateCheckStatusEnum.updateReady;\n });\n isErrorStatus = computed(() => {\n const status = this.status();\n return status === SpxUpdateCheckStatusEnum.failed ||\n status === SpxUpdateCheckStatusEnum.notAvailableOnWeb;\n });\n statusText = computed(() => {\n switch (this.status()) {\n case SpxUpdateCheckStatusEnum.idle:\n return spxTextUpdateStatusPreparing;\n case SpxUpdateCheckStatusEnum.preparing:\n return spxTextUpdateStatusPreparing;\n case SpxUpdateCheckStatusEnum.syncing:\n return spxTextUpdateStatusSyncing;\n case SpxUpdateCheckStatusEnum.reloading:\n return spxTextUpdateStatusReloading;\n case SpxUpdateCheckStatusEnum.upToDate:\n return spxTextUpdateStatusUpToDate;\n case SpxUpdateCheckStatusEnum.updateReady:\n return spxTextUpdateStatusUpdateReady;\n case SpxUpdateCheckStatusEnum.failed:\n return spxTextUpdateStatusFailed;\n case SpxUpdateCheckStatusEnum.notAvailableOnWeb:\n return spxTextUpdateStatusWebNotAvailable;\n default:\n return spxTextUpdateStatusCompleted;\n }\n });\n\n ionViewWillEnter() {\n this.startUpdateCheckFlow();\n }\n\n ionViewWillLeave() {\n this.hasStarted.set(false);\n this.clearScheduledClose();\n }\n\n ngOnDestroy() {\n this.clearScheduledClose();\n }\n\n constructor(\n private readonly appStore: Store,\n private readonly activatedRoute: ActivatedRoute,\n private readonly navController: NavController,\n ) {\n effect(() => {\n this.status();\n this.refreshStorageVersionInfo();\n });\n\n effect(() => {\n const status = this.status();\n if (!this.hasStarted() || this.hasNavigatedAway()) {\n return;\n }\n if (!this.shouldCloseUpdatePage(status)) {\n this.clearScheduledClose();\n return;\n }\n const targetUrl = this.activatedRoute.snapshot.data['url'];\n if (targetUrl === undefined) {\n console.error('configure data property \\'url\\' in route for update page');\n return;\n }\n\n const closeDelayMs = this.getCloseDelayMs(status);\n if (closeDelayMs === 0) {\n this.clearScheduledClose();\n this.navigateAway(targetUrl);\n return;\n }\n\n if (this.closeTimerId !== null) {\n return;\n }\n\n this.closeTimerId = setTimeout(() => {\n this.closeTimerId = null;\n this.navigateAway(targetUrl);\n }, closeDelayMs);\n });\n }\n\n private startUpdateCheckFlow(): void {\n this.hasStarted.set(false);\n this.hasNavigatedAway.set(false);\n this.clearScheduledClose();\n this.appStore.dispatch(spxUpdateCheckActions.reset());\n void this.loadVersionInfo();\n this.appStore.dispatch(spxUpdateCheckActions.runCheck({ forceWaitForUpdate: true }));\n this.hasStarted.set(true);\n }\n\n private shouldCloseUpdatePage(status: SpxUpdateCheckStatusEnum): boolean {\n return status === SpxUpdateCheckStatusEnum.upToDate ||\n status === SpxUpdateCheckStatusEnum.failed ||\n status === SpxUpdateCheckStatusEnum.notAvailableOnWeb ||\n status === SpxUpdateCheckStatusEnum.updateReady;\n }\n\n private getCloseDelayMs(status: SpxUpdateCheckStatusEnum): number {\n if (status === SpxUpdateCheckStatusEnum.upToDate || status === SpxUpdateCheckStatusEnum.updateReady) {\n return SpxUpdatePageComponent.SUCCESS_CLOSE_DELAY_MS;\n }\n return 0;\n }\n\n private clearScheduledClose(): void {\n if (this.closeTimerId === null) {\n return;\n }\n clearTimeout(this.closeTimerId);\n this.closeTimerId = null;\n }\n\n private navigateAway(targetUrl: string): void {\n if (this.hasNavigatedAway()) {\n return;\n }\n this.hasNavigatedAway.set(true);\n this.navController.navigateRoot(targetUrl);\n }\n\n private async loadVersionInfo(): Promise<void> {\n const appInfo = await App.getInfo();\n const appVersion = appInfo.version || '-';\n this.appVersion.set(appVersion);\n this.buildVersion.set(appInfo.build || '-');\n\n try {\n const computedBinaryVersionGroup = `${getBinaryVersionGroup(appVersion)}.x`;\n const storedBinaryVersionGroup = SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup);\n this.binaryVersionGroup.set(storedBinaryVersionGroup || computedBinaryVersionGroup);\n\n const storedLiveUpdateChannel = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel);\n const channelType = SpxStorage.getSetting(SpxStorageKeyEnum.channelType) || SpxAppChannelTypeEnum.production;\n this.liveUpdateChannel.set(storedLiveUpdateChannel || `${channelType}-${computedBinaryVersionGroup}`);\n } catch {\n this.binaryVersionGroup.set(SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup) || '-');\n this.liveUpdateChannel.set(SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel) || '-');\n }\n\n this.refreshStorageVersionInfo();\n }\n\n private refreshStorageVersionInfo(): void {\n const storedBinaryVersionGroup = SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup);\n const storedCurrentVersionNumber = SpxStorage.getSetting(SpxStorageKeyEnum.capAwesomeVersionNumber);\n const storedLiveUpdateChannel = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel);\n const storedLiveBundle = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdate);\n const storedNextVersionNumber = SpxStorage.getSetting(SpxStorageKeyEnum.capAwesomeNextVersionNumber);\n\n if (storedBinaryVersionGroup) {\n this.binaryVersionGroup.set(storedBinaryVersionGroup);\n }\n this.currentVersionNumber.set(storedCurrentVersionNumber || '-');\n if (storedLiveUpdateChannel) {\n this.liveUpdateChannel.set(storedLiveUpdateChannel);\n }\n this.liveBundle.set(storedLiveBundle || '-');\n this.nextVersionNumber.set(storedNextVersionNumber || '-');\n }\n}\n","<ion-header>\n <ion-toolbar>\n <ion-title>\n {{ spxTextCheckingForUpdates | translate | capitalize }}\n </ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding update-page\">\n <div class=\"update-shell mx-auto grid max-w-[40rem] gap-4 py-2 pb-4\">\n <section\n class=\"status-card grid gap-2 rounded-2xl border border-[color:var(--spx-update-border-color)] bg-[var(--spx-update-surface-color)] p-4\"\n [attr.data-status]=\"status()\">\n <div\n class=\"status-visual\"\n [class.is-running]=\"isRunningStatus()\"\n [class.is-success]=\"isSuccessStatus()\"\n [class.is-error]=\"isErrorStatus()\"\n aria-hidden=\"true\">\n <span class=\"status-orbit status-orbit--outer\"></span>\n <span class=\"status-orbit status-orbit--inner\"></span>\n <span class=\"status-core\"></span>\n\n @if (isSuccessStatus()) {\n <fa-icon class=\"status-icon\" [icon]=\"faCircleCheck\"></fa-icon>\n }\n @if (isErrorStatus()) {\n <fa-icon class=\"status-icon\" [icon]=\"faCircleExclamation\"></fa-icon>\n }\n </div>\n\n <p class=\"status-label m-0 text-[0.76rem] font-bold uppercase tracking-[0.08em] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateStatus | translate | capitalize }}</p>\n <p class=\"status-value m-[0.35rem_0_0] text-[1.15rem] font-bold text-[color:var(--spx-update-text-color)]\">{{ statusText() | translate | capitalize }}</p>\n\n @if (lastErrorReason()) {\n <p class=\"status-error mt-[0.85rem] leading-[1.35] text-[color:var(--ion-color-danger,#eb445a)]\">\n <strong>{{ spxTextUpdateErrorReason | translate | capitalize }}:</strong>\n {{ lastErrorReason() }}\n </p>\n }\n </section>\n\n <section class=\"details-card rounded-2xl border border-[color:var(--spx-update-border-color)] bg-[var(--spx-update-surface-color)] p-4\">\n <h2 class=\"m-0 text-[0.95rem] font-bold text-[color:var(--spx-update-text-color)]\">{{ spxTextUpdateVersionInfo | translate | capitalize }}</h2>\n\n <dl class=\"details-grid mt-[0.9rem] grid gap-[0.65rem]\">\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateAppVersion | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ appVersion() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateBuildVersion | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ buildVersion() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateBinaryVersionGroup | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ binaryVersionGroup() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateLiveChannel | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ liveUpdateChannel() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateCurrentVersionNumber | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ currentVersionNumber() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateNextVersionNumber | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ nextVersionNumber() }}</dd>\n </div>\n <div class=\"detail-row last:border-b-0 last:pb-0 flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateLiveBundle | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ liveBundle() }}</dd>\n </div>\n </dl>\n </section>\n </div>\n</ion-content>\n","import { createActionGroup, emptyProps } from '@ngrx/store';\n\nexport const SpxUpdatePendingActions = createActionGroup({\n source: 'SpxUpdatePending',\n events: {\n AcceptUpdate: emptyProps(),\n HasBeenDownloaded: emptyProps(),\n HasBeenInstalled: emptyProps(),\n Postpone: emptyProps(),\n PostponeExpired: emptyProps(),\n },\n});\n","import { StateI } from \"./spx-update-pending.state\";\n\nexport const initialState: StateI = {\n showLiveUpdateReady: false,\n updateIsDownloadedAndPending: false,\n};\n","import { createFeature, createReducer, on } from '@ngrx/store';\n\nimport { SpxUpdatePendingActions } from './spx-update-pending.actions';\nimport { StateI } from './spx-update-pending.state';\nimport { initialState } from './spx-update-pending.initial';\n\nexport default createFeature({\n name: 'spxUpdatePending',\n reducer: createReducer(\n initialState,\n on(SpxUpdatePendingActions.hasBeenDownloaded, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: true,\n updateIsDownloadedAndPending: true,\n };\n }),\n on(SpxUpdatePendingActions.hasBeenInstalled, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: false,\n updateIsDownloadedAndPending: false,\n };\n }),\n on(SpxUpdatePendingActions.postpone, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: false,\n };\n }),\n on(SpxUpdatePendingActions.postponeExpired, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: true,\n };\n }),\n ),\n});\n","import { ChangeDetectionStrategy, Component, HostBinding, signal } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { SpxSeverityEnum, unsubscribeSubscriptions } from '@softpak/components/spx-helpers';\nimport { spxTextOpenAppStore, spxTextPatchAvailable, spxTextReadyToBeInstalled, spxTextUpdate, spxTextUpdateAvailable } from '@softpak/components/spx-translate';\n\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { SpxUpdatePendingActions } from './public-api';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { default as updPending } from './store/spx-update-pending/spx-update-pending.reducer';\n\n@Component({\n selector: 'spx-update-pending',\n imports: [\n SpxButtonComponent,\n SpxCapitalizePipe,\n TranslatePipe,\n ],\n templateUrl: `./spx-update-pending.component.html`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpxUpdatePendingComponent {\n @HostBinding('style') baseStyle?: SafeStyle;\n availableStoreVersion = signal<undefined | string>(undefined);\n currentStoreVersion = signal<undefined | string>(undefined);\n severitySuccess = SpxSeverityEnum.success;\n showLiveUpdateReady = signal<boolean>(false);\n spxTextUpdate = spxTextUpdate;\n spxTextReadyToBeInstalled = spxTextReadyToBeInstalled;\n spxTextPatchAvailable = spxTextPatchAvailable;\n spxTextUpdateAvailable = spxTextUpdateAvailable;\n spxTextOpenAppStore = spxTextOpenAppStore;\n\n private subscriptions: {\n updPending?: Subscription;\n } = {};\n\n ngOnInit() {\n this.subscriptions.updPending = this.appStore.select(updPending.selectShowLiveUpdateReady).subscribe(showLiveUpdateReady => {\n this.showLiveUpdateReady.set(showLiveUpdateReady);\n if (showLiveUpdateReady) {\n this.baseStyle = this.sanitizer.bypassSecurityTrustStyle('display: block;');\n } else {\n this.baseStyle = this.sanitizer.bypassSecurityTrustStyle('display: none;');\n }\n });\n }\n\n ngOnDestroy() {\n unsubscribeSubscriptions(this.subscriptions);\n }\n\n constructor(\n private readonly appStore: Store,\n private sanitizer: DomSanitizer,\n ) {}\n\n onUpdate(): void {\n this.appStore.dispatch(SpxUpdatePendingActions.acceptUpdate());\n }\n}\n","@if (showLiveUpdateReady()) {\n<div class=\"bg-zinc-700 text-black p-3 rounded flex gap-3 mx-auto max-w-lg items-center\">\n <div class=\"grow\">\n <p\n class=\"text-xl font-extrabold bg-clip-text text-transparent bg-[linear-gradient(to_right,theme(colors.green.300),theme(colors.green.100),theme(colors.sky.400),theme(colors.yellow.200),theme(colors.sky.400),theme(colors.green.100),theme(colors.green.300))] bg-[length:200%_auto] animate-gradient\">\n {{ spxTextPatchAvailable | translate | capitalize }}</p>\n <div class=\"text-sm text-zinc-300\">{{ spxTextReadyToBeInstalled | translate | capitalize }}</div>\n </div>\n <spx-button [spxSeverity]=\"severitySuccess\" (spxClick)=\"onUpdate()\">{{ spxTextUpdate | translate | capitalize\n }}</spx-button>\n</div>\n}","export const spxUpdateUrl = '';","import { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Injectable, inject } from '@angular/core';\nimport { LiveUpdate, SyncResult } from '@capawesome/capacitor-live-update';\nimport { SpxToasterAutoCloseSpeedEnum, spxToasterActions } from '@softpak/components/spx-toaster';\nimport { Observable, concat, from, of, timer } from 'rxjs';\nimport { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';\nimport { catchError, delay, exhaustMap, map, mergeMap, switchMap } from 'rxjs/operators';\n\nimport { App } from '@capacitor/app';\nimport { Capacitor } from '@capacitor/core';\nimport { SpxAppChannelTypeEnum } from '@softpak/components/spx-app-configuration';\nimport { getBinaryVersionGroup } from '@softpak/components/spx-helpers';\nimport { SpxUpdatePendingActions } from '../spx-update-pending/spx-update-pending.actions';\nimport { TranslateService } from '@ngx-translate/core';\nimport { captureMessage } from '@sentry/angular';\nimport { spxTextLiveUpdateCheckFailed, spxTextLiveUpdateCheckFailedWithReason } from '@softpak/components/spx-translate';\nimport { spxUpdateCheckActions } from './spx-update-check.actions';\n\nconst capAwesomeVersionNumberPropertyKey = 'versionnumber';\nconst updateCheckInitialDelayMs = 5 * 60 * 1000;\nconst updateCheckMinimumDelayMs = 2 * 60 * 1000;\nconst updateCheckMaximumDelayMs = 20 * 60 * 1000;\nconst updateCheckDelayStepMs = 2 * 60 * 1000;\ntype BundleVersionNumberMap = Record<string, string>;\n\n@Injectable()\nexport class Effects {\n private readonly actions$ = inject(Actions);\n private readonly translateService = inject(TranslateService);\n private nextCheckDelayMs = updateCheckMaximumDelayMs;\n\n afterInitialize$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.initialize),\n mergeMap(() => [\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: updateCheckInitialDelayMs }),\n ]))\n );\n\n runCheckAfterTimeout$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.runCheckAfterTimeout),\n switchMap((action) => timer(action.timeoutInMs).pipe(\n map(() => spxUpdateCheckActions.runCheck({ forceWaitForUpdate: false })),\n )),\n ));\n\n onRun$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.runCheck),\n exhaustMap((action) => {\n if (Capacitor.getPlatform() === 'web') {\n return of(spxUpdateCheckActions.notAvailableOnWeb());\n }\n return concat(\n of(spxUpdateCheckActions.syncStarted()),\n from(App.getInfo()).pipe(\n mergeMap((binaryInfo) => {\n // Migrate from e.g. 1.2.x to 1.3.x\n const binaryVersionGroup = getBinaryVersionGroup(binaryInfo.version);\n const channelType = SpxStorage.getSetting(SpxStorageKeyEnum.channelType);\n\n if (SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup)) {\n SpxStorage.setSetting(SpxStorageKeyEnum.lastBinaryVersionGroup, SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup)!);\n }\n\n SpxStorage.setSetting(SpxStorageKeyEnum.binaryVersionGroup, `${binaryVersionGroup}.x`);\n SpxStorage.setSetting(SpxStorageKeyEnum.liveUpdateChannel, `${channelType ? channelType : SpxAppChannelTypeEnum.production}-${binaryVersionGroup}.x`);\n // End migrate from e.g. 1.2.x to 1.3.x\n\n const channel = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel)!;\n return from(Promise.all([\n LiveUpdate.getCurrentBundle(),\n LiveUpdate.fetchLatestBundle({ channel }),\n LiveUpdate.sync({ channel }),\n ]));\n }),\n mergeMap(([currentBundleResult, latestBundleResult, syncResult]: [\n Awaited<ReturnType<typeof LiveUpdate.getCurrentBundle>>,\n Awaited<ReturnType<typeof LiveUpdate.fetchLatestBundle>>,\n SyncResult,\n ]) => {\n const capAwesomeVersionNumber = latestBundleResult.customProperties?.[capAwesomeVersionNumberPropertyKey];\n const bundleVersionNumbers = this.getBundleVersionNumbers();\n\n if (latestBundleResult.bundleId && capAwesomeVersionNumber) {\n bundleVersionNumbers[latestBundleResult.bundleId] = capAwesomeVersionNumber;\n this.setBundleVersionNumbers(bundleVersionNumbers);\n }\n\n const previousBundleVersionNumber = this.getBundleVersionNumber(\n bundleVersionNumbers,\n currentBundleResult.bundleId,\n currentBundleResult.bundleId === latestBundleResult.bundleId ? capAwesomeVersionNumber : undefined,\n );\n const nextBundleVersionNumber = this.getBundleVersionNumber(\n bundleVersionNumbers,\n syncResult.nextBundleId,\n syncResult.nextBundleId === latestBundleResult.bundleId ? capAwesomeVersionNumber : undefined,\n );\n\n if (previousBundleVersionNumber) {\n SpxStorage.setSetting(SpxStorageKeyEnum.capAwesomeVersionNumber, previousBundleVersionNumber);\n } else {\n SpxStorage.clearSetting(SpxStorageKeyEnum.capAwesomeVersionNumber);\n }\n\n if (nextBundleVersionNumber) {\n SpxStorage.setSetting(SpxStorageKeyEnum.capAwesomeNextVersionNumber, nextBundleVersionNumber);\n } else {\n SpxStorage.clearSetting(SpxStorageKeyEnum.capAwesomeNextVersionNumber);\n }\n\n if (syncResult.nextBundleId) {\n SpxStorage.setSetting(SpxStorageKeyEnum.liveUpdate, syncResult.nextBundleId as string);\n if (action.forceWaitForUpdate) {\n return concat(\n of(spxUpdateCheckActions.reloadStarted()),\n from(LiveUpdate.reload()).pipe(\n map(() => spxUpdateCheckActions.anUpdateIsReady()),\n catchError((err) => {\n const errorReason = this.getReadableErrorReason(err);\n captureMessage(`[UPD] Reload failed: ${errorReason}`);\n return of(spxUpdateCheckActions.checkFailed({\n errorReason,\n startUpdateAgainAfterTimeout: false,\n }));\n }),\n ),\n );\n }\n return of(spxUpdateCheckActions.anUpdateIsReady());\n } else {\n return of(spxUpdateCheckActions.noUpdateWasFound({ startUpdateAgainAfterTimeout: !action.forceWaitForUpdate }));\n }\n }),\n catchError((err) => {\n const errorReason = this.getReadableErrorReason(err);\n if (this.isSyncAlreadyInProgress(errorReason)) {\n return timer(1500).pipe(\n map(() => spxUpdateCheckActions.runCheck({ forceWaitForUpdate: !!action.forceWaitForUpdate })),\n );\n }\n captureMessage(`[UPD] Handled: ${errorReason}`);\n return of(spxUpdateCheckActions.checkFailed({\n errorReason,\n startUpdateAgainAfterTimeout: false,\n }));\n })\n )\n );\n }),\n ));\n\n whenAndUpdateIsReady$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.anUpdateIsReady),\n mergeMap(() => {\n const delayMs = updateCheckMinimumDelayMs;\n this.nextCheckDelayMs = delayMs + updateCheckDelayStepMs;\n\n return [\n SpxUpdatePendingActions.hasBeenDownloaded(),\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),\n ];\n }))\n );\n\n whenCheckHasFailed$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.checkFailed),\n delay(30000),\n mergeMap((action) => !action.startUpdateAgainAfterTimeout ? [] : [\n spxUpdateCheckActions.runCheck({ forceWaitForUpdate: false }),\n ]))\n );\n\n whenCheckHasFailedShowError$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.checkFailed),\n map((action) => spxToasterActions.createError({\n autoClose: SpxToasterAutoCloseSpeedEnum.DEFAULT,\n messageText: action.errorReason\n ? this.translateService.instant(spxTextLiveUpdateCheckFailedWithReason, { reason: action.errorReason })\n : this.translateService.instant(spxTextLiveUpdateCheckFailed),\n })),\n ));\n\n whenNoUpdateWasFound$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.noUpdateWasFound),\n mergeMap((action) => {\n if (!action.startUpdateAgainAfterTimeout) {\n return [];\n }\n\n const delayMs = this.nextCheckDelayMs;\n this.nextCheckDelayMs = Math.min(\n this.nextCheckDelayMs + updateCheckDelayStepMs,\n updateCheckMaximumDelayMs,\n );\n\n return [\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),\n ];\n }))\n );\n\n private getReadableErrorReason(err: unknown): string {\n if (err instanceof Error && err.message?.trim()) {\n return err.message.trim();\n }\n if (typeof err === 'string' && err.trim()) {\n return err.trim();\n }\n if (err && typeof err === 'object') {\n const withMessage = err as { message?: unknown };\n if (typeof withMessage.message === 'string' && withMessage.message.trim()) {\n return withMessage.message.trim();\n }\n try {\n const serialized = JSON.stringify(err);\n if (serialized && serialized !== '{}') {\n return serialized.length > 180 ? `${serialized.slice(0, 177)}...` : serialized;\n }\n } catch {\n // ignore serialization errors\n }\n }\n return '';\n }\n\n private isSyncAlreadyInProgress(errorReason: string): boolean {\n const normalized = errorReason.toLowerCase();\n return normalized.includes('sync is already in progress');\n }\n\n private getBundleVersionNumbers(): BundleVersionNumberMap {\n const serialized = SpxStorage.getSetting(SpxStorageKeyEnum.capAwesomeBundleVersionNumbers);\n if (!serialized) {\n return {};\n }\n try {\n const parsed = JSON.parse(serialized);\n return parsed && typeof parsed === 'object' ? parsed as BundleVersionNumberMap : {};\n } catch {\n return {};\n }\n }\n\n private setBundleVersionNumbers(bundleVersionNumbers: BundleVersionNumberMap): void {\n SpxStorage.setSetting(\n SpxStorageKeyEnum.capAwesomeBundleVersionNumbers,\n JSON.stringify(bundleVersionNumbers),\n );\n }\n\n private getBundleVersionNumber(\n bundleVersionNumbers: BundleVersionNumberMap,\n bundleId: string | null,\n fallback?: string,\n ): string | null {\n if (!bundleId) {\n return null;\n }\n return bundleVersionNumbers[bundleId] ?? fallback ?? null;\n }\n}\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\n\nimport { Injectable, inject } from '@angular/core';\nimport { LiveUpdate } from \"@capawesome/capacitor-live-update\";\nimport { SpxToasterAutoCloseSpeedEnum, spxToasterActions } from '@softpak/components/spx-toaster';\nimport { SpxUpdatePendingActions } from './spx-update-pending.actions';\nimport { Store } from '@ngrx/store';\nimport { TranslateService } from '@ngx-translate/core';\nimport { captureMessage } from '@sentry/angular';\nimport { spxTextLiveUpdateCheckFailed, spxTextLiveUpdateCheckFailedWithReason } from '@softpak/components/spx-translate';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class Effects {\n private readonly actions$ = inject(Actions);\n private readonly appStore = inject(Store);\n private readonly translateService = inject(TranslateService);\n\n whenAccepted$ = createEffect(() => this.actions$.pipe(\n ofType(SpxUpdatePendingActions.acceptUpdate),\n tap(() => {\n void LiveUpdate.reload().catch((err) => {\n const errorReason = this.getReadableErrorReason(err);\n captureMessage(`[UPD] Accept reload failed: ${errorReason}`);\n this.appStore.dispatch(spxToasterActions.createError({\n autoClose: SpxToasterAutoCloseSpeedEnum.DEFAULT,\n messageText: errorReason\n ? this.translateService.instant(spxTextLiveUpdateCheckFailedWithReason, { reason: errorReason })\n : this.translateService.instant(spxTextLiveUpdateCheckFailed),\n }));\n });\n }),\n ), { dispatch: false });\n\n private getReadableErrorReason(err: unknown): string {\n if (err instanceof Error && err.message?.trim()) {\n return err.message.trim();\n }\n if (typeof err === 'string' && err.trim()) {\n return err.trim();\n }\n if (err && typeof err === 'object') {\n const withMessage = err as { message?: unknown };\n if (typeof withMessage.message === 'string' && withMessage.message.trim()) {\n return withMessage.message.trim();\n }\n try {\n const serialized = JSON.stringify(err);\n if (serialized && serialized !== '{}') {\n return serialized.length > 180 ? `${serialized.slice(0, 177)}...` : serialized;\n }\n } catch {\n // ignore serialization errors\n }\n }\n return '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["initialState","i2","Effects"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"softpak-components-spx-update.mjs","sources":["../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.actions.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.state.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.initial.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.reducer.ts","../../../../projects/softpak/components/spx-update/spx-update-page.component.ts","../../../../projects/softpak/components/spx-update/spx-update-page.component.html","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.actions.ts","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.initial.ts","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.reducer.ts","../../../../projects/softpak/components/spx-update/spx-update-pending.component.ts","../../../../projects/softpak/components/spx-update/spx-update-pending.component.html","../../../../projects/softpak/components/spx-update/spx-update-url.ts","../../../../projects/softpak/components/spx-update/store/spx-update-check/spx-update-check.effects.ts","../../../../projects/softpak/components/spx-update/store/spx-update-pending/spx-update-pending.effects.ts","../../../../projects/softpak/components/spx-update/softpak-components-spx-update.ts"],"sourcesContent":["import { createActionGroup, emptyProps, props } from '@ngrx/store';\n\nexport const spxUpdateCheckActions = createActionGroup({\n source: 'SpxUpdateCheck',\n events: {\n anUpdateIsReady: emptyProps(),\n checkFailed: props<{ errorReason?: string; startUpdateAgainAfterTimeout?: boolean; }>(),\n clearError: emptyProps(),\n initialize: emptyProps(),\n noUpdateWasFound: props<{ startUpdateAgainAfterTimeout?: boolean; }>(),\n notAvailableOnWeb: emptyProps(),\n reset: emptyProps(),\n reloadStarted: emptyProps(),\n runCheck: props<{ forceWaitForUpdate?: boolean }>(),\n runCheckAfterTimeout: props<{ timeoutInMs: number }>(),\n syncStarted: emptyProps(),\n },\n});\n","export enum SpxUpdateCheckStatusEnum {\n failed = 'failed',\n idle = 'idle',\n notAvailableOnWeb = 'notAvailableOnWeb',\n preparing = 'preparing',\n reloading = 'reloading',\n syncing = 'syncing',\n upToDate = 'upToDate',\n updateReady = 'updateReady',\n}\n\nexport interface StateI {\n currentCycleTimeInMs: number;\n forceWaitForUpdate: boolean;\n lastErrorReason: string | null;\n lastCheck: string | null;\n showError: boolean;\n status: SpxUpdateCheckStatusEnum;\n}\n","import { SpxUpdateCheckStatusEnum, StateI } from \"./spx-update-check.state\";\n\nconst defaultCycleTimeInMs = 9999;\n\nexport const initialState: StateI = {\n currentCycleTimeInMs: defaultCycleTimeInMs,\n forceWaitForUpdate: false,\n lastErrorReason: null,\n lastCheck: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.idle,\n};\n","import { createFeature, createReducer, on } from '@ngrx/store';\n\nimport { DateTime } from 'luxon';\nimport { SpxUpdateCheckStatusEnum, StateI } from './spx-update-check.state';\nimport { initialState } from './spx-update-check.initial';\nimport { spxUpdateCheckActions } from './spx-update-check.actions';\n\nexport default createFeature({\n name: 'spxUpdateCheck',\n reducer: createReducer(\n initialState,\n on(spxUpdateCheckActions.anUpdateIsReady, (state: StateI): StateI => {\n return {\n ...state,\n currentCycleTimeInMs: 2 * 60 * 1000,\n lastCheck: DateTime.now().toISO(),\n lastErrorReason: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.updateReady,\n };\n }),\n on(spxUpdateCheckActions.clearError, (state: StateI): StateI => {\n return {\n ...state,\n lastErrorReason: null,\n showError: false,\n };\n }),\n on(spxUpdateCheckActions.checkFailed, (state: StateI, { errorReason }): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n lastErrorReason: errorReason || null,\n showError: true,\n status: SpxUpdateCheckStatusEnum.failed,\n };\n }),\n on(spxUpdateCheckActions.noUpdateWasFound, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n lastCheck: DateTime.now().toISO(),\n lastErrorReason: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.upToDate,\n };\n }),\n on(spxUpdateCheckActions.runCheckAfterTimeout, (state: StateI, { timeoutInMs }): StateI => {\n return {\n ...state,\n currentCycleTimeInMs: timeoutInMs,\n };\n }),\n on(spxUpdateCheckActions.runCheck, (state: StateI, { forceWaitForUpdate }): StateI => {\n return {\n ...state,\n forceWaitForUpdate: typeof forceWaitForUpdate === 'boolean' ? forceWaitForUpdate : state.forceWaitForUpdate,\n lastErrorReason: null,\n showError: false,\n status: SpxUpdateCheckStatusEnum.preparing,\n };\n }),\n on(spxUpdateCheckActions.syncStarted, (state: StateI): StateI => {\n return {\n ...state,\n status: SpxUpdateCheckStatusEnum.syncing,\n };\n }),\n on(spxUpdateCheckActions.reloadStarted, (state: StateI): StateI => {\n return {\n ...state,\n status: SpxUpdateCheckStatusEnum.reloading,\n };\n }),\n on(spxUpdateCheckActions.notAvailableOnWeb, (state: StateI): StateI => {\n return {\n ...state,\n forceWaitForUpdate: false,\n status: SpxUpdateCheckStatusEnum.notAvailableOnWeb,\n };\n }),\n on(spxUpdateCheckActions.reset, (): StateI => {\n return {\n ...initialState,\n };\n }),\n ),\n});\n","import { IonContent, IonHeader, IonTitle, IonToolbar, NavController } from '@ionic/angular/standalone';\nimport {\n spxTextCheckingForUpdates,\n spxTextUpdateErrorReason,\n spxTextUpdateAppVersion,\n spxTextUpdateBinaryVersionGroup,\n spxTextUpdateBuildVersion,\n spxTextUpdateCurrentVersionNumber,\n spxTextUpdateLiveBundle,\n spxTextUpdateLiveChannel,\n spxTextUpdateNextVersionNumber,\n spxTextUpdateStatus,\n spxTextUpdateStatusCompleted,\n spxTextUpdateStatusFailed,\n spxTextUpdateStatusPreparing,\n spxTextUpdateStatusReloading,\n spxTextUpdateStatusSyncing,\n spxTextUpdateStatusUpdateReady,\n spxTextUpdateStatusUpToDate,\n spxTextUpdateStatusWebNotAvailable,\n spxTextUpdateVersionInfo\n} from '@softpak/components/spx-translate';\n\nimport { ActivatedRoute } from '@angular/router';\nimport { App } from '@capacitor/app';\nimport { Component, computed, effect, signal } from '@angular/core';\nimport { FaIconComponent } from '@fortawesome/angular-fontawesome';\nimport { faCircleCheck, faCircleExclamation } from '@fortawesome/free-solid-svg-icons';\nimport { SpxAppChannelTypeEnum } from '@softpak/components/spx-app-configuration';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { getBinaryVersionGroup } from '@softpak/components/spx-helpers';\nimport { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';\nimport { Store } from '@ngrx/store';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { spxUpdateCheckActions } from './store/spx-update-check/spx-update-check.actions';\nimport { SpxUpdateCheckStatusEnum } from './store/spx-update-check/spx-update-check.state';\nimport { default as updCheck } from './store/spx-update-check/spx-update-check.reducer';\n\n@Component({\n selector: 'spx-update-page',\n imports: [\n IonContent,\n IonHeader,\n IonToolbar,\n IonTitle,\n FaIconComponent,\n SpxCapitalizePipe,\n TranslatePipe,\n ],\n templateUrl: `./spx-update-page.component.html`,\n styleUrls: [`./spx-update-page.component.scss`],\n standalone: true,\n})\nexport class SpxUpdatePageComponent {\n private static readonly SUCCESS_CLOSE_DELAY_MS = 1000;\n\n appVersion = signal<string>('-');\n binaryVersionGroup = signal<string>('-');\n buildVersion = signal<string>('-');\n currentVersionNumber = signal<string>('-');\n lastErrorReason = this.appStore.selectSignal(updCheck.selectLastErrorReason);\n hasStarted = signal<boolean>(false);\n hasNavigatedAway = signal<boolean>(false);\n liveBundle = signal<string>('-');\n liveUpdateChannel = signal<string>('-');\n nextVersionNumber = signal<string>('-');\n status = this.appStore.selectSignal(updCheck.selectStatus);\n private closeTimerId: ReturnType<typeof setTimeout> | null = null;\n faCircleCheck = faCircleCheck;\n faCircleExclamation = faCircleExclamation;\n spxTextCheckingForUpdates = spxTextCheckingForUpdates;\n spxTextUpdateErrorReason = spxTextUpdateErrorReason;\n spxTextUpdateAppVersion = spxTextUpdateAppVersion;\n spxTextUpdateBinaryVersionGroup = spxTextUpdateBinaryVersionGroup;\n spxTextUpdateBuildVersion = spxTextUpdateBuildVersion;\n spxTextUpdateCurrentVersionNumber = spxTextUpdateCurrentVersionNumber;\n spxTextUpdateLiveBundle = spxTextUpdateLiveBundle;\n spxTextUpdateLiveChannel = spxTextUpdateLiveChannel;\n spxTextUpdateNextVersionNumber = spxTextUpdateNextVersionNumber;\n spxTextUpdateStatus = spxTextUpdateStatus;\n spxTextUpdateVersionInfo = spxTextUpdateVersionInfo;\n isRunningStatus = computed(() => {\n const status = this.status();\n return status === SpxUpdateCheckStatusEnum.idle ||\n status === SpxUpdateCheckStatusEnum.preparing ||\n status === SpxUpdateCheckStatusEnum.syncing ||\n status === SpxUpdateCheckStatusEnum.reloading;\n });\n isSuccessStatus = computed(() => {\n const status = this.status();\n return status === SpxUpdateCheckStatusEnum.upToDate ||\n status === SpxUpdateCheckStatusEnum.updateReady;\n });\n isErrorStatus = computed(() => {\n const status = this.status();\n return status === SpxUpdateCheckStatusEnum.failed ||\n status === SpxUpdateCheckStatusEnum.notAvailableOnWeb;\n });\n statusText = computed(() => {\n switch (this.status()) {\n case SpxUpdateCheckStatusEnum.idle:\n return spxTextUpdateStatusPreparing;\n case SpxUpdateCheckStatusEnum.preparing:\n return spxTextUpdateStatusPreparing;\n case SpxUpdateCheckStatusEnum.syncing:\n return spxTextUpdateStatusSyncing;\n case SpxUpdateCheckStatusEnum.reloading:\n return spxTextUpdateStatusReloading;\n case SpxUpdateCheckStatusEnum.upToDate:\n return spxTextUpdateStatusUpToDate;\n case SpxUpdateCheckStatusEnum.updateReady:\n return spxTextUpdateStatusUpdateReady;\n case SpxUpdateCheckStatusEnum.failed:\n return spxTextUpdateStatusFailed;\n case SpxUpdateCheckStatusEnum.notAvailableOnWeb:\n return spxTextUpdateStatusWebNotAvailable;\n default:\n return spxTextUpdateStatusCompleted;\n }\n });\n\n ionViewWillEnter() {\n this.startUpdateCheckFlow();\n }\n\n ionViewWillLeave() {\n this.hasStarted.set(false);\n this.clearScheduledClose();\n }\n\n ngOnDestroy() {\n this.clearScheduledClose();\n }\n\n constructor(\n private readonly appStore: Store,\n private readonly activatedRoute: ActivatedRoute,\n private readonly navController: NavController,\n ) {\n effect(() => {\n this.status();\n this.refreshStorageVersionInfo();\n });\n\n effect(() => {\n const status = this.status();\n if (!this.hasStarted() || this.hasNavigatedAway()) {\n return;\n }\n if (!this.shouldCloseUpdatePage(status)) {\n this.clearScheduledClose();\n return;\n }\n const targetUrl = this.activatedRoute.snapshot.data['url'];\n if (targetUrl === undefined) {\n console.error('configure data property \\'url\\' in route for update page');\n return;\n }\n\n const closeDelayMs = this.getCloseDelayMs(status);\n if (closeDelayMs === 0) {\n this.clearScheduledClose();\n this.navigateAway(targetUrl);\n return;\n }\n\n if (this.closeTimerId !== null) {\n return;\n }\n\n this.closeTimerId = setTimeout(() => {\n this.closeTimerId = null;\n this.navigateAway(targetUrl);\n }, closeDelayMs);\n });\n }\n\n private startUpdateCheckFlow(): void {\n this.hasStarted.set(false);\n this.hasNavigatedAway.set(false);\n this.clearScheduledClose();\n this.appStore.dispatch(spxUpdateCheckActions.reset());\n void this.loadVersionInfo();\n this.appStore.dispatch(spxUpdateCheckActions.runCheck({ forceWaitForUpdate: true }));\n this.hasStarted.set(true);\n }\n\n private shouldCloseUpdatePage(status: SpxUpdateCheckStatusEnum): boolean {\n return status === SpxUpdateCheckStatusEnum.upToDate ||\n status === SpxUpdateCheckStatusEnum.failed ||\n status === SpxUpdateCheckStatusEnum.notAvailableOnWeb ||\n status === SpxUpdateCheckStatusEnum.updateReady;\n }\n\n private getCloseDelayMs(status: SpxUpdateCheckStatusEnum): number {\n if (status === SpxUpdateCheckStatusEnum.upToDate || status === SpxUpdateCheckStatusEnum.updateReady) {\n return SpxUpdatePageComponent.SUCCESS_CLOSE_DELAY_MS;\n }\n return 0;\n }\n\n private clearScheduledClose(): void {\n if (this.closeTimerId === null) {\n return;\n }\n clearTimeout(this.closeTimerId);\n this.closeTimerId = null;\n }\n\n private navigateAway(targetUrl: string): void {\n if (this.hasNavigatedAway()) {\n return;\n }\n this.hasNavigatedAway.set(true);\n this.navController.navigateRoot(targetUrl);\n }\n\n private async loadVersionInfo(): Promise<void> {\n const appInfo = await App.getInfo();\n const appVersion = appInfo.version || '-';\n this.appVersion.set(appVersion);\n this.buildVersion.set(appInfo.build || '-');\n\n try {\n const computedBinaryVersionGroup = `${getBinaryVersionGroup(appVersion)}.x`;\n const storedBinaryVersionGroup = SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup);\n this.binaryVersionGroup.set(storedBinaryVersionGroup || computedBinaryVersionGroup);\n\n const storedLiveUpdateChannel = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel);\n const channelType = SpxStorage.getSetting(SpxStorageKeyEnum.channelType) || SpxAppChannelTypeEnum.production;\n this.liveUpdateChannel.set(storedLiveUpdateChannel || `${channelType}-${computedBinaryVersionGroup}`);\n } catch {\n this.binaryVersionGroup.set(SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup) || '-');\n this.liveUpdateChannel.set(SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel) || '-');\n }\n\n this.refreshStorageVersionInfo();\n }\n\n private refreshStorageVersionInfo(): void {\n const storedBinaryVersionGroup = SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup);\n const storedCurrentVersionNumber = SpxStorage.getSetting(SpxStorageKeyEnum.capAwesomeVersionNumber);\n const storedLiveUpdateChannel = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel);\n const storedLiveBundle = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdate);\n const storedNextVersionNumber = SpxStorage.getSetting(SpxStorageKeyEnum.capAwesomeNextVersionNumber);\n\n if (storedBinaryVersionGroup) {\n this.binaryVersionGroup.set(storedBinaryVersionGroup);\n }\n this.currentVersionNumber.set(storedCurrentVersionNumber || '-');\n if (storedLiveUpdateChannel) {\n this.liveUpdateChannel.set(storedLiveUpdateChannel);\n }\n this.liveBundle.set(storedLiveBundle || '-');\n this.nextVersionNumber.set(storedNextVersionNumber || '-');\n }\n}\n","<ion-header>\n <ion-toolbar>\n <ion-title>\n {{ spxTextCheckingForUpdates | translate | capitalize }}\n </ion-title>\n </ion-toolbar>\n</ion-header>\n\n<ion-content class=\"ion-padding update-page\">\n <div class=\"update-shell mx-auto grid max-w-[40rem] gap-4 py-2 pb-4\">\n <section\n class=\"status-card grid gap-2 rounded-2xl border border-[color:var(--spx-update-border-color)] bg-[var(--spx-update-surface-color)] p-4\"\n [attr.data-status]=\"status()\">\n <div\n class=\"status-visual\"\n [class.is-running]=\"isRunningStatus()\"\n [class.is-success]=\"isSuccessStatus()\"\n [class.is-error]=\"isErrorStatus()\"\n aria-hidden=\"true\">\n <span class=\"status-orbit status-orbit--outer\"></span>\n <span class=\"status-orbit status-orbit--inner\"></span>\n <span class=\"status-core\"></span>\n\n @if (isSuccessStatus()) {\n <fa-icon class=\"status-icon\" [icon]=\"faCircleCheck\"></fa-icon>\n }\n @if (isErrorStatus()) {\n <fa-icon class=\"status-icon\" [icon]=\"faCircleExclamation\"></fa-icon>\n }\n </div>\n\n <p class=\"status-label m-0 text-[0.76rem] font-bold uppercase tracking-[0.08em] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateStatus | translate | capitalize }}</p>\n <p class=\"status-value m-[0.35rem_0_0] text-[1.15rem] font-bold text-[color:var(--spx-update-text-color)]\">{{ statusText() | translate | capitalize }}</p>\n\n @if (lastErrorReason()) {\n <p class=\"status-error mt-[0.85rem] leading-[1.35] text-[color:var(--ion-color-danger,#eb445a)]\">\n <strong>{{ spxTextUpdateErrorReason | translate | capitalize }}:</strong>\n {{ lastErrorReason() }}\n </p>\n }\n </section>\n\n <section class=\"details-card rounded-2xl border border-[color:var(--spx-update-border-color)] bg-[var(--spx-update-surface-color)] p-4\">\n <h2 class=\"m-0 text-[0.95rem] font-bold text-[color:var(--spx-update-text-color)]\">{{ spxTextUpdateVersionInfo | translate | capitalize }}</h2>\n\n <dl class=\"details-grid mt-[0.9rem] grid gap-[0.65rem]\">\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateAppVersion | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ appVersion() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateBuildVersion | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ buildVersion() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateBinaryVersionGroup | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ binaryVersionGroup() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateLiveChannel | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ liveUpdateChannel() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateCurrentVersionNumber | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ currentVersionNumber() }}</dd>\n </div>\n <div class=\"detail-row flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateNextVersionNumber | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ nextVersionNumber() }}</dd>\n </div>\n <div class=\"detail-row last:border-b-0 last:pb-0 flex flex-col items-start gap-[0.2rem] border-b border-dashed border-[color:var(--spx-update-border-color)] pb-[0.45rem] min-[481px]:flex-row min-[481px]:items-baseline min-[481px]:justify-between min-[481px]:gap-4\">\n <dt class=\"m-0 text-[0.86rem] text-[color:var(--spx-update-muted-color)]\">{{ spxTextUpdateLiveBundle | translate | capitalize }}</dt>\n <dd class=\"m-0 break-words text-left text-[0.86rem] font-semibold text-[color:var(--spx-update-text-color)] min-[481px]:text-right\">{{ liveBundle() }}</dd>\n </div>\n </dl>\n </section>\n </div>\n</ion-content>\n","import { createActionGroup, emptyProps } from '@ngrx/store';\n\nexport const SpxUpdatePendingActions = createActionGroup({\n source: 'SpxUpdatePending',\n events: {\n AcceptUpdate: emptyProps(),\n HasBeenDownloaded: emptyProps(),\n HasBeenInstalled: emptyProps(),\n Postpone: emptyProps(),\n PostponeExpired: emptyProps(),\n },\n});\n","import { StateI } from \"./spx-update-pending.state\";\n\nexport const initialState: StateI = {\n showLiveUpdateReady: false,\n updateIsDownloadedAndPending: false,\n};\n","import { createFeature, createReducer, on } from '@ngrx/store';\n\nimport { SpxUpdatePendingActions } from './spx-update-pending.actions';\nimport { StateI } from './spx-update-pending.state';\nimport { initialState } from './spx-update-pending.initial';\n\nexport default createFeature({\n name: 'spxUpdatePending',\n reducer: createReducer(\n initialState,\n on(SpxUpdatePendingActions.hasBeenDownloaded, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: true,\n updateIsDownloadedAndPending: true,\n };\n }),\n on(SpxUpdatePendingActions.hasBeenInstalled, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: false,\n updateIsDownloadedAndPending: false,\n };\n }),\n on(SpxUpdatePendingActions.postpone, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: false,\n };\n }),\n on(SpxUpdatePendingActions.postponeExpired, (state: StateI): StateI => {\n return {\n ...state,\n showLiveUpdateReady: true,\n };\n }),\n ),\n});\n","import { ChangeDetectionStrategy, Component, HostBinding, signal } from '@angular/core';\nimport { DomSanitizer, SafeStyle } from '@angular/platform-browser';\nimport { SpxSeverityEnum, unsubscribeSubscriptions } from '@softpak/components/spx-helpers';\nimport { spxTextOpenAppStore, spxTextPatchAvailable, spxTextReadyToBeInstalled, spxTextUpdate, spxTextUpdateAvailable } from '@softpak/components/spx-translate';\n\nimport { SpxButtonComponent } from '@softpak/components/spx-button';\nimport { SpxCapitalizePipe } from '@softpak/components/spx-capitalize';\nimport { SpxUpdatePendingActions } from './public-api';\nimport { Store } from '@ngrx/store';\nimport { Subscription } from 'rxjs';\nimport { TranslatePipe } from '@ngx-translate/core';\nimport { default as updPending } from './store/spx-update-pending/spx-update-pending.reducer';\n\n@Component({\n selector: 'spx-update-pending',\n imports: [\n SpxButtonComponent,\n SpxCapitalizePipe,\n TranslatePipe,\n ],\n templateUrl: `./spx-update-pending.component.html`,\n standalone: true,\n changeDetection: ChangeDetectionStrategy.OnPush,\n})\nexport class SpxUpdatePendingComponent {\n @HostBinding('style') baseStyle?: SafeStyle;\n availableStoreVersion = signal<undefined | string>(undefined);\n currentStoreVersion = signal<undefined | string>(undefined);\n severitySuccess = SpxSeverityEnum.success;\n showLiveUpdateReady = signal<boolean>(false);\n spxTextUpdate = spxTextUpdate;\n spxTextReadyToBeInstalled = spxTextReadyToBeInstalled;\n spxTextPatchAvailable = spxTextPatchAvailable;\n spxTextUpdateAvailable = spxTextUpdateAvailable;\n spxTextOpenAppStore = spxTextOpenAppStore;\n\n private subscriptions: {\n updPending?: Subscription;\n } = {};\n\n ngOnInit() {\n this.subscriptions.updPending = this.appStore.select(updPending.selectShowLiveUpdateReady).subscribe(showLiveUpdateReady => {\n this.showLiveUpdateReady.set(showLiveUpdateReady);\n if (showLiveUpdateReady) {\n this.baseStyle = this.sanitizer.bypassSecurityTrustStyle('display: block;');\n } else {\n this.baseStyle = this.sanitizer.bypassSecurityTrustStyle('display: none;');\n }\n });\n }\n\n ngOnDestroy() {\n unsubscribeSubscriptions(this.subscriptions);\n }\n\n constructor(\n private readonly appStore: Store,\n private sanitizer: DomSanitizer,\n ) {}\n\n onUpdate(): void {\n this.appStore.dispatch(SpxUpdatePendingActions.acceptUpdate());\n }\n}\n","@if (showLiveUpdateReady()) {\n<div class=\"bg-zinc-700 text-black p-3 rounded flex gap-3 mx-auto max-w-lg items-center\">\n <div class=\"grow\">\n <p\n class=\"text-xl font-extrabold bg-clip-text text-transparent bg-[linear-gradient(to_right,theme(colors.green.300),theme(colors.green.100),theme(colors.sky.400),theme(colors.yellow.200),theme(colors.sky.400),theme(colors.green.100),theme(colors.green.300))] bg-[length:200%_auto] animate-gradient\">\n {{ spxTextPatchAvailable | translate | capitalize }}</p>\n <div class=\"text-sm text-zinc-300\">{{ spxTextReadyToBeInstalled | translate | capitalize }}</div>\n </div>\n <spx-button [spxSeverity]=\"severitySuccess\" (spxClick)=\"onUpdate()\">{{ spxTextUpdate | translate | capitalize\n }}</spx-button>\n</div>\n}","export const spxUpdateUrl = '';","import { Actions, createEffect, ofType } from '@ngrx/effects';\nimport { Injectable, inject } from '@angular/core';\nimport { LiveUpdate, SyncResult } from '@capawesome/capacitor-live-update';\nimport { SpxToasterAutoCloseSpeedEnum, spxToasterActions } from '@softpak/components/spx-toaster';\nimport { Observable, concat, from, of, timer } from 'rxjs';\nimport { SpxStorage, SpxStorageKeyEnum } from '@softpak/components/spx-storage';\nimport { catchError, delay, exhaustMap, map, mergeMap, switchMap } from 'rxjs/operators';\n\nimport { App } from '@capacitor/app';\nimport { Capacitor } from '@capacitor/core';\nimport { SpxAppChannelTypeEnum } from '@softpak/components/spx-app-configuration';\nimport { getBinaryVersionGroup } from '@softpak/components/spx-helpers';\nimport { SpxUpdatePendingActions } from '../spx-update-pending/spx-update-pending.actions';\nimport { TranslateService } from '@ngx-translate/core';\nimport { captureMessage } from '@sentry/angular';\nimport { spxTextLiveUpdateCheckFailed, spxTextLiveUpdateCheckFailedWithReason } from '@softpak/components/spx-translate';\nimport { spxUpdateCheckActions } from './spx-update-check.actions';\n\nconst capAwesomeVersionNumberPropertyKey = 'versionnumber';\nconst updateCheckInitialDelayMs = 5 * 60 * 1000;\nconst updateCheckMinimumDelayMs = 2 * 60 * 1000;\nconst updateCheckMaximumDelayMs = 20 * 60 * 1000;\nconst updateCheckDelayStepMs = 2 * 60 * 1000;\ntype BundleVersionNumberMap = Record<string, string>;\n\n@Injectable()\nexport class Effects {\n private readonly actions$ = inject(Actions);\n private readonly translateService = inject(TranslateService);\n private nextCheckDelayMs = updateCheckInitialDelayMs + updateCheckDelayStepMs;\n\n afterInitialize$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.initialize),\n mergeMap(() => [\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: updateCheckInitialDelayMs }),\n ]))\n );\n\n runCheckAfterTimeout$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.runCheckAfterTimeout),\n switchMap((action) => timer(action.timeoutInMs).pipe(\n map(() => spxUpdateCheckActions.runCheck({ forceWaitForUpdate: false })),\n )),\n ));\n\n onRun$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.runCheck),\n exhaustMap((action) => {\n if (Capacitor.getPlatform() === 'web') {\n return of(spxUpdateCheckActions.notAvailableOnWeb());\n }\n return concat(\n of(spxUpdateCheckActions.syncStarted()),\n from(App.getInfo()).pipe(\n mergeMap((binaryInfo) => {\n // Migrate from e.g. 1.2.x to 1.3.x\n const binaryVersionGroup = getBinaryVersionGroup(binaryInfo.version);\n const channelType = SpxStorage.getSetting(SpxStorageKeyEnum.channelType);\n\n if (SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup)) {\n SpxStorage.setSetting(SpxStorageKeyEnum.lastBinaryVersionGroup, SpxStorage.getSetting(SpxStorageKeyEnum.binaryVersionGroup)!);\n }\n\n SpxStorage.setSetting(SpxStorageKeyEnum.binaryVersionGroup, `${binaryVersionGroup}.x`);\n SpxStorage.setSetting(SpxStorageKeyEnum.liveUpdateChannel, `${channelType ? channelType : SpxAppChannelTypeEnum.production}-${binaryVersionGroup}.x`);\n // End migrate from e.g. 1.2.x to 1.3.x\n\n const channel = SpxStorage.getSetting(SpxStorageKeyEnum.liveUpdateChannel)!;\n return from(Promise.all([\n LiveUpdate.getCurrentBundle(),\n LiveUpdate.fetchLatestBundle({ channel }),\n LiveUpdate.sync({ channel }),\n ]));\n }),\n mergeMap(([currentBundleResult, latestBundleResult, syncResult]: [\n Awaited<ReturnType<typeof LiveUpdate.getCurrentBundle>>,\n Awaited<ReturnType<typeof LiveUpdate.fetchLatestBundle>>,\n SyncResult,\n ]) => {\n const capAwesomeVersionNumber = latestBundleResult.customProperties?.[capAwesomeVersionNumberPropertyKey];\n const bundleVersionNumbers = this.getBundleVersionNumbers();\n\n if (latestBundleResult.bundleId && capAwesomeVersionNumber) {\n bundleVersionNumbers[latestBundleResult.bundleId] = capAwesomeVersionNumber;\n this.setBundleVersionNumbers(bundleVersionNumbers);\n }\n\n const previousBundleVersionNumber = this.getBundleVersionNumber(\n bundleVersionNumbers,\n currentBundleResult.bundleId,\n currentBundleResult.bundleId === latestBundleResult.bundleId ? capAwesomeVersionNumber : undefined,\n );\n const nextBundleVersionNumber = this.getBundleVersionNumber(\n bundleVersionNumbers,\n syncResult.nextBundleId,\n syncResult.nextBundleId === latestBundleResult.bundleId ? capAwesomeVersionNumber : undefined,\n );\n\n if (previousBundleVersionNumber) {\n SpxStorage.setSetting(SpxStorageKeyEnum.capAwesomeVersionNumber, previousBundleVersionNumber);\n } else {\n SpxStorage.clearSetting(SpxStorageKeyEnum.capAwesomeVersionNumber);\n }\n\n if (nextBundleVersionNumber) {\n SpxStorage.setSetting(SpxStorageKeyEnum.capAwesomeNextVersionNumber, nextBundleVersionNumber);\n } else {\n SpxStorage.clearSetting(SpxStorageKeyEnum.capAwesomeNextVersionNumber);\n }\n\n if (syncResult.nextBundleId) {\n SpxStorage.setSetting(SpxStorageKeyEnum.liveUpdate, syncResult.nextBundleId as string);\n if (action.forceWaitForUpdate) {\n return concat(\n of(spxUpdateCheckActions.reloadStarted()),\n from(LiveUpdate.reload()).pipe(\n map(() => spxUpdateCheckActions.anUpdateIsReady()),\n catchError((err) => {\n const errorReason = this.getReadableErrorReason(err);\n captureMessage(`[UPD] Reload failed: ${errorReason}`);\n return of(spxUpdateCheckActions.checkFailed({\n errorReason,\n startUpdateAgainAfterTimeout: !action.forceWaitForUpdate,\n }));\n }),\n ),\n );\n }\n return of(spxUpdateCheckActions.anUpdateIsReady());\n } else {\n return of(spxUpdateCheckActions.noUpdateWasFound({ startUpdateAgainAfterTimeout: !action.forceWaitForUpdate }));\n }\n }),\n catchError((err) => {\n const errorReason = this.getReadableErrorReason(err);\n if (this.isSyncAlreadyInProgress(errorReason)) {\n return timer(1500).pipe(\n map(() => spxUpdateCheckActions.runCheck({ forceWaitForUpdate: !!action.forceWaitForUpdate })),\n );\n }\n captureMessage(`[UPD] Handled: ${errorReason}`);\n return of(spxUpdateCheckActions.checkFailed({\n errorReason,\n startUpdateAgainAfterTimeout: !action.forceWaitForUpdate,\n }));\n })\n )\n );\n }),\n ));\n\n whenAndUpdateIsReady$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.anUpdateIsReady),\n mergeMap(() => {\n const delayMs = updateCheckMinimumDelayMs;\n this.nextCheckDelayMs = delayMs + updateCheckDelayStepMs;\n\n return [\n SpxUpdatePendingActions.hasBeenDownloaded(),\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),\n ];\n }))\n );\n\n whenCheckHasFailed$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.checkFailed),\n mergeMap((action) => {\n if (!action.startUpdateAgainAfterTimeout) {\n return [];\n }\n\n const delayMs = updateCheckMinimumDelayMs;\n this.nextCheckDelayMs = delayMs + updateCheckDelayStepMs;\n\n return [\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),\n ];\n }))\n );\n\n whenCheckHasFailedShowError$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.checkFailed),\n map((action) => spxToasterActions.createError({\n autoClose: SpxToasterAutoCloseSpeedEnum.DEFAULT,\n messageText: action.errorReason\n ? this.translateService.instant(spxTextLiveUpdateCheckFailedWithReason, { reason: action.errorReason })\n : this.translateService.instant(spxTextLiveUpdateCheckFailed),\n })),\n ));\n\n whenNoUpdateWasFound$: Observable<any> = createEffect(() => this.actions$.pipe(\n ofType(spxUpdateCheckActions.noUpdateWasFound),\n mergeMap((action) => {\n if (!action.startUpdateAgainAfterTimeout) {\n return [];\n }\n\n const delayMs = this.nextCheckDelayMs;\n this.nextCheckDelayMs = Math.min(\n this.nextCheckDelayMs + updateCheckDelayStepMs,\n updateCheckMaximumDelayMs,\n );\n\n return [\n spxUpdateCheckActions.runCheckAfterTimeout({ timeoutInMs: delayMs }),\n ];\n }))\n );\n\n private getReadableErrorReason(err: unknown): string {\n if (err instanceof Error && err.message?.trim()) {\n return err.message.trim();\n }\n if (typeof err === 'string' && err.trim()) {\n return err.trim();\n }\n if (err && typeof err === 'object') {\n const withMessage = err as { message?: unknown };\n if (typeof withMessage.message === 'string' && withMessage.message.trim()) {\n return withMessage.message.trim();\n }\n try {\n const serialized = JSON.stringify(err);\n if (serialized && serialized !== '{}') {\n return serialized.length > 180 ? `${serialized.slice(0, 177)}...` : serialized;\n }\n } catch {\n // ignore serialization errors\n }\n }\n return '';\n }\n\n private isSyncAlreadyInProgress(errorReason: string): boolean {\n const normalized = errorReason.toLowerCase();\n return normalized.includes('sync is already in progress');\n }\n\n private getBundleVersionNumbers(): BundleVersionNumberMap {\n const serialized = SpxStorage.getSetting(SpxStorageKeyEnum.capAwesomeBundleVersionNumbers);\n if (!serialized) {\n return {};\n }\n try {\n const parsed = JSON.parse(serialized);\n return parsed && typeof parsed === 'object' ? parsed as BundleVersionNumberMap : {};\n } catch {\n return {};\n }\n }\n\n private setBundleVersionNumbers(bundleVersionNumbers: BundleVersionNumberMap): void {\n SpxStorage.setSetting(\n SpxStorageKeyEnum.capAwesomeBundleVersionNumbers,\n JSON.stringify(bundleVersionNumbers),\n );\n }\n\n private getBundleVersionNumber(\n bundleVersionNumbers: BundleVersionNumberMap,\n bundleId: string | null,\n fallback?: string,\n ): string | null {\n if (!bundleId) {\n return null;\n }\n return bundleVersionNumbers[bundleId] ?? fallback ?? null;\n }\n}\n","import { Actions, createEffect, ofType } from '@ngrx/effects';\n\nimport { Injectable, inject } from '@angular/core';\nimport { LiveUpdate } from \"@capawesome/capacitor-live-update\";\nimport { SpxToasterAutoCloseSpeedEnum, spxToasterActions } from '@softpak/components/spx-toaster';\nimport { SpxUpdatePendingActions } from './spx-update-pending.actions';\nimport { Store } from '@ngrx/store';\nimport { TranslateService } from '@ngx-translate/core';\nimport { captureMessage } from '@sentry/angular';\nimport { spxTextLiveUpdateCheckFailed, spxTextLiveUpdateCheckFailedWithReason } from '@softpak/components/spx-translate';\nimport { tap } from 'rxjs/operators';\n\n@Injectable()\nexport class Effects {\n private readonly actions$ = inject(Actions);\n private readonly appStore = inject(Store);\n private readonly translateService = inject(TranslateService);\n\n whenAccepted$ = createEffect(() => this.actions$.pipe(\n ofType(SpxUpdatePendingActions.acceptUpdate),\n tap(() => {\n void LiveUpdate.reload().catch((err) => {\n const errorReason = this.getReadableErrorReason(err);\n captureMessage(`[UPD] Accept reload failed: ${errorReason}`);\n this.appStore.dispatch(spxToasterActions.createError({\n autoClose: SpxToasterAutoCloseSpeedEnum.DEFAULT,\n messageText: errorReason\n ? this.translateService.instant(spxTextLiveUpdateCheckFailedWithReason, { reason: errorReason })\n : this.translateService.instant(spxTextLiveUpdateCheckFailed),\n }));\n });\n }),\n ), { dispatch: false });\n\n private getReadableErrorReason(err: unknown): string {\n if (err instanceof Error && err.message?.trim()) {\n return err.message.trim();\n }\n if (typeof err === 'string' && err.trim()) {\n return err.trim();\n }\n if (err && typeof err === 'object') {\n const withMessage = err as { message?: unknown };\n if (typeof withMessage.message === 'string' && withMessage.message.trim()) {\n return withMessage.message.trim();\n }\n try {\n const serialized = JSON.stringify(err);\n if (serialized && serialized !== '{}') {\n return serialized.length > 180 ? `${serialized.slice(0, 177)}...` : serialized;\n }\n } catch {\n // ignore serialization errors\n }\n }\n return '';\n }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["initialState","i2","Effects"],"mappings":"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"}
|