porridger/front/src/hooks/api/useBook.ts

42 lines
944 B
TypeScript

import { useCallback } from 'react'
import { isObject } from '../../utils/types'
import { useSendWithButton } from '..'
import { composeBookURL, processBook } from '../../api/book'
type BookResponse = {
Success: boolean
}
const isBookResponse = (obj: unknown): obj is BookResponse => (
isObject(obj, {
'Success': 'boolean'
})
)
function useBook() {
const { doSend, button } = useSendWithButton('Забронировать',
'Забронировано',
true,
composeBookURL(),
'POST',
true,
isBookResponse,
processBook
)
const handleBook = useCallback((id: number) => {
void doSend({
body: JSON.stringify({
id
}),
headers: {
'Content-Type': 'application/json'
}
})
}, [doSend])
return { handleBook, bookButton: button }
}
export default useBook