1
0
mirror of https://github.com/lensapp/lens.git synced 2025-05-20 05:10:56 +00:00

refactoring dock-tab stores -- part 2 / fix: splash screen stucks forever

Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
Roman 2021-10-04 13:16:35 +03:00
parent f140bc5b70
commit 5c41b8612e

View File

@ -19,7 +19,7 @@
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
import { action, autorun, IReactionDisposer, IReactionOptions, makeObservable, observable, reaction } from "mobx"; import { autorun, computed, IReactionDisposer, IReactionOptions, makeObservable, observable, reaction } from "mobx";
import { autoBind, createStorage, Disposer, disposer, StorageHelper } from "../../utils"; import { autoBind, createStorage, Disposer, disposer, StorageHelper } from "../../utils";
import { dockStore, TabId } from "./dock.store"; import { dockStore, TabId } from "./dock.store";
@ -29,12 +29,12 @@ export interface DockTabStoreOptions {
} }
export class DockTabsStore<T extends {}> { export class DockTabsStore<T extends {}> {
private storage?: StorageHelper<Record<TabId, T>>; // available only with `options.storageKey` @observable private _data: Record<TabId, T> = {};
private _data = observable.object<Record<TabId, T>>({}); @observable.ref private storage?: StorageHelper<Record<TabId, T>>; // available only with `options.storageKey`
protected watchers = observable.map<TabId, IReactionDisposer | Disposer>([], { deep: false }); protected watchers = observable.map<TabId, IReactionDisposer | Disposer>();
protected dispose = disposer(); protected dispose = disposer();
get data() { @computed get data() {
if (this.options.storageKey) { if (this.options.storageKey) {
return this.storage.get(); return this.storage.get();
} else { } else {
@ -50,7 +50,7 @@ export class DockTabsStore<T extends {}> {
} }
} }
constructor(protected options: DockTabStoreOptions = {}) { protected constructor(protected options: DockTabStoreOptions = {}) {
autoBind(this); autoBind(this);
makeObservable(this); makeObservable(this);
@ -118,17 +118,14 @@ export class DockTabsStore<T extends {}> {
return this.data[tabId]; return this.data[tabId];
} }
@action
setData(tabId: TabId, data: T) { setData(tabId: TabId, data: T) {
this.data[tabId] = data; this.data[tabId] = data;
} }
@action
clearData(tabId: TabId) { clearData(tabId: TabId) {
delete this.data[tabId]; delete this.data[tabId];
} }
@action
reset() { reset() {
this.data = {}; this.data = {};
} }