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

import { get, set } from '@ember/object';
import ObjectProxy from '@ember/object/proxy';
export default function (items, item, prop, value) {
  value = typeof value === 'undefined' ? get(item, prop) : value;
  const pos = items.findIndex(function (item) {
    return get(item, prop) === value;
  });
  if (pos !== -1) {
    // TODO: We only currently use this with EventSources
    // would be good to check this doesn't do anything unexpected
    // with other proxies.
    // Before we get there, we might have figured a better way to do
    // this anyway
    if (item instanceof ObjectProxy) {
      set(item, 'content', items.objectAt(pos));
    }
    items.replace(pos, 1, [item]);
    // TODO: Looks like with new proxies this isn't needed anymore
    // items.enumerableContentDidChange();
  }
  return item;
}
