@@ -363,6 +363,14 @@ class Browser extends DashboardView {
363
363
query . ascending ( field )
364
364
}
365
365
366
+ if ( field !== 'objectId' ) {
367
+ if ( sortDir === '-' ) {
368
+ query . addDescending ( 'objectId' ) ;
369
+ } else {
370
+ query . addAscending ( 'objectId' ) ;
371
+ }
372
+ }
373
+
366
374
query . limit ( MAX_ROWS_FETCHED ) ;
367
375
this . excludeFields ( query , source ) ;
368
376
@@ -438,37 +446,38 @@ class Browser extends DashboardView {
438
446
let className = this . props . params . className ;
439
447
let source = this . state . relation || className ;
440
448
let query = queryFromFilters ( source , this . state . filters ) ;
441
- if ( this . state . ordering !== '-createdAt' ) {
449
+ let field = this . state . ordering ;
450
+ let sortDir = field [ 0 ] === '-' ? '-' : '+' ;
451
+ field = field [ 0 ] === '-' ? field . slice ( 1 ) : field ;
452
+ if ( this . state . ordering !== '-objectId' && this . state . ordering !== 'objectId' ) {
442
453
// Construct complex pagination query
443
454
let equalityQuery = queryFromFilters ( source , this . state . filters ) ;
444
- let field = this . state . ordering ;
445
- let ascending = true ;
446
455
let comp = this . state . data [ this . state . data . length - 1 ] . get ( field ) ;
447
- if ( field === 'objectId' || field === '-objectId' ) {
448
- comp = this . state . data [ this . state . data . length - 1 ] . id ;
449
- }
450
- if ( field [ 0 ] === '-' ) {
451
- field = field . substr ( 1 ) ;
456
+
457
+ if ( sortDir === '-' ) {
452
458
query . lessThan ( field , comp ) ;
453
- ascending = false ;
459
+ equalityQuery . lessThan ( 'objectId' , this . state . data [ this . state . data . length - 1 ] . id ) ;
454
460
} else {
455
461
query . greaterThan ( field , comp ) ;
462
+ equalityQuery . greaterThan ( 'objectId' , this . state . data [ this . state . data . length - 1 ] . id ) ;
456
463
}
457
- if ( field === 'createdAt' ) {
458
- equalityQuery . greaterThan ( 'createdAt' , this . state . data [ this . state . data . length - 1 ] . get ( 'createdAt' ) ) ;
459
- } else {
460
- equalityQuery . lessThan ( 'createdAt' , this . state . data [ this . state . data . length - 1 ] . get ( 'createdAt' ) ) ;
461
- equalityQuery . equalTo ( field , comp ) ;
462
- }
464
+ equalityQuery . equalTo ( field , comp ) ;
463
465
query = Parse . Query . or ( query , equalityQuery ) ;
464
- if ( ascending ) {
465
- query . ascending ( this . state . ordering ) ;
466
+ if ( sortDir === '-' ) {
467
+ query . descending ( field ) ;
468
+ query . addDescending ( 'objectId' ) ;
466
469
} else {
467
- query . descending ( this . state . ordering . substr ( 1 ) ) ;
470
+ query . ascending ( field ) ;
471
+ query . addAscending ( 'objectId' ) ;
468
472
}
469
473
} else {
470
- query . lessThan ( 'createdAt' , this . state . data [ this . state . data . length - 1 ] . get ( 'createdAt' ) ) ;
471
- query . addDescending ( 'createdAt' ) ;
474
+ if ( sortDir === '-' ) {
475
+ query . lessThan ( 'objectId' , this . state . data [ this . state . data . length - 1 ] . id ) ;
476
+ query . addDescending ( 'objectId' ) ;
477
+ } else {
478
+ query . greaterThan ( 'objectId' , this . state . data [ this . state . data . length - 1 ] . id ) ;
479
+ query . addAscending ( 'objectId' ) ;
480
+ }
472
481
}
473
482
query . limit ( MAX_ROWS_FETCHED ) ;
474
483
this . excludeFields ( query , source ) ;
0 commit comments