import { Injectable } from '@angular/core';
import { NavigationEnd, Router, NavigationStart } from '@angular/router';


@Injectable({
  providedIn: 'root'
})
export class RouteService {

  history: any = [];
  isGoBack = false;

  constructor(
    private router: Router,
  ) {
    this.router.events.forEach((event) => {
      if (event instanceof NavigationEnd) {

        const lastRoute = this.history.slice(-1)

        if(event.url != lastRoute) {
          this.history.push(event.url)
        }

      }
    });

    window['RouteService'] = this

  }

  /**
   * @param url [string] incase no history to go back
   * @param option [Object] some options to the url
   */
  goBack(url = null, option: object = {}) {
    if(this.history.length >= 2) {
      this.history.pop();
      const goTo = this.history.pop();
      this.isGoBack = true;
      this.router.navigate([goTo]);
    } else if(url) {
      this.goTo({url})
    }

  }

  goTo({url}) {
    this.router.navigate([url]);
  }

}
