@@ -4,7 +4,6 @@ const config = require('wild-config');
44const log = require ( 'npmlog' ) ;
55const libmime = require ( 'libmime' ) ;
66const Joi = require ( 'joi' ) ;
7- const MongoPaging = require ( 'mongo-cursor-pagination' ) ;
87const addressparser = require ( 'nodemailer/lib/addressparser' ) ;
98const MailComposer = require ( 'nodemailer/lib/mail-composer' ) ;
109const { htmlToText } = require ( 'html-to-text' ) ;
@@ -17,7 +16,7 @@ const forward = require('../forward');
1716const Maildropper = require ( '../maildropper' ) ;
1817const util = require ( 'util' ) ;
1918const roles = require ( '../roles' ) ;
20- const { nextPageCursorSchema, previousPageCursorSchema, pageNrSchema , sessSchema, sessIPSchema, booleanSchema, metaDataSchema } = require ( '../schemas' ) ;
19+ const { nextPageCursorSchema, previousPageCursorSchema, sessSchema, sessIPSchema, booleanSchema, metaDataSchema } = require ( '../schemas' ) ;
2120const { preprocessAttachments } = require ( '../data-url' ) ;
2221const TaskHandler = require ( '../task-handler' ) ;
2322const { prepareSearchFilter, uidRangeStringToQuery } = require ( '../prepare-search-filter' ) ;
@@ -677,8 +676,7 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
677676 . example ( 'List-ID, MIME-Version' )
678677 . description ( 'Comma separated list of header keys to include in the response' ) ,
679678 next : nextPageCursorSchema ,
680- previous : previousPageCursorSchema ,
681- page : pageNrSchema
679+ previous : previousPageCursorSchema
682680 }
683681 } ,
684682 pathParams : { user : userId } ,
@@ -788,7 +786,6 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
788786 let user = new ObjectId ( result . value . user ) ;
789787 let threadCounters = result . value . threadCounters ;
790788 let limit = result . value . limit ;
791- let page = result . value . page ;
792789 let pageNext = result . value . next ;
793790 let pagePrevious = result . value . previous ;
794791 let order = result . value . order ;
@@ -886,13 +883,14 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
886883
887884 if ( pageNext ) {
888885 opts . next = pageNext ;
889- } else if ( ( ! page || page > 1 ) && pagePrevious ) {
886+ }
887+ if ( pagePrevious ) {
890888 opts . previous = pagePrevious ;
891889 }
892890
893- let listing ;
891+ let listingWrapper ;
894892 try {
895- listing = await MongoPaging . find ( db . database . collection ( 'messages' ) , opts ) ;
893+ listingWrapper = await mongopagingFindWrapper ( db . database . collection ( 'messages' ) , opts ) ;
896894 } catch ( err ) {
897895 res . status ( 500 ) ;
898896 return res . json ( {
@@ -901,24 +899,20 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
901899 } ) ;
902900 }
903901
904- if ( ! listing . hasPrevious ) {
905- page = 1 ;
906- }
907-
908902 if ( threadCounters ) {
909- listing . results = await addThreadCountersToMessageList ( user , listing . results ) ;
903+ listingWrapper . listing . results = await addThreadCountersToMessageList ( user , listingWrapper . listing . results ) ;
910904 }
911905
912- await applyBimiToListing ( listing . results ) ;
906+ await applyBimiToListing ( listingWrapper . listing . results ) ;
913907
914908 let response = {
915909 success : true ,
916910 query,
917911 total,
918- page,
919- previousCursor : listing . hasPrevious ? listing . previous : false ,
920- nextCursor : listing . hasNext ? listing . next : false ,
921- results : ( listing . results || [ ] ) . map ( entry => formatMessageListing ( entry , includeHeaders ) )
912+ page : listingWrapper . page ,
913+ previousCursor : listingWrapper . previousCursor ,
914+ nextCursor : listingWrapper . nextCursor ,
915+ results : ( listingWrapper . listing . results || [ ] ) . map ( entry => formatMessageListing ( entry , includeHeaders ) )
922916 } ;
923917
924918 return res . json ( response ) ;
@@ -3232,7 +3226,6 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
32323226 . empty ( '' )
32333227 . example ( 'List-ID, MIME-Version' )
32343228 . description ( 'Comma separated list of header keys to include in the response' ) ,
3235- page : pageNrSchema ,
32363229 sess : sessSchema ,
32373230 ip : sessIPSchema
32383231 } ,
@@ -3341,7 +3334,6 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
33413334
33423335 let user = new ObjectId ( result . value . user ) ;
33433336 let limit = result . value . limit ;
3344- let page = result . value . page ;
33453337 let pageNext = result . value . next ;
33463338 let pagePrevious = result . value . previous ;
33473339 let sortAscending = result . value . order === 'asc' ;
@@ -3402,13 +3394,14 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
34023394
34033395 if ( pageNext ) {
34043396 opts . next = pageNext ;
3405- } else if ( ( ! page || page > 1 ) && pagePrevious ) {
3397+ }
3398+ if ( pagePrevious ) {
34063399 opts . previous = pagePrevious ;
34073400 }
34083401
3409- let listing ;
3402+ let listingWrapper ;
34103403 try {
3411- listing = await MongoPaging . find ( db . database . collection ( 'archived' ) , opts ) ;
3404+ listingWrapper = await mongopagingFindWrapper ( db . database . collection ( 'archived' ) , opts ) ;
34123405 } catch ( err ) {
34133406 res . status ( 500 ) ;
34143407 return res . json ( {
@@ -3417,17 +3410,13 @@ module.exports = (db, server, messageHandler, userHandler, storageHandler, setti
34173410 } ) ;
34183411 }
34193412
3420- if ( ! listing . hasPrevious ) {
3421- page = 1 ;
3422- }
3423-
34243413 let response = {
34253414 success : true ,
34263415 total,
3427- page,
3428- previousCursor : listing . hasPrevious ? listing . previous : false ,
3429- nextCursor : listing . hasNext ? listing . next : false ,
3430- results : ( listing . results || [ ] )
3416+ page : listingWrapper . page ,
3417+ previousCursor : listingWrapper . previousCursor ,
3418+ nextCursor : listingWrapper . nextCursor ,
3419+ results : ( listingWrapper . listing . results || [ ] )
34313420 . map ( m => {
34323421 // prepare message for output
34333422 m . uid = m . _id ;
0 commit comments