import { Component, Inject } from '@angular/core';
import { MAT_DIALOG_DATA } from '@angular/material/dialog';
import { Task, TaskType } from 'api-types';
import { PostsService } from 'app/posts.services';

@Component({
    selector: 'app-task-settings',
    templateUrl: './task-settings.component.html',
    styleUrls: ['./task-settings.component.scss'],
    standalone: false
})
export class TaskSettingsComponent {
  task_key: TaskType;
  new_options = {};
  task: Task = null;

  constructor(private postsService: PostsService, @Inject(MAT_DIALOG_DATA) public data: {task: Task}) {
    this.task_key = this.data.task.key;
    this.task = this.data.task;
    if (!this.task.options) {
      this.task.options = {};
    }
  }

  ngOnInit(): void {
    this.getSettings();
  }

  getSettings(): void {
    this.postsService.getTask(this.task_key).subscribe(res => {
      this.task = res['task'];
      this.new_options = JSON.parse(JSON.stringify(this.task['options'])) || {};
    });
  }

  saveSettings(): void {
    this.postsService.updateTaskOptions(this.task_key, this.new_options).subscribe(() => {
      this.getSettings();
    }, () => {
      this.getSettings();
    });
  }

  optionsChanged(): boolean {
    return JSON.stringify(this.new_options) !== JSON.stringify(this.task.options);
  }
}
