import { NavModel } from '@grafana/data';
import { StoreState } from 'app/types';
import { getUrl } from 'app/core/selectors/location';
import { getNavModel } from 'app/core/selectors/navModel';

export const getDashboardNavModel = (state: StoreState): NavModel => {
  const url = getUrl(state.location);
  const navModel = getNavModel(state.navIndex, 'dashboards');
  const nav = { ...navModel };
  const node = nav.main.children?.find((item) => item.url === url);

  if (node) {
    nav.node = node;
  }

  // This needs to be copied to avoid mutating the store in a selector
  nav.main.children = [...(navModel.main.children ?? [])];

  for (const item of nav.main.children) {
    item.active = false;

    if (item.url === nav.node.url) {
      item.active = true;
    }
  }

  return nav;
};
