mirror of https://github.com/BTCPrivate/copay.git
Merge pull request #7723 from gabrielbazan7/feat/collectEmail
[V4] Feature: collect email
This commit is contained in:
commit
bf50e9c5e8
|
@ -37,7 +37,7 @@ import { BuyAndSellPage } from '../pages/buy-and-sell/buy-and-sell';
|
|||
import { CreateWalletPage } from '../pages/add/create-wallet/create-wallet';
|
||||
import { CopayersPage } from '../pages/add/copayers/copayers';
|
||||
import { DisclaimerPage } from '../pages/onboarding/disclaimer/disclaimer';
|
||||
import { EmailPage } from '../pages/onboarding/email/email';
|
||||
import { CollectEmailPage } from '../pages/onboarding/collect-email/collect-email';
|
||||
import { FeeWarningPage } from '../pages/send/fee-warning/fee-warning';
|
||||
import { IncomingDataMenuPage } from '../pages/incoming-data-menu/incoming-data-menu';
|
||||
import { ImportWalletPage } from '../pages/add/import-wallet/import-wallet';
|
||||
|
@ -241,7 +241,7 @@ let pages: any = [
|
|||
CustomAmountPage,
|
||||
CopayApp,
|
||||
DisclaimerPage,
|
||||
EmailPage,
|
||||
CollectEmailPage,
|
||||
FeeWarningPage,
|
||||
GlideraPage,
|
||||
FingerprintModalPage,
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
page-email {
|
||||
page-collect-email {
|
||||
text-align: center;
|
||||
.toolbar-background{
|
||||
background-color: transparent;
|
|
@ -0,0 +1,91 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { NavController, NavParams } from 'ionic-angular';
|
||||
import { Validators, FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { Logger } from '@nsalaun/ng-logger';
|
||||
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
|
||||
|
||||
//providers
|
||||
import { AppProvider } from '../../../providers/app/app';
|
||||
|
||||
//pages
|
||||
import { BackupRequestPage } from '../backup-request/backup-request';
|
||||
import { EmailNotificationsProvider } from '../../../providers/email-notifications/email-notifications';
|
||||
|
||||
@Component({
|
||||
selector: 'page-collect-email',
|
||||
templateUrl: 'collect-email.html',
|
||||
})
|
||||
export class CollectEmailPage {
|
||||
public showConfirmForm: boolean;
|
||||
|
||||
private walletId: string;
|
||||
private emailForm: FormGroup;
|
||||
private URL: string;
|
||||
private accept: boolean;
|
||||
|
||||
constructor(
|
||||
private navCtrl: NavController,
|
||||
private navParams: NavParams,
|
||||
private logger: Logger,
|
||||
private fb: FormBuilder,
|
||||
private appProvider: AppProvider,
|
||||
private http: HttpClient,
|
||||
private emailProvider: EmailNotificationsProvider
|
||||
) {
|
||||
this.walletId = this.navParams.data.walletId;
|
||||
let regex: RegExp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
|
||||
this.emailForm = this.fb.group({
|
||||
email: [null, [Validators.required, Validators.pattern(regex)]],
|
||||
accept: [true],
|
||||
});
|
||||
this.showConfirmForm = false;
|
||||
// Get more info: https://mashe.hawksey.info/2014/07/google-sheets-as-a-database-insert-with-apps-script-using-postget-methods-with-ajax-example/
|
||||
this.URL = "https://script.google.com/macros/s/AKfycbwQXvUw6-Ix0cRLMi7hBB8dlgNTCTgwfNIQRds6RypPV7dO8evW/exec";
|
||||
}
|
||||
|
||||
ionViewDidLoad() {
|
||||
this.logger.info('ionViewDidLoad CollectEmailPage');
|
||||
}
|
||||
|
||||
public skip(): void {
|
||||
this.goToBackupRequestPage()
|
||||
}
|
||||
|
||||
public showConfirm(): void {
|
||||
this.showConfirmForm = !this.showConfirmForm;
|
||||
}
|
||||
|
||||
public save(): void {
|
||||
|
||||
let opts = {
|
||||
enabled: true,
|
||||
email: this.emailForm.value.email
|
||||
};
|
||||
this.emailProvider.updateEmail(opts);
|
||||
|
||||
if (this.accept) this.collectEmail();
|
||||
this.goToBackupRequestPage();
|
||||
}
|
||||
|
||||
private goToBackupRequestPage(): void {
|
||||
this.navCtrl.push(BackupRequestPage, { walletId: this.walletId });
|
||||
}
|
||||
|
||||
private collectEmail(): void {
|
||||
const headers: any = new HttpHeaders({ 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' });
|
||||
const urlSearchParams = new HttpParams()
|
||||
.set('App', this.appProvider.info.nameCase)
|
||||
.set('Email', this.emailForm.value.email)
|
||||
.set('Platform', 'ionic.Platform.platform()') //TODO ionic.Platform.platform()
|
||||
.set('DeviceVersion', 'ionic.Platform.version()') //TODO ionic.Platform.version()
|
||||
|
||||
this.http.post(this.URL, null, {
|
||||
params: urlSearchParams,
|
||||
headers: headers
|
||||
}).subscribe(() => {
|
||||
this.logger.info("SUCCESS: Email collected");
|
||||
}, (err) => {
|
||||
this.logger.error("ERROR: Could not collect email");
|
||||
});
|
||||
};
|
||||
}
|
|
@ -1,70 +0,0 @@
|
|||
import { Component } from '@angular/core';
|
||||
import { NavController, NavParams, ActionSheetController } from 'ionic-angular';
|
||||
import { Validators, FormBuilder, FormGroup } from '@angular/forms';
|
||||
import { Logger } from '@nsalaun/ng-logger';
|
||||
|
||||
import { BackupRequestPage } from '../backup-request/backup-request';
|
||||
|
||||
@Component({
|
||||
selector: 'page-email',
|
||||
templateUrl: 'email.html',
|
||||
})
|
||||
export class EmailPage {
|
||||
public showConfirmForm: boolean;
|
||||
|
||||
private walletId: string;
|
||||
private emailForm: FormGroup;
|
||||
|
||||
constructor(
|
||||
private navCtrl: NavController,
|
||||
private navParams: NavParams,
|
||||
private actionSheet: ActionSheetController,
|
||||
private logger: Logger,
|
||||
private fb: FormBuilder
|
||||
) {
|
||||
this.walletId = this.navParams.data.walletId;
|
||||
let regex: RegExp = /^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/;
|
||||
this.emailForm = this.fb.group({
|
||||
email: [null, [Validators.required, Validators.pattern(regex)]],
|
||||
accept: [true],
|
||||
});
|
||||
this.showConfirmForm = false;
|
||||
}
|
||||
|
||||
ngOnInit() {
|
||||
};
|
||||
|
||||
ionViewDidLoad() {
|
||||
this.logger.info('ionViewDidLoad EmailPage');
|
||||
}
|
||||
|
||||
skip() {
|
||||
this.navCtrl.push(BackupRequestPage, { walletId: this.walletId });
|
||||
}
|
||||
|
||||
showActionSheet() {
|
||||
let actionSheet = this.actionSheet.create({
|
||||
buttons: [
|
||||
{
|
||||
text: 'Continue',
|
||||
role: 'destructor',
|
||||
handler: () => {
|
||||
this.logger.debug('Continue clicked');
|
||||
}
|
||||
}
|
||||
]
|
||||
});
|
||||
actionSheet.present();
|
||||
}
|
||||
|
||||
showConfirm() {
|
||||
// TODO Fix form validation
|
||||
if (!this.emailForm.value.email) return;
|
||||
this.showConfirmForm = !this.showConfirmForm;
|
||||
}
|
||||
|
||||
save() {
|
||||
// TODO SAVE EMAIL
|
||||
this.navCtrl.push(BackupRequestPage, { walletId: this.walletId });
|
||||
}
|
||||
}
|
|
@ -2,7 +2,7 @@ import { Component, ViewChild } from '@angular/core';
|
|||
import { NavController, LoadingController, Slides, Navbar } from 'ionic-angular';
|
||||
import { Logger } from '@nsalaun/ng-logger';
|
||||
|
||||
import { EmailPage } from '../email/email';
|
||||
import { CollectEmailPage } from '../collect-email/collect-email';
|
||||
import { ProfileProvider } from '../../../providers/profile/profile';
|
||||
|
||||
@Component({
|
||||
|
@ -56,7 +56,7 @@ export class TourPage {
|
|||
|
||||
this.profileProvider.createDefaultWallet().then((wallet) => {
|
||||
loading.dismiss();
|
||||
this.navCtrl.push(EmailPage, {walletId: wallet.id});
|
||||
this.navCtrl.push(CollectEmailPage, { walletId: wallet.id });
|
||||
})
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue