summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/repo/lib/common/disposable.js
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/repo/lib/common/disposable.js')
-rw-r--r--app/assets/javascripts/repo/lib/common/disposable.js14
1 files changed, 14 insertions, 0 deletions
diff --git a/app/assets/javascripts/repo/lib/common/disposable.js b/app/assets/javascripts/repo/lib/common/disposable.js
new file mode 100644
index 00000000000..84b29bdb600
--- /dev/null
+++ b/app/assets/javascripts/repo/lib/common/disposable.js
@@ -0,0 +1,14 @@
+export default class Disposable {
+ constructor() {
+ this.disposers = new Set();
+ }
+
+ add(...disposers) {
+ disposers.forEach(disposer => this.disposers.add(disposer));
+ }
+
+ dispose() {
+ this.disposers.forEach(disposer => disposer.dispose());
+ this.disposers.clear();
+ }
+}