From d9c0eb9328e865b93dafbda60f3dccfbe31fd1fc Mon Sep 17 00:00:00 2001 From: Kamil Kisiela Date: Mon, 10 Oct 2016 22:12:34 +0200 Subject: [PATCH] Step 7.3: Create MessagesOptionsComponent --- .../pages/chat/messages-options.component.ts | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 client/imports/pages/chat/messages-options.component.ts diff --git a/client/imports/pages/chat/messages-options.component.ts b/client/imports/pages/chat/messages-options.component.ts new file mode 100644 index 0000000..2b8e422 --- /dev/null +++ b/client/imports/pages/chat/messages-options.component.ts @@ -0,0 +1,80 @@ +import {Component} from '@angular/core'; +import {NavParams, NavController, ViewController, AlertController} from 'ionic-angular'; +import {Meteor} from 'meteor/meteor'; +import {MeteorObservable} from 'meteor-rxjs'; +import template from './messages-options.component.html'; +import style from "./messages-options.component.scss"; +import {TabsContainerComponent} from '../tabs-container/tabs-container.component'; + +@Component({ + selector: 'messages-options', + template, + styles: [ + style + ] +}) +export class MessagesOptionsComponent { + constructor( + private navCtrl: NavController, + private viewCtrl: ViewController, + private alertCtrl: AlertController, + private params: NavParams + ) {} + + remove(): void { + const alert = this.alertCtrl.create({ + title: 'Remove', + message: 'Are you sure you would like to proceed?', + buttons: [ + { + text: 'Cancel', + role: 'cancel' + }, + { + text: 'Yes', + handler: () => { + this.handleRemove(alert); + return false; + } + } + ] + }); + + this.viewCtrl.dismiss().then(() => { + alert.present(); + }); + } + + private handleRemove(alert): void { + MeteorObservable.call('removeChat', this.params.get('chat')._id).subscribe({ + next: () => { + alert.dismiss().then(() => { + this.navCtrl.setRoot(TabsContainerComponent, {}, { + animate: true + }); + }); + }, + error: (e: Error) => { + alert.dismiss().then(() => { + if (e) return this.handleError(e); + + this.navCtrl.setRoot(TabsContainerComponent, {}, { + animate: true + }); + }); + } + }); + } + + private handleError(e: Error): void { + console.error(e); + + const alert = this.alertCtrl.create({ + title: 'Oops!', + message: e.message, + buttons: ['OK'] + }); + + alert.present(); + } +} \ No newline at end of file