forked from polka_billy/porridger
42 lines
944 B
TypeScript
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
|