import * as React from "react";
import { pluck, uniq } from "ramda";
import { quickBrickLogger } from "@applicaster/zapp-react-native-utils/logger";

import { getNonUniqueValues } from "./utils";

const logger = quickBrickLogger
  .addSubsystem("packages")
  .addSubsystem("zapp-react-native-ui-components")
  .addSubsystem("Components")
  .addSubsystem("FocusableList")
  .addSubsystem("index.tsx");

const getIds = pluck("id");

type Props = {
  componentId?: number | string;
  items: ZappEntry[] | ZappUIComponent[] | any[];
};

export const useCheckItemIdsForUnique = ({ componentId, items }: Props) => {
  React.useEffect(() => {
    const ids = getIds(items);
    const uniqIds = uniq(ids);

    if (ids.length !== uniqIds.length) {
      const nonUniqueIds = getNonUniqueValues(ids);

      logger.warning({
        message:
          "Items have non-unique ids. This is our requirement to backend.",
        data: {
          componentId,
          nonUniqueIds,
        },
      });
    }
  }, [items.length]);
};
