navbar.ts 1.7 KB
import {Component, Inject} from "ng-forward";


import {Session, AuthService, IAuthEvents} from "./../auth";
import {User} from "./../../models/interfaces";

@Component({
    selector: "acme-navbar",
    templateUrl: "app/components/navbar/navbar.html"
})
@Inject("moment", "$modal", "AuthService", "Session", "$scope", "$state", "AUTH_EVENTS")
export class Navbar {

    private currentUser: User;
    private modalInstance: any = null;
    /**
     *
     */
    constructor(
        private moment: moment.MomentStatic,
        private $modal: any,
        private authService: AuthService,
        private session: Session,
        private $scope: ng.IScope,
        private $state: ng.ui.IStateService,
        private AUTH_EVENTS: IAuthEvents
    ) {

        this.currentUser = session.currentUser();

        $scope.$on(AUTH_EVENTS.loginSuccess, () => {
            if (this.modalInstance) {
                this.modalInstance.close();
                this.modalInstance = null;
            }

            this.$state.go(this.$state.current, {}, { reload: true }); //TODO move to auth
        });

        $scope.$on(AUTH_EVENTS.logoutSuccess, () => {
            this.currentUser = this.session.currentUser();
        });

    }

    openLogin() {
        this.modalInstance = this.$modal.open({
            templateUrl: 'app/components/auth/login.html',
            controller: 'AuthController',
            controllerAs: 'vm',
            bindToController: true
        });
    };

    logout() {
        this.authService.logout();
        this.$state.go(this.$state.current, {}, { reload: true });  //TODO move to auth
    };



    activate() {
        if (!this.currentUser) {
            this.openLogin();
        }
    }

}