diff --git a/CHANGELOG.md b/CHANGELOG.md index 31d5a77..31fc0fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -42,6 +42,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ### Fixed +- Fixed order memo for checkout - Fixed display of amounts in item list when using *zatoshis* - Fixed sorting of items in list - Fixed sorting of orders in list diff --git a/src/app/app-routing.module.ts b/src/app/app-routing.module.ts index 0d0bdac..b9348ce 100644 --- a/src/app/app-routing.module.ts +++ b/src/app/app-routing.module.ts @@ -8,6 +8,7 @@ import { InvoiceComponent } from './invoice/invoice.component'; import { ListOrdersComponent } from './listorders/listorders.component'; import { AuthGuardService } from './auth-guard.service'; import { NodeResolverService } from './node-resolver.service'; +import { PmtserviceComponent } from './pmtservice/pmtservice.component'; const routes: Routes = [ { path: '', component: LoginComponent, resolve: { response: NodeResolverService} }, @@ -17,6 +18,7 @@ const routes: Routes = [ { path: 'biz', component: BusinessComponent, canActivate: [AuthGuardService]}, { path: 'receipt/:orderId', component: ReceiptComponent}, { path: 'invoice/:orderId', component: InvoiceComponent}, + { path: 'pmtservice', component: PmtserviceComponent}, { path: 'login', component: LoginComponent, resolve: { response: NodeResolverService}} ]; diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 9183d10..d8373c9 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -45,6 +45,7 @@ import { FontAwesomeModule } from '@fortawesome/angular-fontawesome'; import { PromptInvoiceComponent } from './prompt-invoice/prompt-invoice.component'; import { PromptReceiptComponent } from './prompt-receipt/prompt-receipt.component'; import { NotifierComponent } from './notifier/notifier.component'; +import { PmtserviceComponent } from './pmtservice/pmtservice.component'; @NgModule({ declarations: [ @@ -71,7 +72,8 @@ import { NotifierComponent } from './notifier/notifier.component'; InvoiceComponent, PromptInvoiceComponent, PromptReceiptComponent, - NotifierComponent + NotifierComponent, + PmtserviceComponent ], imports: [ BrowserModule, diff --git a/src/app/checkout/checkout.component.html b/src/app/checkout/checkout.component.html index 401da48..3d7efbe 100644 --- a/src/app/checkout/checkout.component.html +++ b/src/app/checkout/checkout.component.html @@ -1,4 +1,5 @@ -
+
Scan to make payment @@ -14,7 +15,7 @@ - +
@@ -32,6 +33,31 @@
- +
+
+ + Can't scan?
Use this wallet link, or +
+ + +
+ + +
diff --git a/src/app/checkout/checkout.component.ts b/src/app/checkout/checkout.component.ts index 6a24355..7273f13 100644 --- a/src/app/checkout/checkout.component.ts +++ b/src/app/checkout/checkout.component.ts @@ -2,6 +2,8 @@ import { Inject, Component, OnInit, ViewEncapsulation} from '@angular/core'; import { MatDialog, MatDialogRef, MAT_DIALOG_DATA} from '@angular/material/dialog'; import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; +import { NotifierService } from '../notifier.service'; + var QRCode = require('easyqrcodejs'); var URLSafeBase64 = require('urlsafe-base64'); var Buffer = require('buffer/').Buffer; @@ -22,12 +24,14 @@ export class CheckoutComponent implements OnInit{ constructor( private dialogRef: MatDialogRef, private sanitizer: DomSanitizer, - @Inject(MAT_DIALOG_DATA) public data: { totalZec: number, addr: string, orderId: string} - ) { + @Inject(MAT_DIALOG_DATA) public data: { totalZec: number, addr: string, orderId: string}, + private notifierService : NotifierService ) { + + console.log("Entra a Constructor") this.address = data.addr; this.total = data.totalZec; this.orderId = data.orderId; - this.codeString = `zcash:${this.address}?amount=${this.total.toFixed(6)}&memo=${URLSafeBase64.encode(Buffer.from('Z-Go Order '.concat(this.orderId)))}`; + this.codeString = `zcash:${this.address}?amount=${this.total.toFixed(8)}&memo=${URLSafeBase64.encode(Buffer.from('ZGo Order::'.concat(this.orderId)))}`; this.zcashUrl = this.sanitizer.bypassSecurityTrustUrl(this.codeString); } @@ -36,13 +40,13 @@ export class CheckoutComponent implements OnInit{ { text: this.codeString, logo: "/assets/zcash.png", - width: 220, - height: 220, + width: 230, + height: 230, logoWidth: 60, logoHeight: 60, correctLevel: QRCode.CorrectLevel.H }); -// console.log(">>> " + qrcode); + console.log("mgOnInit - pasa"); } @@ -53,4 +57,48 @@ export class CheckoutComponent implements OnInit{ close() { this.dialogRef.close(false); } + + copyAddress() { + if (!navigator.clipboard) { +// alert("Copy functionality not supported"); + this.notifierService + .showNotification("Copy functionality not supported","Close","error"); + } + try { + navigator.clipboard.writeText(this.address); + } catch (err) { + this.notifierService + .showNotification("Error copying address","Close","error"); +// console.error("Error", err); + } + } + copyAmount() { + if (!navigator.clipboard) { +// alert("Copy functionality not supported"); + this.notifierService + .showNotification("Copy functionality not supported","Close","error"); + } + try { + navigator.clipboard.writeText(this.total.toString()); + } catch (err) { + this.notifierService + .showNotification("Error while copying ammount","Close","error"); +// console.error("Error", err); + } + } + + copyMemo() { + if (!navigator.clipboard) { +// alert("Copy functionality not supported"); + this.notifierService + .showNotification("Copy functionality not supported","Close","error"); + } + try { + navigator.clipboard.writeText("ZGo Order::" + this.orderId); + } catch (err) { + this.notifierService + .showNotification("Error while copying Memo","Close","error"); +// console.error("Error", err); + } + } } diff --git a/src/app/order/order.component.ts b/src/app/order/order.component.ts index 3b408c6..6f74da7 100644 --- a/src/app/order/order.component.ts +++ b/src/app/order/order.component.ts @@ -124,7 +124,7 @@ export class OrderComponent implements OnInit{ this.notifierService .showNotification("Order successfully cancelled!", "Close","success"); - });; + }); } else { console.log('Returning to page'); } @@ -227,6 +227,12 @@ export class OrderComponent implements OnInit{ // + " => (" + item.name +")"); this.orderService.updateOrder(item.line_id,lines); this.orderService.getOrder(); + if ( this.order.lines.length == 0 ) { + this.orderService.cancelOrder(this.order._id!) + .subscribe((response) => { + this.orderService.getOrder(); + }); + } } else { console.log('Returning to order'); diff --git a/src/app/pmtservice/pmtservice.component.css b/src/app/pmtservice/pmtservice.component.css new file mode 100644 index 0000000..e69de29 diff --git a/src/app/pmtservice/pmtservice.component.html b/src/app/pmtservice/pmtservice.component.html new file mode 100644 index 0000000..d7bbf3a --- /dev/null +++ b/src/app/pmtservice/pmtservice.component.html @@ -0,0 +1 @@ +

{{ pmtData.ownerId }}

diff --git a/src/app/pmtservice/pmtservice.component.spec.ts b/src/app/pmtservice/pmtservice.component.spec.ts new file mode 100644 index 0000000..8b1c67b --- /dev/null +++ b/src/app/pmtservice/pmtservice.component.spec.ts @@ -0,0 +1,23 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PmtserviceComponent } from './pmtservice.component'; + +describe('PmtserviceComponent', () => { + let component: PmtserviceComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + declarations: [ PmtserviceComponent ] + }) + .compileComponents(); + + fixture = TestBed.createComponent(PmtserviceComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/pmtservice/pmtservice.component.ts b/src/app/pmtservice/pmtservice.component.ts new file mode 100644 index 0000000..543dc24 --- /dev/null +++ b/src/app/pmtservice/pmtservice.component.ts @@ -0,0 +1,36 @@ +import { Component, OnInit } from '@angular/core'; +import { Router, ActivatedRoute, Params } from "@angular/router"; +import { PmtData } from "./pmtservice.model" + +@Component({ + selector: 'app-pmtservice', + templateUrl: './pmtservice.component.html', + styleUrls: ['./pmtservice.component.css'] +}) + +export class PmtserviceComponent implements OnInit { + + + public pmtData : PmtData = { + ownerId :'', + invoice: '', + amount: 0, + currency: '', + shortcode: '' + }; + + constructor(private activatedRoute: ActivatedRoute) {} + + ngOnInit() { + this.activatedRoute.queryParams.subscribe((params) => { + this.pmtData.ownerId = params["ownerid"]; + this.pmtData.invoice = params["invoice"]; + this.pmtData.amount = params["amount"]; + this.pmtData.currency = params["currency"]; + this.pmtData.shortcode = params["shortcode"]; + + console.log(this.pmtData); + }); + } + +} diff --git a/src/app/pmtservice/pmtservice.model.ts b/src/app/pmtservice/pmtservice.model.ts new file mode 100644 index 0000000..bcf64a0 --- /dev/null +++ b/src/app/pmtservice/pmtservice.model.ts @@ -0,0 +1,7 @@ +export interface PmtData { + ownerId: string; + invoice: string; + amount: number; + currency: string; + shortcode: string; +} diff --git a/src/app/pmtservice/url.txt b/src/app/pmtservice/url.txt new file mode 100644 index 0000000..1d562d8 --- /dev/null +++ b/src/app/pmtservice/url.txt @@ -0,0 +1 @@ +http://localhost:4200/pmtservice?ownerid=Rene&amount=30¤cy=USD&invoice=INV-003234&shortcode=abcde \ No newline at end of file