import { Component, OnInit, Input } from '@angular/core';
import { TriggersService, BodyTrigger } from 'src/app/core/api';
import { Observable } from 'rxjs';
import { ResourceLoader } from '@angular/compiler';
import { FormBuilder, FormGroup, Validators } from '@angular/forms';
import { first } from 'rxjs/operators';
import { invalid } from '@angular/compiler/src/render3/view/util';
import { MatSnackBar } from '@angular/material/snack-bar';

@Component({
  selector: 'app-trigger',
  templateUrl: './trigger.component.html',
  styleUrls: ['./trigger.component.scss'],
})
export class TriggerComponent implements OnInit {
  @Input() hoodId: number;
  triggers$: Observable<Array<any>>;
  regexForm: FormGroup;

  constructor(
    private triggersService: TriggersService,
    private formBuilder: FormBuilder,
    private snackBar: MatSnackBar
  ) {}

  ngOnInit(): void {
    this.reload();
    this.regexForm = this.formBuilder.group({
      regex: ['', Validators.required],
    });
  }

  private reload() {
    this.triggers$ = this.triggersService.getTriggers(this.hoodId);
  }

  onEdit(triggerId) {}

  onDelete(triggerId) {
    this.triggersService.deleteTrigger(triggerId, this.hoodId).subscribe(() => {
      this.reload();
    });
  }

  onSubmit() {
    if (this.regexForm.invalid) {
      return;
    }

    this.triggersService
      .createTrigger(this.hoodId, {
        pattern: this.regexForm.controls.regex.value,
      })
      .pipe(first())
      .subscribe(
        (data) => {
          this.regexForm.reset();
          this.reload();
        },
        (error) => {
          this.snackBar.open('Invalid regular expression', 'Close', {
            duration: 2000,
          });
        }
      );
  }
}