@@ -57,6 +57,7 @@ export default function makeFindMixin(options) {
57
57
const FETCH_PARAMS = `${ prefix } FetchParams`
58
58
const WATCH = `${ prefix } Watch`
59
59
const QUERY_WHEN = `${ prefix } QueryWhen`
60
+ const ERROR = `${ prefix } Error`
60
61
const FIND_ACTION = `find${ capitalized } `
61
62
const FIND_GETTER = `find${ capitalized } InStore`
62
63
const HAVE_ITEMS_BEEN_REQUESTED_ONCE = `have${ capitalized } BeenRequestedOnce`
@@ -71,7 +72,8 @@ export default function makeFindMixin(options) {
71
72
[ HAVE_ITEMS_LOADED_ONCE ] : false ,
72
73
[ WATCH ] : watch ,
73
74
[ QID ] : qid ,
74
- [ MOST_RECENT_QUERY ] : null
75
+ [ MOST_RECENT_QUERY ] : null ,
76
+ [ ERROR ] : null
75
77
}
76
78
// Should only be used with actual fetching API calls.
77
79
const getParams = ( { providedParams, params, fetchParams } ) => {
@@ -181,6 +183,9 @@ export default function makeFindMixin(options) {
181
183
return this . $store
182
184
. dispatch ( `${ serviceName } /find` , paramsToUse )
183
185
. then ( response => {
186
+ // To prevent thrashing, only clear ERROR on response, not on initial request.
187
+ this [ ERROR ] = null
188
+
184
189
this [ HAVE_ITEMS_LOADED_ONCE ] = true
185
190
const queryInfo = getQueryInfo ( paramsToUse , response )
186
191
// @ts -ignore
@@ -192,6 +197,10 @@ export default function makeFindMixin(options) {
192
197
this [ IS_FIND_PENDING ] = false
193
198
return response
194
199
} )
200
+ . catch ( error => {
201
+ this [ ERROR ] = error
202
+ return error
203
+ } )
195
204
}
196
205
} else {
197
206
if ( this [ MOST_RECENT_QUERY ] ) {
0 commit comments