2026-04-30 16:27:42 +03:30
|
|
|
import { AbstractDialog } from '@/shared/abstractClasses/abstract-dialog';
|
|
|
|
|
import { Component, computed, inject } from '@angular/core';
|
2026-05-01 19:45:30 +03:30
|
|
|
import { RouterLink } from '@angular/router';
|
2026-04-30 16:27:42 +03:30
|
|
|
import { SwUpdate, VersionReadyEvent } from '@angular/service-worker';
|
|
|
|
|
import { Button } from 'primeng/button';
|
|
|
|
|
import { Drawer } from 'primeng/drawer';
|
|
|
|
|
import { Ripple } from 'primeng/ripple';
|
|
|
|
|
import { filter } from 'rxjs';
|
|
|
|
|
import { PosInfoStore } from '../../store';
|
|
|
|
|
|
|
|
|
|
@Component({
|
|
|
|
|
selector: 'pos-main-menu-sidebar',
|
|
|
|
|
templateUrl: './main-menu-sidebar.component.html',
|
2026-05-01 19:45:30 +03:30
|
|
|
imports: [Drawer, Button, Ripple, RouterLink],
|
2026-04-30 16:27:42 +03:30
|
|
|
})
|
|
|
|
|
export class PosMainMenuSidebarComponent extends AbstractDialog {
|
|
|
|
|
private readonly posInfoStore = inject(PosInfoStore);
|
|
|
|
|
private readonly swUpdate = inject(SwUpdate);
|
|
|
|
|
|
|
|
|
|
readonly posInfo = computed(() => this.posInfoStore.entity());
|
|
|
|
|
appVersion = '0.0.0';
|
|
|
|
|
isPwaBuild = false;
|
|
|
|
|
|
|
|
|
|
readonly posName = computed(() => {
|
|
|
|
|
if (this.posInfo()) {
|
|
|
|
|
const { name, businessActivity, complex } = this.posInfo()!;
|
|
|
|
|
return `${name} (${businessActivity.name} - ${complex.name})`;
|
|
|
|
|
}
|
|
|
|
|
return '';
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
ngOnInit() {
|
|
|
|
|
this.isPwaBuild = this.swUpdate.isEnabled;
|
|
|
|
|
if (!this.isPwaBuild) return;
|
|
|
|
|
|
|
|
|
|
fetch('/ngsw.json')
|
|
|
|
|
.then((res) => res.json())
|
|
|
|
|
.then((data: { appData?: { appVersion?: string } }) => {
|
|
|
|
|
this.appVersion = data?.appData?.appVersion || this.appVersion;
|
|
|
|
|
})
|
|
|
|
|
.catch(() => {});
|
|
|
|
|
|
|
|
|
|
this.swUpdate.versionUpdates
|
|
|
|
|
.pipe(filter((event): event is VersionReadyEvent => event.type === 'VERSION_READY'))
|
|
|
|
|
.subscribe((event) => {
|
|
|
|
|
const appData = event.latestVersion.appData as { appVersion?: string } | undefined;
|
|
|
|
|
this.appVersion = appData?.appVersion || this.appVersion;
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
this.swUpdate.checkForUpdate().catch(() => {});
|
|
|
|
|
}
|
|
|
|
|
}
|