diff options
Diffstat (limited to 'packages/main/src/utils.ts')
-rw-r--r-- | packages/main/src/utils.ts | 27 |
1 files changed, 2 insertions, 25 deletions
diff --git a/packages/main/src/utils.ts b/packages/main/src/utils.ts index 11c78e9..0d469dd 100644 --- a/packages/main/src/utils.ts +++ b/packages/main/src/utils.ts | |||
@@ -18,29 +18,6 @@ | |||
18 | * SPDX-License-Identifier: AGPL-3.0-only | 18 | * SPDX-License-Identifier: AGPL-3.0-only |
19 | */ | 19 | */ |
20 | 20 | ||
21 | export type Disposable = Disposer | DisposableObject; | 21 | import { IDisposer } from 'mobx-state-tree'; |
22 | 22 | ||
23 | export type Disposer = () => void; | 23 | export type Disposer = IDisposer; |
24 | |||
25 | export interface DisposableObject { | ||
26 | dispose(): void; | ||
27 | } | ||
28 | |||
29 | export class DisposeHelper implements DisposableObject { | ||
30 | private readonly disposers: Disposer[] = []; | ||
31 | |||
32 | protected registerDisposable<T extends Disposable>(disposable: T): T { | ||
33 | if (typeof disposable === 'object') { | ||
34 | this.disposers.push(() => disposable.dispose()); | ||
35 | } else { | ||
36 | this.disposers.push(disposable); | ||
37 | } | ||
38 | return disposable; | ||
39 | } | ||
40 | |||
41 | dispose(): void { | ||
42 | for (let i = this.disposers.length - 1; i >= 0; i -= 1) { | ||
43 | this.disposers[i](); | ||
44 | } | ||
45 | } | ||
46 | } | ||