45 lines
1.2 KiB
JavaScript
45 lines
1.2 KiB
JavaScript
|
|
import { useSelector } from 'react-redux'
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to get the currently selected library IDs
|
||
|
|
* Returns an array of library IDs that should be used for filtering data
|
||
|
|
* If no libraries are selected (empty array), returns all user accessible libraries
|
||
|
|
*/
|
||
|
|
export const useSelectedLibraries = () => {
|
||
|
|
const { userLibraries, selectedLibraries } = useSelector(
|
||
|
|
(state) => state.library,
|
||
|
|
)
|
||
|
|
|
||
|
|
// If no specific selection, default to all accessible libraries
|
||
|
|
if (selectedLibraries.length === 0 && userLibraries.length > 0) {
|
||
|
|
return userLibraries.map((lib) => lib.id)
|
||
|
|
}
|
||
|
|
|
||
|
|
return selectedLibraries
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to get library filter parameters for data provider queries
|
||
|
|
* Returns an object that can be spread into query parameters
|
||
|
|
*/
|
||
|
|
export const useLibraryFilter = () => {
|
||
|
|
const selectedLibraryIds = useSelectedLibraries()
|
||
|
|
|
||
|
|
// If user has access to only one library or no specific selection, no filter needed
|
||
|
|
if (selectedLibraryIds.length <= 1) {
|
||
|
|
return {}
|
||
|
|
}
|
||
|
|
|
||
|
|
return {
|
||
|
|
libraryIds: selectedLibraryIds,
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Hook to check if a specific library is currently selected
|
||
|
|
*/
|
||
|
|
export const useIsLibrarySelected = (libraryId) => {
|
||
|
|
const selectedLibraryIds = useSelectedLibraries()
|
||
|
|
return selectedLibraryIds.includes(libraryId)
|
||
|
|
}
|