diff --git a/src/viewmodels/base/BaseViewModel.ts b/src/viewmodels/base/BaseViewModel.ts index f08edb8681..41cb3fbfd6 100644 --- a/src/viewmodels/base/BaseViewModel.ts +++ b/src/viewmodels/base/BaseViewModel.ts @@ -6,6 +6,7 @@ Please see LICENSE files in the repository root for full details. */ import type { ViewModelNew } from "../../shared-components/ViewModel"; +import { Disposables } from "./Disposables"; export abstract class BaseViewModel

implements ViewModelNew { /** @@ -15,6 +16,7 @@ export abstract class BaseViewModel

implements ViewModelNew { */ private snapshot: unknown = {}; private callbacks: Set<() => void> = new Set(); + protected disposables = new Disposables(); public constructor(protected props: P) {} @@ -45,4 +47,11 @@ export abstract class BaseViewModel

implements ViewModelNew { callback(); } } + + /** + * Relinquish any resources held by this view-model. + */ + public dispose(): void { + this.disposables.dispose(); + } }