UNPKG

ra-core

Version:

Core components of react-admin, a frontend Framework for building admin applications on top of REST services, using ES6, React

51 lines (43 loc) 1.36 kB
import { useStore } from '../../store/useStore'; import { SortPayload } from '../../types'; export const useSavedQueries = (resource: string) => { return useStore<SavedQuery[]>(`${resource}.savedQueries`, []); }; export interface SavedQuery { label: string; value: { filter?: any; displayedFilters?: any[]; sort?: SortPayload; perPage?: number; }; } export const extractValidSavedQueries = (savedQueries: SavedQuery[]) => { if (Array.isArray(savedQueries)) { return savedQueries.filter(query => isValidSavedQuery(query)); } return []; }; export const areValidSavedQueries = (savedQueries: SavedQuery[]) => { if ( Array.isArray(savedQueries) && savedQueries.every(query => isValidSavedQuery(query)) ) { return true; } }; export const isValidSavedQuery = (savedQuery: SavedQuery) => { if ( savedQuery.label && typeof savedQuery.label === 'string' && savedQuery.value && typeof Array.isArray(savedQuery.value.displayedFilters) && typeof savedQuery.value.perPage === 'number' && typeof savedQuery.value.sort?.field === 'string' && typeof savedQuery.value.sort?.order === 'string' && typeof savedQuery.value.filter === 'object' ) { return true; } return false; };