porridger/front/src/hooks/useSendWithButton.ts

27 lines
756 B
TypeScript

import { useCallback } from 'react'
import { useSend } from '.'
import useSendButtonCaption from './useSendButtonCaption'
function useSendWithButton<R, T extends NonNullable<unknown>>(
initial: string,
result: string,
singular?: boolean,
...useSendArgs: Parameters<typeof useSend<R, T>>
) {
const { doSend, loading, error } = useSend(...useSendArgs)
const { update, ...button } = useSendButtonCaption(initial, loading, error, result, singular)
const doSendWithButton = useCallback(async (...args: Parameters<typeof doSend>) => {
const data = await doSend(...args)
update(data)
return data
}, [doSend, update])
return { doSend: doSendWithButton, button }
}
export default useSendWithButton