import { router } from '@inertiajs/react';

interface UseFilterParamsOptions {
    baseUrl: string;
    onFilterChange?: (params: URLSearchParams) => void;
}

/**
 * Custom hook for managing filter parameters in URL
 */
export function useFilterParams({
    baseUrl,
    onFilterChange,
}: UseFilterParamsOptions) {
    const updateFilter = (key: string, value: string, resetPage = true) => {
        const params = new URLSearchParams(window.location.search);

        if (value && value !== 'all') {
            params.set(key, value);
        } else {
            params.delete(key);
        }

        if (resetPage) {
            params.delete('page');
        }

        if (onFilterChange) {
            onFilterChange(params);
        }

        router.visit(`${baseUrl}?${params.toString()}`);
    };

    const updatePage = (page: number) => {
        const params = new URLSearchParams(window.location.search);
        params.set('page', page.toString());
        router.visit(`${baseUrl}?${params.toString()}`);
    };

    const search = (value: string) => {
        updateFilter('search', value);
    };

    return { updateFilter, updatePage, search };
}
