From ce9b844fa07050be13b25dbdaa4e005fb7696d7d Mon Sep 17 00:00:00 2001 From: Hamza Mahjoubi Date: Wed, 11 Sep 2024 22:18:42 +0200 Subject: [PATCH] feat: add pagination Signed-off-by: Hamza Mahjoubi --- src/models/addressBook.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/models/addressBook.js b/src/models/addressBook.js index a183ab19..344b1812 100644 --- a/src/models/addressBook.js +++ b/src/models/addressBook.js @@ -78,9 +78,11 @@ export class AddressBook extends davCollectionShareable(DavCollection) { * findAllAndFilterBySimpleProperties(['EMAIL', 'UID', 'CATEGORIES', 'FN', 'TEL', 'NICKNAME', 'N']) * * @param {string[]} props + * @param offset + * @param limit * @return {Promise} */ - async findAllAndFilterBySimpleProperties(props) { + async findAllAndFilterBySimpleProperties(props, offset = null, limit = 0) { const children = [] props.forEach((prop) => { children.push({ @@ -100,7 +102,7 @@ export class AddressBook extends davCollectionShareable(DavCollection) { children, }, { name: [NS.NEXTCLOUD, 'has-photo'], - }]) + }], null, 'anyof', offset, limit) } /** @@ -128,9 +130,11 @@ export class AddressBook extends davCollectionShareable(DavCollection) { * @param {object[]} prop * @param {number} limit * @param {string} test Either anyof or allof + * @param {number} offset Offset for the query + * @param {number} queryLimit Limit for the query * @return {Promise} */ - async addressbookQuery(filter, prop = null, limit = null, test = 'anyof') { + async addressbookQuery(filter, prop = null, limit = null, test = 'anyof', offset = null, queryLimit = null) { debug('sending an addressbook-query request') const [skeleton] = XMLUtility.getRootSkeleton( @@ -173,6 +177,8 @@ export class AddressBook extends davCollectionShareable(DavCollection) { const headers = { Depth: '1', + 'X-NEXTCLOUD-Offset': offset, + 'X-NEXTCLOUD-limit': queryLimit, } const body = XMLUtility.serialize(skeleton) const response = await this._request.report(this.url, headers, body)