| import { useState, useCallback } from 'react'; |
| import type { TPlugin } from 'librechat-data-provider'; |
|
|
| function usePluginDialogHelpers() { |
| const [maxPage, setMaxPage] = useState(1); |
| const [currentPage, setCurrentPage] = useState(1); |
| const [itemsPerPage, setItemsPerPage] = useState(1); |
| const [searchChanged, setSearchChanged] = useState(false); |
|
|
| const [searchValue, setSearchValue] = useState(''); |
| const [error, setError] = useState<boolean>(false); |
| const [errorMessage, setErrorMessage] = useState<string>(''); |
| const [showPluginAuthForm, setShowPluginAuthForm] = useState<boolean>(false); |
| const [selectedPlugin, setSelectedPlugin] = useState<TPlugin | undefined>(undefined); |
|
|
| const calculateColumns = (node: HTMLElement) => { |
| const width = node.offsetWidth; |
| let columns: number; |
| if (width < 501) { |
| setItemsPerPage(8); |
| return; |
| } else if (width < 640) { |
| columns = 2; |
| } else if (width < 1024) { |
| columns = 3; |
| } else { |
| columns = 4; |
| } |
| setItemsPerPage(columns * 2); |
| }; |
|
|
| const gridRef: (instance: HTMLDivElement | null) => void = useCallback( |
| (node) => { |
| if (node !== null) { |
| if (itemsPerPage === 1) { |
| calculateColumns(node); |
| } |
| const resizeObserver = new ResizeObserver(() => calculateColumns(node)); |
| resizeObserver.observe(node); |
| } |
| }, |
| [itemsPerPage], |
| ); |
|
|
| const handleSearch = (e: React.ChangeEvent<HTMLInputElement>) => { |
| setSearchValue(e.target.value); |
| setSearchChanged(true); |
| }; |
|
|
| const handleChangePage = (page: number) => { |
| setCurrentPage(page); |
| }; |
|
|
| return { |
| maxPage, |
| setMaxPage, |
| currentPage, |
| setCurrentPage, |
| itemsPerPage, |
| setItemsPerPage, |
| searchChanged, |
| setSearchChanged, |
| searchValue, |
| setSearchValue, |
| gridRef, |
| handleSearch, |
| handleChangePage, |
| error, |
| setError, |
| errorMessage, |
| setErrorMessage, |
| showPluginAuthForm, |
| setShowPluginAuthForm, |
| selectedPlugin, |
| setSelectedPlugin, |
| }; |
| } |
|
|
| export default usePluginDialogHelpers; |
|
|