import type React from 'react';
import { createContext, useContext } from 'react';

import { isNil } from 'lodash-es';

type LimitedEditContextType = {
  isLimitedEdit: boolean;
};

const LimitedEditContext = createContext<LimitedEditContextType | undefined>(
  undefined,
);

type LimitedEditProviderProps = {
  children: React.ReactNode;
  isLimitedEdit: boolean;
};

export const LimitedEditProvider: React.FC<LimitedEditProviderProps> = ({
  children,
  isLimitedEdit,
}) => {
  return (
    <LimitedEditContext.Provider value={{ isLimitedEdit }}>
      {children}
    </LimitedEditContext.Provider>
  );
};

export const useLimitedEdit = (): LimitedEditContextType => {
  const context = useContext(LimitedEditContext);
  if (isNil(context)) {
    throw new Error('useLimitedEdit must be used within a LimitedEditProvider');
  }
  return context;
};
