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

export interface EditableDisplayNameContextValue {
    debouncedRefetch: (page: number, pageSize: number) => void;
    page: number;
    pageSize: number;
}

const EditableDisplayNameContext = createContext<
    EditableDisplayNameContextValue | undefined
>(undefined);

export const EditableDisplayNameProvider: React.FC<
    React.PropsWithChildren<{ value: EditableDisplayNameContextValue }>
> = ({ value, children }) => (
    <EditableDisplayNameContext.Provider value={value}>
        {children}
    </EditableDisplayNameContext.Provider>
);

export const useEditableDisplayNameContext = () => {
    const context = useContext(EditableDisplayNameContext);
    if (!context) {
        throw new Error(
            'useEditableDisplayNameContext must be used within an EditableDisplayNameProvider'
        );
    }
    return context;
};
