function updateItem()

in dashboards-notifications/public/pages/Channels/components/ChannelControls.tsx [62:101]


  function updateItem(
    items: Array<{ field: string; display: string; checked: string }>,
    index: number,
    type: 'state' | 'type' | 'source',
    singleSelect?: boolean
  ) {
    if (!items[index]) return;
    const newItems = [...items];
    if (singleSelect) {
      const checked = newItems[index].checked === 'off' ? 'on' : 'off';
      newItems.forEach((item, i) => (item.checked = 'off'));
      newItems[index].checked = checked;
    } else {
      newItems[index].checked =
        newItems[index].checked === 'off' ? 'on' : 'off';
    }

    const newFilters = _.clone(props.filters);
    const checkedItems = newItems
      .filter((item) => item.checked === 'on')
      .map((item) => item.field);

    switch (type) {
      case 'state':
        setStateItems(newItems);
        newFilters.state = checkedItems[0];
        break;
      case 'source':
        setSourceItems(newItems);
        newFilters.source = checkedItems;
        break;
      case 'type':
        setTypeItems(newItems);
        newFilters.type = checkedItems;
        break;
      default:
        break;
    }
    props.onFiltersChange(newFilters);
  }