zgo/src/app/xeroreg/xeroreg.component.ts

126 lines
3.0 KiB
TypeScript

import { Component, OnInit } from '@angular/core';
import { Router, ActivatedRoute } from '@angular/router';
import { UserService } from '../user.service';
import { XeroService } from '../xero.service';
import { Owner } from '../owner.model';
import { Observable } from 'rxjs';
import { LanguageService } from '../language.service';
import { LanguageData } from '../language.model';
var Buffer = require('buffer/').Buffer;
function sleep(ms:number) {
return new Promise(resolve => setTimeout(resolve, ms));
}
async function redirect(r: Router) {
await sleep(2000);
r.navigate(['/shop']);
}
@Component({
selector: 'app-xeroreg',
templateUrl: './xeroreg.component.html',
styleUrls: ['./xeroreg.component.css']
})
export class XeroRegComponent implements OnInit {
public owner:Owner = {
address: '',
name: '',
currency: '',
tax: false,
taxValue:0,
vat: false,
vatValue: 0,
first: '',
last: '',
email: '',
street: '',
city: '',
state: '',
postal: '',
phone: '',
paid: false,
website: '',
country: '',
zats: false,
invoices: false,
expiration: new Date(Date.now()).toISOString(),
payconf: false,
viewkey: '',
crmToken: ''
};
public ownerUpdate:Observable<Owner>;
public flag: boolean = false;
// -------------------------------------
//
// Language Support
//
vE = {
xeroConnecting2xero : '',
xeroConnected2xero : '',
}
//
constructor(
private languageService : LanguageService,
public xeroService: XeroService,
public userService: UserService,
private router: Router,
private activatedRoute: ActivatedRoute
) {
this.ownerUpdate = userService.ownerUpdate;
this.ownerUpdate.subscribe((owner) => {
this.owner = owner;
});
this.userService.findUser();
}
ngOnInit(): void {
this.chgUILanguage();
}
ngAfterViewInit(): void {
this.ownerUpdate.subscribe((owner) => {
this.owner = owner;
this.activatedRoute.queryParams.subscribe((params) => {
console.log(params);
if (params.state === this.owner.address.substring(0,6)) {
this.xeroService.getXeroAccessToken(params.code, this.owner.address).subscribe(tokenData => {
if (tokenData.status == 200) {
console.log(tokenData.body!);
this.flag = true;
redirect(this.router);
} else {
console.log('Error: '+tokenData.status);
this.flag = false;
}
});
} else {
console.log('Error: State mismatch');
}
});
});
}
chgUILanguage(){
console.log('XERO.chgUILanguage Called ');
this.languageService.getViewElements('xero').subscribe(
response => {
console.log('Received >> ', response );
console.log('Language Code : ', response.language);
console.log('Component Name : ',response.component);
console.log('Language data : ',response.data);
this.vE.xeroConnecting2xero = response.data.xero_connecting_2xero;
this.vE.xeroConnected2xero = response.data.xero_connected_2xero;
},
error => { console.log('Error >> ',error); }
);
}
}