|
|
|
|
|
|
|
|
import PropTypes from 'prop-types'; |
|
|
import PropTypes from 'prop-types'; |
|
|
import usePagingHook from '../hooks/usePagingHook'; |
|
|
import usePagingHook from '../hooks/usePagingHook'; |
|
|
import { getRequest } from '../request/jsonServerRequest'; |
|
|
import { getRequest } from '../request/jsonServerRequest'; |
|
|
|
|
|
import { FakeData } from '../db/db'; |
|
|
|
|
|
|
|
|
const apiCall = (page, itemsPerPage, sort, sortDirection, filter) => |
|
|
|
|
|
|
|
|
interface Props { |
|
|
|
|
|
children: React.ReactNode; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
const apiCall = (page: number, itemsPerPage: number, sort: string, sortDirection: string, filter: any) => |
|
|
getRequest('/items', { |
|
|
getRequest('/items', { |
|
|
_page: page, |
|
|
_page: page, |
|
|
_limit: itemsPerPage, |
|
|
_limit: itemsPerPage, |
|
|
|
|
|
|
|
|
...(filter && { q: filter }), |
|
|
...(filter && { q: filter }), |
|
|
}); |
|
|
}); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* @ts-ignore */ |
|
|
const Context = createContext(); |
|
|
const Context = createContext(); |
|
|
export const useRandomData = () => useContext(Context); |
|
|
export const useRandomData = () => useContext(Context); |
|
|
|
|
|
|
|
|
const RandomDataProvider = ({ children }) => { |
|
|
|
|
|
const setPage = (page) => { |
|
|
|
|
|
|
|
|
const RandomDataProvider: React.FC<Props> = ({ children }) => { |
|
|
|
|
|
const setPage = (page: number) => { |
|
|
setState({ ...state, page }); |
|
|
setState({ ...state, page }); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
const setItemsPerPage = (itemsPerPage) => { |
|
|
|
|
|
|
|
|
const setItemsPerPage = (itemsPerPage: number) => { |
|
|
setState({ ...state, itemsPerPage }); |
|
|
setState({ ...state, itemsPerPage }); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
const setSort = (sort) => { |
|
|
|
|
|
|
|
|
const setSort = (sort: string) => { |
|
|
setState({ ...state, sort }); |
|
|
setState({ ...state, sort }); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
const setFilter = (filter) => { |
|
|
|
|
|
|
|
|
const setFilter = (filter: string) => { |
|
|
setState({ ...state, filter }); |
|
|
setState({ ...state, filter }); |
|
|
}; |
|
|
}; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
state.itemsPerPage, |
|
|
state.itemsPerPage, |
|
|
state.sort, |
|
|
state.sort, |
|
|
state.filter, |
|
|
state.filter, |
|
|
|
|
|
/*@ts-ignore*/ |
|
|
apiCall |
|
|
apiCall |
|
|
); |
|
|
); |
|
|
return ( |
|
|
return ( |