UNPKG

copay-crown

Version:

A Secure Crown Wallet

105 lines (84 loc) 3.14 kB
import { Component } from '@angular/core'; import { FormBuilder, FormGroup, Validators } from '@angular/forms'; import { Logger } from '../../../providers/logger/logger'; // providers import { AppProvider } from '../../../providers/app/app'; import { ConfigProvider } from '../../../providers/config/config'; import { EmailNotificationsProvider } from '../../../providers/email-notifications/email-notifications'; import { PlatformProvider } from '../../../providers/platform/platform'; import { PushNotificationsProvider } from '../../../providers/push-notifications/push-notifications'; // validators import { EmailValidator } from '../../../validators/email'; @Component({ selector: 'page-notifications', templateUrl: 'notifications.html', }) export class NotificationsPage { public emailForm: FormGroup; public appName: string; public usePushNotifications: boolean; public isIOSApp: boolean; public pushNotifications: boolean; public confirmedTxsNotifications: boolean; public emailNotifications: boolean; constructor( private formBuilder: FormBuilder, private configProvider: ConfigProvider, private appProvider: AppProvider, private platformProvider: PlatformProvider, private pushProvider: PushNotificationsProvider, private emailProvider: EmailNotificationsProvider, private logger: Logger ) { this.emailForm = this.formBuilder.group({ email: ['', Validators.compose([Validators.required, new EmailValidator(configProvider, emailProvider).isValid])] }); } ionViewDidLoad() { this.logger.info('ionViewDidLoad NotificationsPage'); this.updateConfig(); } private updateConfig() { let config = this.configProvider.get(); this.appName = this.appProvider.info.nameCase; this.usePushNotifications = this.platformProvider.isCordova; this.isIOSApp = this.platformProvider.isIOS && this.platformProvider.isCordova; this.pushNotifications = config.pushNotificationsEnabled; this.confirmedTxsNotifications = config.confirmedTxsNotifications ? config.confirmedTxsNotifications.enabled : false; this.emailForm.setValue({ email: this.emailProvider.getEmailIfEnabled(config) || '' }); this.emailNotifications = config.emailNotifications ? config.emailNotifications.enabled : false; }; public pushNotificationsChange() { let opts = { pushNotificationsEnabled: this.pushNotifications }; this.configProvider.set(opts); if (opts.pushNotificationsEnabled) this.pushProvider.init(); else this.pushProvider.disable(); }; public confirmedTxsNotificationsChange() { let opts = { confirmedTxsNotifications: { enabled: this.confirmedTxsNotifications } }; this.configProvider.set(opts); }; public emailNotificationsChange() { let opts = { enabled: this.emailNotifications, email: this.emailForm.value.email }; this.emailProvider.updateEmail(opts); }; public saveEmail() { this.emailProvider.updateEmail({ enabled: this.emailNotifications, email: this.emailForm.value.email }); }; }