import { useCallback, useState } from "react";

export const useItemActionConfirm = (actionFn) => {
  const [item, setItem] = useState(null);

  const onActionConfirm = useCallback(() => {
    if (item) {
      actionFn.run(item);
      setItem(null);
    }
  }, [item, setItem, actionFn]);

  const onActionCancel = useCallback(() => {
    setItem(null);
  }, [setItem]);

  return [item, setItem, onActionConfirm, onActionCancel];
};

export const useActionConfirm = (actionFn, actionArgs) => {
  const [showConfirm, setShowConfirm] = useState(false);

  const onActionConfirm = useCallback(() => {
    if (showConfirm) {
      actionFn.run(actionArgs);
      setShowConfirm(false);
    }
  }, [showConfirm, setShowConfirm, actionFn, actionArgs]);

  const onActionCancel = useCallback(() => {
    setShowConfirm(false);
  }, [setShowConfirm]);

  return [showConfirm, setShowConfirm, onActionConfirm, onActionCancel];
};