diff --git a/angular/src/app/directives/download-app.directive.ts b/angular/src/app/directives/download-app.directive.ts
index fd31670..a97740a 100644
--- a/angular/src/app/directives/download-app.directive.ts
+++ b/angular/src/app/directives/download-app.directive.ts
@@ -6,13 +6,12 @@ import {
Renderer2,
Inject,
} from '@angular/core';
-import { lastValueFrom } from 'rxjs';
-import { MatSnackBar } from '@angular/material/snack-bar';
+
import { MessageService } from 'primeng/api';
import { CookiesService } from 'src/app/services/cookies.service';
-import { RpcService, JsonrpcService } from 'src/app/services/jsonrpc.service';
-import { DOCUMENT } from '@angular/common';
+
import { AppleWalletService } from 'src/app/services/apple-wallet.service';
+import { getTypeDevice } from 'src/app/utils';
@Directive({
selector: '[appDownloadApp]',
@@ -25,21 +24,16 @@ export class DownloadAppDirective implements OnInit {
private messageService: MessageService,
public renderer: Renderer2,
private el: ElementRef,
- private _snackBar: MatSnackBar,
- private appleWallet: AppleWalletService,
- private cookiesService: CookiesService,
- @Inject(DOCUMENT) private document: Document,
- private jsonrpc: JsonrpcService,
) { }
ngOnInit(): void {
- this.getTypeDevice();
+ getTypeDevice();
if (this.deviceType === 'ios') {
this.el.nativeElement.style.display = 'block';
}
- if (window.matchMedia('(display-mode: standalone)').matches) {
- this.el.nativeElement.style.display = 'none';
- }
+ if (window.matchMedia('(display-mode: standalone)').matches) {
+ this.el.nativeElement.style.display = 'none';
+ }
}
@HostListener('window:beforeinstallprompt', ['$event'])
@@ -56,76 +50,29 @@ export class DownloadAppDirective implements OnInit {
// Prevent Chrome 67 and earlier from automatically showing the prompt
e.preventDefault();
// Stash the event so it can be triggered later.
- this.deferredPrompt = e;
+ this.deferredPrompt = e;
this.el.nativeElement.style.display = 'none';
}
- getTypeDevice() {
- const userAgent = window.navigator.userAgent.toLowerCase();
- const ios = /iphone|ipod|ipad/.test(userAgent);
- this.deviceType = ios ? 'ios' : 'android';
- }
-
@HostListener('click', ['$event'])
async downloadApp(event: MouseEvent) {
- if (event) {
- event.preventDefault();
- }
-
- if (this.deviceType === 'ios') {
- await this.addCardToWallet();
- return;
- }
if (!this.deferredPrompt) {
this.messageService.add({
severity: 'error',
summary: 'Не поддерживается в Вашем браузере!',
});
- this._snackBar.open('Не поддерживается в Вашем браузере!', '', {
- duration: 3000,
- });
return;
}
this.deferredPrompt.prompt();
this.deferredPrompt.userChoice.then((res: any) => {
if (res.outcome === 'accepted') {
- this._snackBar.open('Спасибо за установку!', '', {
- duration: 3000,
+ this.messageService.add({
+ severity: 'success',
+ summary: 'Спасибо за установку!',
});
}
this.deferredPrompt = null;
});
}
- async addCardToWallet() {
- const token = this.cookiesService.getItem('token');
- try {
- const accountData = (
- await lastValueFrom(
- this.jsonrpc.rpc(
- {
- method: 'getTokenData',
- params: [],
- },
- RpcService.authService,
- true
- )
- )
- ).data;
-
- if (token && accountData.user_id) {
- this.appleWallet.generateCard(token, accountData.user_id).subscribe({
- next: (res: any) => {
- this.document.location.href = res.url;
- },
- error: (err) => {
- console.log('Error: ', err);
- },
- });
- }
- } catch (e) {
- console.log(e);
- }
-
- }
}
diff --git a/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.html b/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.html
new file mode 100644
index 0000000..7443bf7
--- /dev/null
+++ b/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.html
@@ -0,0 +1,3 @@
+
diff --git a/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.scss b/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.scss
new file mode 100644
index 0000000..80f9464
--- /dev/null
+++ b/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.scss
@@ -0,0 +1,20 @@
+.menu-item {
+ display: flex;
+ gap: 10px;
+ align-items: center;
+ padding: 10px;
+ cursor: pointer;
+ transition: background-color 0.1s;
+
+ &:hover {
+ background-color: var(--main-color_hover);
+ }
+
+ .title {
+ color: var(--text-color);
+ }
+
+ .icon {
+
+ }
+}
diff --git a/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.ts b/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.ts
new file mode 100644
index 0000000..e376ca0
--- /dev/null
+++ b/angular/src/app/presentation-options/default-option/components/navbar/menu_item.component.ts
@@ -0,0 +1,18 @@
+import { Component, Input, HostListener, } from "@angular/core";
+
+@Component({
+ selector: 'menu-item',
+ templateUrl: './menu_item.component.html',
+ styleUrls: ['./menu_item.component.scss'],
+})
+export class MenuItemComponent {
+ @Input()
+ handler?: (e: any) => void;
+
+ @HostListener('click', ['$event'])
+ onClick(e: any) {
+ if (this.handler) {
+ this.handler(e);
+ }
+ }
+}
diff --git a/angular/src/app/presentation-options/default-option/components/navbar/navbar.component.html b/angular/src/app/presentation-options/default-option/components/navbar/navbar.component.html
index 005236d..57622b1 100644
--- a/angular/src/app/presentation-options/default-option/components/navbar/navbar.component.html
+++ b/angular/src/app/presentation-options/default-option/components/navbar/navbar.component.html
@@ -2,7 +2,44 @@
{{title}}
-
+
+
+