This repository has been archived on 2022-08-25. You can view files and clone it, but cannot push or open issues or pull requests.
Files
Frontend/src/app/payment/payment.component.ts
Mondei1 59ebcb54c6 Crypto currency isn't static anymore
- Notification when transaction got confirmed
2021-01-17 18:48:00 +01:00

96 lines
2.6 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { PushNotificationsService } from 'ng-push-ivy';
import { BackendService, CryptoUnits, PaymentStatus } from '../backend.service';
import { StateService } from '../state.service';
@Component({
selector: 'app-payment',
templateUrl: './payment.component.html',
styleUrls: ['./payment.component.css']
})
export class PaymentComponent implements OnInit {
paymentSelector = '';
confirmations = 0;
status: string;
ready = false;
emittedNotification = false;
// XYZ class (will be xyz-out if cart is shown for example)
xyzClass: string;
hideMain: boolean;
constructor(
public backend: BackendService,
public state: StateService,
private route: ActivatedRoute,
private push: PushNotificationsService
) {
this.status = this.backend.getStatus();
this.hideMain = false;
this.xyzClass = 'xyz-in';
}
ngOnInit(): void {
this.route.params.subscribe(params => {
this.paymentSelector = params.id;
this.backend.subscribeTo(this.paymentSelector);
this.get();
});
this.state.showCart.subscribe(cartStatus => {
if (cartStatus) {
this.xyzClass = 'xyz-out';
setTimeout(() => {
this.hideMain = true;
}, 700);
} else {
setTimeout(() => {
this.hideMain = false;
this.xyzClass = 'xyz-in';
}, 600);
}
});
this.backend.invoiceUpdate.subscribe(newInvoice => {
if (newInvoice?.status === PaymentStatus.UNCONFIRMED) {
this.push.requestPermission();
}
if (newInvoice?.status === PaymentStatus.DONE) {
if (this.emittedNotification) { return; }
this.push.create('Transaction confirmed!', {
body: 'Your transaction just got confirmed.',
lang: 'en',
icon: this.backend.getIcon(),
sticky: true,
vibrate: [250, 400, 250],
sound: 'assets/pay_success.mp3'
}).subscribe(
(res: any) => {
console.log('Success');
},
(err: any) => {
console.error('Error:', err);
}
);
this.emittedNotification = true;
}
this.status = this.backend.getStatus();
});
}
chooseMethod(coin: CryptoUnits): void {
this.backend.setPaymentMethod(coin);
}
async get(): Promise<void> {
const res = await this.backend.setInvoice(this.paymentSelector);
this.status = this.backend.getStatus();
this.backend.getConfirmation().catch();
this.ready = true;
}
}