From 382687775bf58ddbdf3e3424fb2412c90eff971e Mon Sep 17 00:00:00 2001 From: Alex Andreev Date: Fri, 20 Nov 2020 07:51:43 +0300 Subject: [PATCH] Revert "Make BaseStore abstract (#1431)" This reverts commit 4b56ab7c611f6848de720e47b3b4f3f7f7433511. --- .../src/telemetry-preferences-store.ts | 14 +++++---- src/common/base-store.ts | 30 ++++++++----------- src/extensions/extension-store.ts | 6 ++-- 3 files changed, 23 insertions(+), 27 deletions(-) diff --git a/extensions/telemetry/src/telemetry-preferences-store.ts b/extensions/telemetry/src/telemetry-preferences-store.ts index e29b0ff461..732ad91524 100644 --- a/extensions/telemetry/src/telemetry-preferences-store.ts +++ b/extensions/telemetry/src/telemetry-preferences-store.ts @@ -1,13 +1,11 @@ import { Store } from "@k8slens/extensions"; import { toJS } from "mobx" -export type TelemetryPreferencesModel = { +export type TelemetryPreferencesModel = { enabled: boolean; } export class TelemetryPreferencesStore extends Store.ExtensionStore { - enabled = true; - private constructor() { super({ configName: "preferences-store", @@ -17,13 +15,17 @@ export class TelemetryPreferencesStore extends Store.ExtensionStore extends ConfOptions { syncOptions?: IReactionOptions; } -/** - * Note: T should only contain base JSON serializable types. - */ -export abstract class BaseStore extends Singleton { +export class BaseStore extends Singleton { protected storeConfig: Config; protected syncDisposers: Function[] = []; @@ -149,19 +146,16 @@ export abstract class BaseStore extends Singleton { } } - /** - * fromStore is called internally when a child class syncs with the file - * system. - * @param data the parsed information read from the stored JSON file - */ - protected abstract fromStore(data: T): void; + @action + protected fromStore(data: T) { + if (!data) return; + this.data = data; + } - /** - * toJSON is called when syncing the store to the filesystem. It should - * produce a JSON serializable object representaion of the current state. - * - * It is recommended that a round trip is valid. Namely, calling - * `this.fromStore(this.toJSON())` shouldn't change the state. - */ - abstract toJSON(): T; + // todo: use "serializr" ? + toJSON(): T { + return toJS(this.data, { + recurseEverything: true, + }) + } } diff --git a/src/extensions/extension-store.ts b/src/extensions/extension-store.ts index ec2f61948e..d5372eceff 100644 --- a/src/extensions/extension-store.ts +++ b/src/extensions/extension-store.ts @@ -2,17 +2,17 @@ import { BaseStore } from "../common/base-store" import * as path from "path" import { LensExtension } from "./lens-extension" -export abstract class ExtensionStore extends BaseStore { +export class ExtensionStore extends BaseStore { protected extension: LensExtension async loadExtension(extension: LensExtension) { this.extension = extension - return super.load() + await super.load() } async load() { if (!this.extension) { return } - return super.load() + await super.load() } protected cwd() {