Fix StorageHelper.get() returning null after clearing (#2421)

This commit is contained in:
Sebastian Malton authored and GitHub committed 2021-04-01 10:27:27 -04:00
1 parent da196387b8
commit 04e5180511
6 files changed
+11 -21

No files matched your search

@@ -142,17 +142,6 @@ describe("renderer/utils/StorageHelper", () => {
}));
expect(storageHelper.get()).toEqual({ ...storageHelperDefaultValue, message: "updated3" });
});
it("clears data in storage", () => {
storageHelper.init();
expect(storageHelper.get()).toBeTruthy();
storageHelper.clear();
expect(storageHelper.get()).toBeFalsy();
expect(storageMock[storageKey]).toBeUndefined();
expect(storageAdapter.removeItem).toHaveBeenCalledWith(storageHelper.key);
});
});
describe("data in storage-helper is observable (mobx)", () => {
+1 -1
View File
@@ -14,7 +14,7 @@ let initialized = false;
const loaded = observable.box(false);
const storage = observable.map<string/* key */, any /* serializable */>();
export function createStorage<T>(key: string, defaultValue?: T, observableOptions?: CreateObservableOptions) {
export function createStorage<T>(key: string, defaultValue: T, observableOptions?: CreateObservableOptions) {
const clusterId = getHostedClusterId();
const savingFolder = path.resolve((app || remote.app).getPath("userData"), "lens-local-storage");
const jsonFilePath = path.resolve(savingFolder, `${clusterId ?? "app"}.json`);
+7 -6
View File
@@ -21,7 +21,7 @@ export interface StorageHelperOptions<T> {
autoInit?: boolean; // start preloading data immediately, default: true
observable?: CreateObservableOptions;
storage: StorageAdapter<T>;
defaultValue?: T;
defaultValue: T;
}
export class StorageHelper<T> {
@@ -133,17 +133,18 @@ export class StorageHelper<T> {
}
set(value: T) {
this.data.set(value);
if (value == null) {
// This cannot use recursion because defaultValue might be null or undefined
this.data.set(this.defaultValue);
} else {
this.data.set(value);
}
}
reset() {
this.set(this.defaultValue);
}
clear() {
this.data.set(null);
}
merge(value: Partial<T> | ((draft: Draft<T>) => Partial<T> | void)) {
const nextValue = produce(this.get(), (state: Draft<T>) => {
const newValue = isFunction(value) ? value(state) : value;