mirror of https://github.com/nextcloud/contacts
35 lines
748 B
JavaScript
35 lines
748 B
JavaScript
/**
|
|
* @fileoverview Group requests together and then abort as a group.
|
|
*
|
|
* var sandbox = new dav.Sandbox();
|
|
* return Promise.all([
|
|
* dav.createEvent(event, { sandbox: sandbox }),
|
|
* dav.deleteEvent(other, { sandbox: sandbox })
|
|
* ])
|
|
* .catch(function() {
|
|
* // Something went wrong so abort all requests.
|
|
* sandbox.abort;
|
|
* });
|
|
*/
|
|
let debug = require('./debug')('dav:sandbox');
|
|
|
|
export class Sandbox {
|
|
constructor() {
|
|
this.requestList = [];
|
|
}
|
|
|
|
add(request) {
|
|
debug('Adding request to sandbox.');
|
|
this.requestList.push(request);
|
|
}
|
|
|
|
abort() {
|
|
debug('Aborting sandboxed requests.');
|
|
this.requestList.forEach(request => request.abort());
|
|
}
|
|
}
|
|
|
|
export function createSandbox() {
|
|
return new Sandbox();
|
|
}
|