import { Component, ViewEncapsulation, OnInit } from '@angular/core';

import { Store } from '@ngrx/store';

import { Observable } from 'rxjs';
import { LoginToken } from '../../login/store/model';
import * as loginActions from '../../login/store/login.action';
import * as loginReducer from '../../login/store/login.reducer';
import * as loginSelector from '../../login/store/login.selector';
import { VERSIONS } from '../../../settings/settings';

@Component({
    selector: 'app-root',
    templateUrl: './app.component.html',
    styleUrls: [ './app.component.css' ],
    encapsulation: ViewEncapsulation.None
})
export class AppComponent implements OnInit {
    anisClientVersion: string = VERSIONS.anisClient;
    year = (new Date()).getFullYear();
    isAuthenticated: Observable<boolean>;
    loginToken: Observable<LoginToken>;

    constructor(private store: Store<loginReducer.State>) {
        this.isAuthenticated = store.select(loginSelector.isAuthenticated);
        this.loginToken = store.select(loginSelector.getLoginToken);
    }

    ngOnInit() {
        this.store.dispatch(new loginActions.LoginLocalStorageAction());
    }

    logout(): void {
        this.store.dispatch(new loginActions.LogoutAction());
    }
}