@@ -4,20 +4,15 @@ export function api_fetch(
44 { schema, params } ,
55 { request_error_function, response_function, response_error_function } = { } ,
66) {
7- const errors_store = use_errors_store ( )
7+ const feedback_store = use_feedback_store ( )
88 const geode_store = use_geode_store ( )
99
1010 const body = params || { }
1111
1212 const { valid, error } = validate_schema ( schema , body )
1313
1414 if ( ! valid ) {
15- errors_store . add_error ( {
16- code : 400 ,
17- route : schema . $id ,
18- name : "Bad request" ,
19- description : error ,
20- } )
15+ feedback_store . add_error ( 400 , schema . $id , "Bad request" , error )
2116 throw new Error ( schema . $id . concat ( ": " , error ) )
2217 }
2318
@@ -34,41 +29,46 @@ export function api_fetch(
3429 if ( schema . max_retry ) {
3530 request_options . max_retry = schema . max_retry
3631 }
37- return useFetch ( schema . $id , {
38- baseURL : geode_store . base_url ,
39- ...request_options ,
40- onRequestError ( { error } ) {
41- geode_store . stop_request ( )
42- errors_store . add_error ( {
43- code : error . code ,
44- route : schema . $id ,
45- name : error . message ,
46- description : error . stack ,
47- } )
48- if ( request_error_function ) {
49- request_error_function ( error )
50- }
51- } ,
52- onResponse ( { response } ) {
53- if ( response . ok ) {
54- geode_store . stop_request ( )
55- if ( response_function ) {
56- response_function ( response )
32+ return new Promise ( ( resolve , reject ) => {
33+ useFetch ( schema . $id , {
34+ baseURL : geode_store . base_url ,
35+ ...request_options ,
36+ async onRequestError ( { error } ) {
37+ await geode_store . stop_request ( )
38+ await feedback_store . add_error (
39+ error . code ,
40+ schema . $id ,
41+ error . message ,
42+ error . stack ,
43+ )
44+ if ( request_error_function ) {
45+ await request_error_function ( error )
46+ }
47+ reject ( error )
48+ } ,
49+ async onResponse ( { response } ) {
50+ if ( response . ok ) {
51+ await geode_store . stop_request ( )
52+ if ( response_function ) {
53+ await response_function ( response )
54+ }
55+ resolve ( response )
5756 }
58- }
59- } ,
60- onResponseError ( { response } ) {
61- geode_store . stop_request ( )
62- errors_store . add_error ( {
63- code : response . status ,
64- route : schema . $id ,
65- name : response . _data . name ,
66- description : response . _data . description ,
67- } )
68- if ( response_error_function ) {
69- response_error_function ( response )
70- }
71- } ,
57+ } ,
58+ async onResponseError ( { response } ) {
59+ await geode_store . stop_request ( )
60+ await feedback_store . add_error (
61+ response . status ,
62+ schema . $id ,
63+ response . _data . name ,
64+ response . _data . description ,
65+ )
66+ if ( response_error_function ) {
67+ await response_error_function ( response )
68+ }
69+ reject ( response )
70+ } ,
71+ } )
7272 } )
7373}
7474
0 commit comments