import { HttpClient } from '@angular/common/http';
import { Injectable } from '@angular/core';
import { Router } from '@angular/router';

declare var TeleniaWidget: any;

@Injectable({
  providedIn: 'root',
})
export class WidgetService {
  widgetConf: any = null;
  client!: any;
  widgetId = 'widget_default';
  serverUrl = 'https://example.teleniasoftware.com';

  constructor(private router: Router, private http: HttpClient) {}

  widgetConfiguration() {
    // istanzio la widget
    this.client = new TeleniaWidget.Widget(
      null,
      {
        configurationJson: this.widgetId,
        configurationUrl: this.serverUrl,
        widgetId: this.widgetId,
      },
      {
        sendVisitUri: true,
      }
    );

    console.log('Widget:', this.client);

    // non appena avrò il client appena istanziato disponibile ....
    this.client.onLoadClientComplete(() => {
      // -> mi sottoscrivo agli eventi relativi allo stato della connessione
      this.client.getConntectionEvent().subscribe((connectionEvent: any) => {
        console.log(connectionEvent);
        console.log(`Connection's state changed: ${connectionEvent}`);
      });

      let webrtc = this.client.getWebrtc();

      if (!webrtc) {
        // attach WebRTC Manager on client
        webrtc = this.client.attachWebrtcManager();
      }
    });

    this.router.navigate(['/dashboard']);
  }

  // metodo per recuperare il client istanziato all'interno di questo servizio da qualsiasi punto dell'applicativo in cui potrei averne bisogno
  getClient() {
    return this.client;
  }

  // metodo per recupere l'url
  getServerUrl() {
    return this.serverUrl;
  }

  getWidgetId(){
    return this.widgetId;
  }

}
