From 28012ee2a9ba558c78a548c4c28dfe344af8dab8 Mon Sep 17 00:00:00 2001 From: Rene Vergara Date: Fri, 12 May 2023 09:02:45 -0500 Subject: [PATCH] Modify services to use new API endpoints --- README.md | 2 ++ src/app/app.component.ts | 2 -- src/app/auth-guard.service.ts | 44 ++++++++++++--------------- src/app/fullnode.service.ts | 6 ++-- src/app/language.service.ts | 21 ++++++++++--- src/app/login/login.component.html | 2 +- src/app/login/login.component.ts | 49 ++++++++++++++---------------- src/app/receipt.service.ts | 2 +- src/app/scan/scan.component.ts | 18 +++++------ src/app/user.service.ts | 33 ++++++++++++-------- tsconfig.json | 2 +- 11 files changed, 96 insertions(+), 85 deletions(-) diff --git a/README.md b/README.md index 29fdabc..f205807 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # ZGo - The Zcash Register +[![Please don't upload to GitHub](https://nogithub.codeberg.page/badge.svg)](https://nogithub.codeberg.page) + A Point-of-Sale application for accepting payments in [Zcash](https://z.cash/) Visit our [ZGo Homepage](https://zgo.cash/) for more details. diff --git a/src/app/app.component.ts b/src/app/app.component.ts index f10db29..414b3dd 100644 --- a/src/app/app.component.ts +++ b/src/app/app.component.ts @@ -1,8 +1,6 @@ import { Component, OnInit } from '@angular/core'; import { LanguageService } from './language.service'; -import { LanguageData } from './language.model'; -//import { Post} from './posts/post.model'; @Component({ selector: 'app-root', diff --git a/src/app/auth-guard.service.ts b/src/app/auth-guard.service.ts index 4171975..9500c61 100644 --- a/src/app/auth-guard.service.ts +++ b/src/app/auth-guard.service.ts @@ -2,7 +2,8 @@ import { Injectable } from '@angular/core'; import { Router, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'; import {HttpClient, HttpParams} from '@angular/common/http'; import { UserService } from './user.service'; -import { Subscription, Observable } from 'rxjs'; +import { Observable } from 'rxjs'; + @Injectable() @@ -12,44 +13,39 @@ export class AuthGuardService { private paidUpdate: Observable; constructor( private router: Router, - private http: HttpClient, public userService: UserService ){ + this.userService.findUser(); this.paidUpdate = this.userService.paidUpdate; this.paidUpdate.subscribe((indicator) => { this.paid = indicator; }); } - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot) { const token = localStorage.getItem('s4z_token'); var path = route.url[0].path; if(token != null){ - this.userService.uZaddrUpdate. - subscribe((addr) => { - if (addr != null) { - //console.log(addr); - this.addr = addr; - } else { - console.log("No record for that token"); - } - }); if (path === 'biz') { - if (this.addr.length > 0) { - return true; - } else { - this.router.navigate(['/login']); - return false; - } + this.userService.checkUser()?.subscribe( response => { + if (response.status == 200 && response.body?.validated) { + return true; + } else { + this.router.navigate(['/login']); + return false; + } + }); } else { - if (this.addr != null && this.paid) { - return true; - } else { - this.router.navigate(['/login']); - return false; - } + this.userService.checkUser()?.subscribe( response => { + if (response.status == 200 && response.body?.validated && this.paid) { + return true; + } else { + this.router.navigate(['/login']); + return false; + } + }); } } else { console.log("Not logged in"); diff --git a/src/app/fullnode.service.ts b/src/app/fullnode.service.ts index e88b436..e937507 100644 --- a/src/app/fullnode.service.ts +++ b/src/app/fullnode.service.ts @@ -57,7 +57,7 @@ export class FullnodeService{ } getHeight(){ - let obs = this.http.get<{message: string, height: number}>(this.beUrl+'api/blockheight', { headers: this.reqHeaders, params: this.params }); + let obs = this.http.get<{message: string, height: number}>(this.beUrl+'blockheight', { headers: this.reqHeaders, params: this.params }); obs.subscribe((BlockData) => { this.dataStore.height = BlockData.height; this._heightUpdated.next(Object.assign({}, this.dataStore).height); @@ -69,7 +69,7 @@ export class FullnodeService{ getPrice(currency: string){ //var currency = 'usd'; const params = this.params.append('currency', currency); - let obs = this.http.get<{message: string, price: any}>(this.beUrl+'api/price', { headers:this.reqHeaders, params: params, observe: 'response'}); + let obs = this.http.get<{message: string, price: any}>(this.beUrl+'price', { headers:this.reqHeaders, params: params, observe: 'response'}); obs.subscribe((PriceData) => { if (PriceData.status == 200) { this.dataStore.price = PriceData.body!.price.price; @@ -84,7 +84,7 @@ export class FullnodeService{ } getAddr() { - let obs = this.http.get<{message: string, addr: string}>(this.beUrl+'api/getaddr', { headers: this.reqHeaders, params: this.params }); + let obs = this.http.get<{message: string, addr: string}>(this.beUrl+'getaddr', { headers: this.reqHeaders, params: this.params }); obs.subscribe((AddrData) => { this.dataStore.addr = AddrData.addr; diff --git a/src/app/language.service.ts b/src/app/language.service.ts index 34585b4..475eb45 100644 --- a/src/app/language.service.ts +++ b/src/app/language.service.ts @@ -19,6 +19,9 @@ export class LanguageService { // // URL for access MongoDB database from remote server private baseURL = ConfigData.Be_URL + 'api/getlang'; + private loginURL = ConfigData.Be_URL + 'getloginlang'; + private mainURL = ConfigData.Be_URL + 'getmainlang'; + private scanURL = ConfigData.Be_URL + 'getscanlang'; public zgoLanguage: string = ''; @@ -49,12 +52,20 @@ export class LanguageService { // Get component's text data from language database // const params = new HttpParams().append('session', this.session!); - return this.http.get(this.baseURL + - '/?lang=' + this.zgoLanguage + - '&component=' + viewName - ,{ headers : reqHeaders + if (viewName === 'login') { + return this.http.get(this.loginURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params}); + } else if (viewName === 'main') { + return this.http.get(this.mainURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params}); + } else if (viewName === 'scan') { + return this.http.get(this.scanURL + '/?lang=' + this.zgoLanguage, {headers: reqHeaders, params: params}); + } else { + return this.http.get(this.baseURL + + '/?lang=' + this.zgoLanguage + + '&component=' + viewName + ,{ headers : reqHeaders , params: params } - ); + ); + } } } diff --git a/src/app/login/login.component.html b/src/app/login/login.component.html index e4c35c6..bd55199 100644 --- a/src/app/login/login.component.html +++ b/src/app/login/login.component.html @@ -2,7 +2,7 @@ -

{{ vE.loginLastBlock }}{{ heightUpdate | async }}

+

{{ vE.loginLastBlock }} {{ heightUpdate | async }}

diff --git a/src/app/login/login.component.ts b/src/app/login/login.component.ts index 7f7afb0..5b4616e 100644 --- a/src/app/login/login.component.ts +++ b/src/app/login/login.component.ts @@ -56,7 +56,7 @@ export class LoginComponent implements OnInit, AfterViewInit { public uZaddrUpdate: Observable; public userUpdate: Observable; public ownerUpdate: Observable; - public txsUpdate: Observable; + //public txsUpdate: Observable; prompt: boolean = false; confirmedMemo: boolean = false; targetBlock: number = 0; @@ -65,7 +65,6 @@ export class LoginComponent implements OnInit, AfterViewInit { barMessage = 'Scanning blockchain for login memo, please wait.'; @ViewChild('stepper') private myStepper?: MatStepper; - entryForm: UntypedFormGroup; pinForm: UntypedFormGroup; // @@ -95,9 +94,6 @@ export class LoginComponent implements OnInit, AfterViewInit { ){ //this.fullnodeService.getAddr(); - this.entryForm = fb.group({ - selectedSession: [0.001, Validators.required] - }); this.pinForm = fb.group({ pinValue: [null, Validators.required] }); @@ -111,10 +107,10 @@ export class LoginComponent implements OnInit, AfterViewInit { this.ownerUpdate.subscribe((owner) => { this.owner = owner; }); - this.txsUpdate = userService.txUpdate; - this.txsUpdate.subscribe((txs) => { - this.txs = txs; - }); + //this.txsUpdate = userService.txUpdate; + //this.txsUpdate.subscribe((txs) => { + //this.txs = txs; + //}); } ngAfterViewInit(){ @@ -141,34 +137,35 @@ export class LoginComponent implements OnInit, AfterViewInit { this.chgUILanguage(); this.intervalHolder = setInterval(() => { this.fullnodeService.getHeight(); - //this.userService.findUser(); this.loginCheck(); this._changeDetectorRef.markForCheck(); }, 1000 * 60); } loginCheck(){ - this.userService.findUser(); - this.userUpdate.subscribe((user) => { - if (user.blocktime > 0) { - if(this.myStepper!.selectedIndex === 0) { - this.myStepper!.next(); - this.myStepper!.next(); - } else { - if(this.myStepper!.selectedIndex === 1){ + this.userService.checkUser()!.subscribe({ + next: (checkResponse) => { + if (checkResponse.status == 200) { + console.log('checkUser true'); + if(this.myStepper!.selectedIndex === 0) { + this.myStepper!.next(); this.myStepper!.next(); - } - } - //console.log('Log in found in blockchain!'); - if (user.validated) { - clearInterval(this.intervalHolder); - if (this.owner.paid) { - this.router.navigate(['/shop']); } else { + if(this.myStepper!.selectedIndex === 1){ + this.myStepper!.next(); + } + } + if(checkResponse.body!.validated) { + console.log('redirecting to biz'); + this.userService.getOwner(); this.router.navigate(['/biz']); + clearInterval(this.intervalHolder); + } else { + console.log('validated failed'); } } - } + }, + error: (error) => {console.log(error);} }); } diff --git a/src/app/receipt.service.ts b/src/app/receipt.service.ts index fe713e5..d17262b 100644 --- a/src/app/receipt.service.ts +++ b/src/app/receipt.service.ts @@ -79,7 +79,7 @@ export class ReceiptService { if (OrderDataResponse.status == 200) { this.dataStore.order = OrderDataResponse.body!.order; this._orderUpdated.next(Object.assign({}, this.dataStore).order); - this.userService.getOwner(this.dataStore.order.address); + this.userService.getOwner(); this.ownerUpdate.subscribe((owner) => { this.dataStore.owner = owner; this._nameUpdated.next(Object.assign({}, this.dataStore).owner.name); diff --git a/src/app/scan/scan.component.ts b/src/app/scan/scan.component.ts index 44d0804..ca5e0fc 100644 --- a/src/app/scan/scan.component.ts +++ b/src/app/scan/scan.component.ts @@ -5,7 +5,6 @@ import { DomSanitizer, SafeUrl } from '@angular/platform-browser'; import { NotifierService } from '../notifier.service'; import { LanguageService } from '../language.service'; -import { LanguageData } from '../language.model'; var QRCode = require('easyqrcodejs'); var URLSafeBase64 = require('urlsafe-base64'); @@ -148,13 +147,14 @@ export class ScanComponent implements OnInit{ } chgUILanguage(){ - console.log('SCAN.chgUILanguage Called '); - this.languageService.getViewElements('scan').subscribe( + //console.log('SCAN.chgUILanguage Called '); + this.languageService.getViewElements('scan').subscribe({ + next: response => { - console.log('Received >> ', response ); - console.log('Language Code : ', response.language); - console.log('Component Name : ',response.component); - console.log('Language data : ',response.data); + //console.log('Received >> ', response ); + //console.log('Language Code : ', response.language); + //console.log('Component Name : ',response.component); + //console.log('Language data : ',response.data); this.vE.scanScanqrCode = response.data.scan_scanqr_code; this.vE.scanTextInfo = response.data.scan_text_info; @@ -172,8 +172,8 @@ export class ScanComponent implements OnInit{ this.vE.scanOrButton = response.data.scan_or_button; }, - error => { console.log('Error >> ',error); } - ); + error: error => { console.log('Error >> ',error); } + }); } } diff --git a/src/app/user.service.ts b/src/app/user.service.ts index eba6832..02375a1 100644 --- a/src/app/user.service.ts +++ b/src/app/user.service.ts @@ -8,7 +8,6 @@ import { NotifierService } from './notifier.service'; import { User } from './user.model'; import { Owner } from './owner.model'; import { Country } from './country.model'; -import { Tx } from './tx.model'; import { ConfigData } from './configdata'; @@ -18,7 +17,7 @@ var Buffer = require('buffer/').Buffer; export class UserService{ beUrl = ConfigData.Be_URL; - private dataStore: { user: User, owner: Owner, txs: Tx[], countries: Country[]} = { + private dataStore: { user: User, owner: Owner, countries: Country[]} = { user: { address: '', session: '', @@ -41,7 +40,6 @@ export class UserService{ payconf: false, crmToken: '' }, - txs : [], countries: [] }; private uZaddr = ''; @@ -49,13 +47,11 @@ export class UserService{ private _uZaddrUpdated: BehaviorSubject = new BehaviorSubject(this.uZaddr); private _userUpdated: BehaviorSubject = new BehaviorSubject(this.dataStore.user); private _ownerUpdated: BehaviorSubject = new BehaviorSubject(this.dataStore.owner); - private _txsUpdated: BehaviorSubject = new BehaviorSubject(this.dataStore.txs); private _paidUpdated: BehaviorSubject = new BehaviorSubject(this.dataStore.owner.paid); private _countriesUpdated: BehaviorSubject = new BehaviorSubject(this.dataStore.countries); public readonly uZaddrUpdate: Observable = this._uZaddrUpdated.asObservable(); public readonly ownerUpdate: Observable = this._ownerUpdated.asObservable(); public readonly userUpdate: Observable = this._userUpdated.asObservable(); - public readonly txUpdate: Observable = this._txsUpdated.asObservable(); public readonly paidUpdate: Observable = this._paidUpdated.asObservable(); public readonly countriesUpdate: Observable = this._countriesUpdated.asObservable(); private reqHeaders: HttpHeaders; @@ -68,9 +64,9 @@ export class UserService{ //console.log('US:', this.reqHeaders); this.session = localStorage.getItem('s4z_token'); this.reqParams = new HttpParams().append('session', this.session!); - if (this.session != null) { - this.findUser(); - } + //if (this.session != null) { + //this.findUser(); + //} } getCountries() { @@ -84,6 +80,17 @@ export class UserService{ }); } + checkUser() { + if (this.session != null) { + console.log('calling checkUser'); + let obs = this.http.get<{validated: boolean}>(this.beUrl + 'checkuser', {headers: this.reqHeaders, params: this.reqParams, observe: 'response'}); + + return obs; + } else { + return null; + } + } + findUser() { if (this.session != null) { let obs = this.http.get<{message: string, user: any}>(this.beUrl+'api/user', { headers: this.reqHeaders, params: this.reqParams, observe: 'response'}); @@ -95,7 +102,7 @@ export class UserService{ //console.log(`US: Found user, returning it`); this._uZaddrUpdated.next(Object.assign({},this.dataStore).user.address); this._userUpdated.next(Object.assign({}, this.dataStore).user); - this.getOwner(Object.assign({},this.dataStore.user).address); + this.getOwner(); } else { this.dataStore.user = { address: '', @@ -140,7 +147,7 @@ export class UserService{ obs.subscribe({ next: () => { //console.log("Entra a console log"); - this.getOwner(this.dataStore.user.address); + this.getOwner(); }, error: (error) => { //console.log("Status is : [" + error.status + "]"); @@ -153,10 +160,10 @@ export class UserService{ return obs; } - getOwner(address: string) { + getOwner() { //console.log('getOwner', address); - const ownParams = this.reqParams.append('address', address) - let obs = this.http.get<{message:string, owner: any}>(this.beUrl+'api/owner', { headers: this.reqHeaders, params: ownParams, observe: 'response'}); + //const ownParams = this.reqParams.append('address', address) + let obs = this.http.get<{message:string, owner: any}>(this.beUrl+'api/owner', { headers: this.reqHeaders, params: this.reqParams, observe: 'response'}); obs.subscribe((OwnerDataResponse) => { //console.log('api/getowner', OwnerDataResponse.status); diff --git a/tsconfig.json b/tsconfig.json index 6200984..b5f615f 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "outDir": "./dist/out-tsc", "forceConsistentCasingInFileNames": true, "strict": true, - "noImplicitReturns": true, + "noImplicitReturns": false, "noFallthroughCasesInSwitch": true, "sourceMap": true, "declaration": false,