@@ -12,7 +12,8 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
12
12
/**
13
13
* Grabs the "request" function from the http client.
14
14
*/
15
- const { abortableRequest : httpClientAbortableRequest } = useHttpClient ( ) ;
15
+ const { abortableRequest : httpClientAbortableRequest , request : httpClientRequest } =
16
+ useHttpClient ( ) ;
16
17
17
18
// The state of the request.
18
19
const [ state , dispatch ] = useReducer < Reducer < HttpRequestState < HttpResponseT > , HttpReqActionType > > (
@@ -89,7 +90,7 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
89
90
/**
90
91
* Performs the http request allowing to abort it.
91
92
*/
92
- const request = useCompareCallback (
93
+ const abortableRequest = useCompareCallback (
93
94
(
94
95
paramsOverride ?: Partial < PerformHttpRequestParams < HttpRequestBodyT , HttpResponseT > >
95
96
) : UseHttpAbortableRequestReturn < HttpResponseT > => {
@@ -119,6 +120,36 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
119
120
fastCompare
120
121
) ;
121
122
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
+
122
153
/**
123
154
* Keeps track of the mounting state of the component.
124
155
*/
@@ -139,5 +170,5 @@ export const useHttpRequest = <HttpResponseT, HttpRequestBodyT = unknown>(
139
170
fastCompare
140
171
) ;
141
172
142
- return [ state , request ] ;
173
+ return [ state , abortableRequest , request ] ;
143
174
} ;
0 commit comments