/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: BUSL-1.1
 */

import { get } from '@ember/object';
import { EmberChangeset as Changeset } from 'ember-changeset';
const CHANGES = '_changes';
export default class extends Changeset {
  pushObject(prop, value) {
    let val;
    if (typeof get(this, `${CHANGES}.${prop}`) === 'undefined') {
      val = get(this, `data.${prop}`);
      if (!val) {
        val = [];
      } else {
        val = val.toArray();
      }
    } else {
      val = this.get(prop).slice(0);
    }
    val.push(value);
    this.set(`${prop}`, val);
  }
  removeObject(prop, value) {
    let val;
    if (typeof get(this, `${CHANGES}.${prop}`) === 'undefined') {
      val = get(this, `data.${prop}`);
      if (typeof val === 'undefined') {
        val = [];
      } else {
        val = val.toArray();
      }
    } else {
      val = this.get(prop).slice(0);
    }
    const pos = val.indexOf(value);
    if (pos !== -1) {
      val.splice(pos, 1);
    }
    this.set(`${prop}`, val);
  }
}
