@@ -363,6 +363,14 @@ class Browser extends DashboardView {
363363 query . ascending ( field )
364364 }
365365
366+ if ( field !== 'objectId' ) {
367+ if ( sortDir === '-' ) {
368+ query . addDescending ( 'objectId' ) ;
369+ } else {
370+ query . addAscending ( 'objectId' ) ;
371+ }
372+ }
373+
366374 query . limit ( MAX_ROWS_FETCHED ) ;
367375 this . excludeFields ( query , source ) ;
368376
@@ -438,37 +446,38 @@ class Browser extends DashboardView {
438446 let className = this . props . params . className ;
439447 let source = this . state . relation || className ;
440448 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' ) {
442453 // Construct complex pagination query
443454 let equalityQuery = queryFromFilters ( source , this . state . filters ) ;
444- let field = this . state . ordering ;
445- let ascending = true ;
446455 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 === '-' ) {
452458 query . lessThan ( field , comp ) ;
453- ascending = false ;
459+ equalityQuery . lessThan ( 'objectId' , this . state . data [ this . state . data . length - 1 ] . id ) ;
454460 } else {
455461 query . greaterThan ( field , comp ) ;
462+ equalityQuery . greaterThan ( 'objectId' , this . state . data [ this . state . data . length - 1 ] . id ) ;
456463 }
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 ) ;
463465 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' ) ;
466469 } else {
467- query . descending ( this . state . ordering . substr ( 1 ) ) ;
470+ query . ascending ( field ) ;
471+ query . addAscending ( 'objectId' ) ;
468472 }
469473 } 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+ }
472481 }
473482 query . limit ( MAX_ROWS_FETCHED ) ;
474483 this . excludeFields ( query , source ) ;
0 commit comments