import { Component, OnInit } from '@angular/core';
import { Subject } from 'rxjs/Subject';
import { BehaviorSubject } from 'rxjs/BehaviorSubject';
import { Observable } from 'rxjs/Observable';
import { SessionUser, User } from '../../user/user.model';
import { AuthService } from '../../user/auth.service';
import { ActivatedRoute, Router } from '@angular/router';
import { GroupService } from '../../group/group.service';
import { GroupCreateInput, GroupEditInput } from '../../group/group.model';
@Component({
selector: 'civ-group-edit-page',
template: `
`,
styles: []
})
export class GroupEditPageComponent implements OnInit {
adminEmailQuery$: Subject = new BehaviorSubject('');
adminSearchResult$: Observable;
error: string = '';
savePending: boolean = false;
authUser$: Observable;
constructor(private authSvc: AuthService, private router: Router, private route: ActivatedRoute, private groupSvc: GroupService) {
this.adminSearchResult$ = this.authSvc.getUserByEmail(
this.adminEmailQuery$.skip(1).debounceTime(500)
);
this.authUser$ = this.authSvc.sessionUser$;
}
ngOnInit() {
}
submit(input: GroupCreateInput) {
this.savePending = true;
if (!input.adminId) {
this.authSvc.requestAuthModal('We need you to sign in to create a group.');
}
this.groupSvc.createGroup(input).subscribe(result => {
this.savePending = false;
if (result.success == true) {
this.router.navigate([ 'group', result.groupId, 'admin' ]);
} else {
this.error = result.error;
}
}, err => {
this.error = err.message;
})
}
saveChanges(input: GroupEditInput) {
this.groupSvc.saveChanges(input);
}
}