File tree 4 files changed +27
-3
lines changed
4 files changed +27
-3
lines changed Original file line number Diff line number Diff line change @@ -194,6 +194,7 @@ const config: Config & { [key: string]: mixed } = {
194
194
ENCRYPTED_USER : false ,
195
195
IDEMPOTENCY : false ,
196
196
ALLOW_CUSTOM_OBJECT_ID : false ,
197
+ PARSE_ERRORS : [ ] ,
197
198
} ;
198
199
199
200
function requireMethods ( name : string , methods : Array < string > , controller : any ) {
Original file line number Diff line number Diff line change 5
5
*/
6
6
7
7
import CoreManager from './CoreManager' ;
8
+ import ParseError from './ParseError' ;
8
9
import ParseObject from './ParseObject' ;
9
10
import ParseQuery from './ParseQuery' ;
10
11
import Storage from './Storage' ;
@@ -275,7 +276,7 @@ const EventuallyQueue = {
275
276
await object . save ( queueObject . object , queueObject . serverOptions ) ;
276
277
await this . remove ( queueObject . queueId ) ;
277
278
} catch ( e ) {
278
- if ( e . message !== 'XMLHttpRequest failed: "Unable to connect to the Parse API"' ) {
279
+ if ( e . code !== ParseError . CONNECTION_FAILED ) {
279
280
await this . remove ( queueObject . queueId ) ;
280
281
}
281
282
}
@@ -285,7 +286,7 @@ const EventuallyQueue = {
285
286
await object . destroy ( queueObject . serverOptions ) ;
286
287
await this . remove ( queueObject . queueId ) ;
287
288
} catch ( e ) {
288
- if ( e . message !== 'XMLHttpRequest failed: "Unable to connect to the Parse API"' ) {
289
+ if ( e . code !== ParseError . CONNECTION_FAILED ) {
289
290
await this . remove ( queueObject . queueId ) ;
290
291
}
291
292
}
Original file line number Diff line number Diff line change
1
+ import CoreManager from './CoreManager' ;
2
+
1
3
/**
2
4
* Constructs a new Parse.Error object with the given code and message.
3
5
*
6
+ * Parse.CoreManager.set('PARSE_ERRORS', [{ code, message }]) can be use to override error messages.
7
+ *
4
8
* @alias Parse.Error
5
9
*/
6
10
class ParseError extends Error {
@@ -11,9 +15,15 @@ class ParseError extends Error {
11
15
constructor ( code , message ) {
12
16
super ( message ) ;
13
17
this . code = code ;
18
+ let customMessage = message ;
19
+ CoreManager . get ( 'PARSE_ERRORS' ) . forEach ( ( error ) => {
20
+ if ( error . code === code && error . code ) {
21
+ customMessage = error . message ;
22
+ }
23
+ } ) ;
14
24
Object . defineProperty ( this , 'message' , {
15
25
enumerable : true ,
16
- value : message ,
26
+ value : customMessage ,
17
27
} ) ;
18
28
}
19
29
Original file line number Diff line number Diff line change 1
1
jest . dontMock ( '../ParseError' ) ;
2
+ jest . dontMock ( '../CoreManager' ) ;
2
3
3
4
const ParseError = require ( '../ParseError' ) . default ;
5
+ const CoreManager = require ( '../CoreManager' ) ;
4
6
5
7
describe ( 'ParseError' , ( ) => {
6
8
it ( 'have sensible string representation' , ( ) => {
@@ -18,4 +20,14 @@ describe('ParseError', () => {
18
20
code : 123 ,
19
21
} ) ;
20
22
} ) ;
23
+
24
+ it ( 'can override message' , ( ) => {
25
+ CoreManager . set ( 'PARSE_ERRORS' , [ { code : 123 , message : 'Oops.' } ] ) ;
26
+ const error = new ParseError ( 123 , 'some error message' ) ;
27
+ expect ( JSON . parse ( JSON . stringify ( error ) ) ) . toEqual ( {
28
+ message : 'Oops.' ,
29
+ code : 123 ,
30
+ } ) ;
31
+ CoreManager . set ( 'PARSE_ERRORS' , [ ] ) ;
32
+ } ) ;
21
33
} ) ;
You can’t perform that action at this time.
0 commit comments