import { Injectable } from '@angular/core';
import { Store, select } from '@ngrx/store';

import { RPCSubscriber } from '@loafer/ng-rpc/decorator';
import { LoggerService } from '@loafer/ng-logger/service';

import * as NoAuthProbeStore from '../store/noauth-probe';

import {
  NoAuthProbe,
} from '@overflow/commons-typescript/model/noauth';

@Injectable()
export class NoAuthProbeSubscriber {

  public constructor(
    private store: Store<NoAuthProbeStore.State>,
    private loggerService: LoggerService,
  ) {
  }

  @RPCSubscriber({method: 'NoAuthProbeService.onConnect'})
  public onConnect(noAuthProbe: NoAuthProbe): void {
    this.loggerService.debug('NoAuthProbeService.onConnect noAuthProbe:', noAuthProbe);

    this.store.dispatch(new NoAuthProbeStore.OnConnect(noAuthProbe));
  }

  @RPCSubscriber({method: 'NoAuthProbeService.onDisconnect'})
  public onDisconnect(noAuthProbe: NoAuthProbe): void {
    this.loggerService.debug('NoAuthProbeService.onDisconnect noAuthProbe:', noAuthProbe);

    this.store.dispatch(new NoAuthProbeStore.OnDisconnect(noAuthProbe));
  }
}
