@@ -12,7 +12,8 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
1212 /**
1313 * Grabs the "request" function from the http client.
1414 */
15- const { abortableRequest : httpClientAbortableRequest } = useHttpClient ( ) ;
15+ const { abortableRequest : httpClientAbortableRequest , request : httpClientRequest } =
16+ useHttpClient ( ) ;
1617
1718 // The state of the request.
1819 const [ state , dispatch ] = useReducer < Reducer < HttpRequestState < HttpResponseT > , HttpReqActionType > > (
@@ -89,7 +90,7 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
8990 /**
9091 * Performs the http request allowing to abort it.
9192 */
92- const request = useCompareCallback (
93+ const abortableRequest = useCompareCallback (
9394 (
9495 paramsOverride ?: Partial < PerformHttpRequestParams < HttpRequestBodyT , HttpResponseT > >
9596 ) : UseHttpAbortableRequestReturn < HttpResponseT > => {
@@ -119,6 +120,36 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
119120 fastCompare
120121 ) ;
121122
123+ /**
124+ * Performs the http request.
125+ */
126+ const request = useCompareCallback (
127+ (
128+ paramsOverride ?: Partial < PerformHttpRequestParams < HttpRequestBodyT , HttpResponseT > >
129+ ) : Promise < HttpResponseT > => {
130+ safelyDispatch ( requestInit ( ) ) ;
131+
132+ const mergedParams = paramsOverride
133+ ? mergeParams ( performHttpRequestParams , paramsOverride )
134+ : performHttpRequestParams ;
135+ const reqResult = httpClientRequest < HttpResponseT , HttpRequestBodyT > ( mergedParams ) ;
136+
137+ // Listen request to be successfully resolved or reject and
138+ // update the state accordingly.
139+ reqResult
140+ . then ( ( response ) => {
141+ safelyDispatch ( requestSuccess ( response ) ) ;
142+ } )
143+ . catch ( ( error ) => {
144+ safelyDispatch ( requestError ( error ) ) ;
145+ } ) ;
146+
147+ return reqResult ;
148+ } ,
149+ [ httpClientRequest , performHttpRequestParams , safelyDispatch ] ,
150+ fastCompare
151+ ) ;
152+
122153 /**
123154 * Keeps track of the mounting state of the component.
124155 */
@@ -139,5 +170,5 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
139170 fastCompare
140171 ) ;
141172
142- return [ state , request ] ;
173+ return [ state , abortableRequest , request ] ;
143174} ;
0 commit comments