import { Component, HostListener, OnInit } from '@angular/core'; import { RouteConfigLoadStart, Router } from '@angular/router'; import { AuthService } from './services/auth.service'; import { CookiesService } from './services/cookies.service'; import { JsonrpcService, RpcService } from './services/jsonrpc.service'; import { pwaInstalled } from './utils'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.scss'], }) export class AppComponent implements OnInit { title = 'Coffee Like'; public static pwaPrompt: any; public static pwaInstalled: boolean = true; constructor( private router: Router, private cookiesService: CookiesService, private jsonRpcService: JsonrpcService, private authService: AuthService ) { this.router.events.subscribe((x) => { if (x instanceof RouteConfigLoadStart && x.route.path === '') { x.route.loadChildren = () => { switch (this.cookiesService.getItem('presentation-option')) { case 'first': return import( './presentation-options/first-option/first-option.module' ).then((mod) => mod.FirstOptionModule); default: return import( './presentation-options/default-option/default-option.module' ).then((mod) => mod.DefaultOptionModule); } }; } }); } @HostListener('window:beforeinstallprompt', ['$event']) onBeforeInstallPrompt(e: any) { e.preventDefault(); AppComponent.pwaPrompt = e; if (AppComponent.pwaPrompt) { AppComponent.pwaInstalled = false; } } @HostListener('window:appinstalled', ['$event']) onAppInstalled(e: any) { // Prevent Chrome 67 and earlier from automatically showing the prompt e.preventDefault(); // Stash the event so it can be triggered later. AppComponent.pwaPrompt = e; AppComponent.pwaInstalled = true; } getAdditionalInfo() { return this.jsonRpcService.rpc( { method: 'getAdditionalInfo', params: [], }, RpcService.authService, true ); } ngOnInit(): void { pwaInstalled().then((res) => { AppComponent.pwaInstalled = res; }); if (this.authService.authorized) { this.authService.getUserInfo(); } this.getAdditionalInfo().subscribe({ next: (value) => { this.cookiesService.setCookie( 'presentation-option', value?.data?.interface_id || 'default' ); }, error: (err) => { console.error(err); }, }); } }