diff options
Diffstat (limited to 'apps/comments/src/utils/cancelableRequest.js')
-rw-r--r-- | apps/comments/src/utils/cancelableRequest.js | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/apps/comments/src/utils/cancelableRequest.js b/apps/comments/src/utils/cancelableRequest.js new file mode 100644 index 00000000000..c2d380c80f9 --- /dev/null +++ b/apps/comments/src/utils/cancelableRequest.js @@ -0,0 +1,36 @@ +/** + * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +/** + * Creates a cancelable axios 'request object'. + * + * @param {Function} request the axios promise request + * @return {object} + */ +const cancelableRequest = function(request) { + const controller = new AbortController() + const signal = controller.signal + + /** + * Execute the request + * + * @param {string} url the url to send the request to + * @param {object} [options] optional config for the request + */ + const fetch = async function(url, options) { + const response = await request( + url, + Object.assign({ signal }, options), + ) + return response + } + + return { + request: fetch, + abort: () => controller.abort(), + } +} + +export default cancelableRequest |