• Custom hook for filtering and sorting repository data

    This hook provides:

    • Search functionality
    • Language filtering
    • Sorting by different criteria
    • Pagination

    Parameters

    • repositories: Repository[]

      Array of repositories to filter and sort

    Returns {
        currentPage: number;
        getFilteredAndSortedRepos: () => {
            paginatedRepos: Repository[];
            totalCount: number;
        };
        getUniqueLanguages: () => string[];
        itemsPerPage: number;
        searchQuery: string;
        selectedLanguage: string;
        setCurrentPage: Dispatch<SetStateAction<number>>;
        setSearchQuery: Dispatch<SetStateAction<string>>;
        setSelectedLanguage: Dispatch<SetStateAction<string>>;
        setSortBy: Dispatch<SetStateAction<"stars" | "forks" | "updated">>;
        setSortOrder: Dispatch<SetStateAction<"asc" | "desc">>;
        sortBy: "stars" | "forks" | "updated";
        sortOrder: "asc" | "desc";
    }

    State and functions for filtering repositories

    • currentPage: number
    • getFilteredAndSortedRepos: () => { paginatedRepos: Repository[]; totalCount: number }
    • getUniqueLanguages: () => string[]
    • itemsPerPage: number
    • searchQuery: string
    • selectedLanguage: string
    • setCurrentPage: Dispatch<SetStateAction<number>>
    • setSearchQuery: Dispatch<SetStateAction<string>>
    • setSelectedLanguage: Dispatch<SetStateAction<string>>
    • setSortBy: Dispatch<SetStateAction<"stars" | "forks" | "updated">>
    • setSortOrder: Dispatch<SetStateAction<"asc" | "desc">>
    • sortBy: "stars" | "forks" | "updated"
    • sortOrder: "asc" | "desc"
    const {
    searchQuery,
    setSearchQuery,
    getFilteredAndSortedRepos
    } = useRepositoryFiltering(repositories);