copay-crown
Version:
A Secure Crown Wallet
105 lines (84 loc) • 3.14 kB
text/typescript
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';
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
});
};
}