From 7a3a2327ab2a88768d8b68654457f0c2c4e1c198 Mon Sep 17 00:00:00 2001 From: Roman Date: Wed, 3 Mar 2021 18:24:15 +0200 Subject: [PATCH] responding to comments, part 2 Signed-off-by: Roman --- .../components/dock/dock-tab.store.ts | 2 +- src/renderer/components/dock/dock.store.ts | 33 +++++++++---------- src/renderer/components/dock/dock.tsx | 2 +- .../components/layout/sidebar-item.tsx | 12 +++---- 4 files changed, 23 insertions(+), 26 deletions(-) diff --git a/src/renderer/components/dock/dock-tab.store.ts b/src/renderer/components/dock/dock-tab.store.ts index 42a82f6a9c..ffe8b51b92 100644 --- a/src/renderer/components/dock/dock-tab.store.ts +++ b/src/renderer/components/dock/dock-tab.store.ts @@ -25,7 +25,7 @@ export class DockTabStore { this.storage = createStorage(storageKey, {}); await this.storage.whenReady; this.data.replace(this.storage.get()); - reaction(() => this.serializeData(), (data: T | any) => this.storage.set(data)); + reaction(() => this.serializeData(), data => this.storage.set(data)); } // clear data for closed tabs diff --git a/src/renderer/components/dock/dock.store.ts b/src/renderer/components/dock/dock.store.ts index 7dc659feda..cf7b17a889 100644 --- a/src/renderer/components/dock/dock.store.ts +++ b/src/renderer/components/dock/dock.store.ts @@ -45,32 +45,36 @@ export class DockStore implements DockStorageState { return localStorage.get().isOpen; } - set isOpen(value: boolean) { - localStorage.merge({ isOpen: value }); + set isOpen(isOpen: boolean) { + localStorage.merge({ isOpen }); } get height(): number { return localStorage.get().height; } - set height(value: number) { - localStorage.merge({ height: value }); + set height(height: number) { + localStorage.merge({ + height: Math.max(this.minHeight, Math.min(height || this.minHeight, this.maxHeight)), + }); } get tabs(): IDockTab[] { return localStorage.get().tabs; } - set tabs(value: IDockTab[]) { - localStorage.merge({ tabs: value }); + set tabs(tabs: IDockTab[]) { + localStorage.merge({ tabs }); } - get selectedTabId(): TabId { + get selectedTabId(): TabId | undefined { return localStorage.get().selectedTabId || this.tabs[0]?.id; } - set selectedTabId(value: TabId) { - localStorage.merge({ selectedTabId: value }); + set selectedTabId(tabId: TabId) { + if (tabId && !this.getTabById(tabId)) return; // skip invalid ids + + localStorage.merge({ selectedTabId: tabId }); } @computed get selectedTab() { @@ -81,7 +85,7 @@ export class DockStore implements DockStorageState { this.init(); } - private async init() { + private init() { // adjust terminal height if window size changes window.addEventListener("resize", throttle(this.adjustHeight, 250)); } @@ -97,8 +101,8 @@ export class DockStore implements DockStorageState { } protected adjustHeight() { - if (this.height < this.minHeight) this.setHeight(this.minHeight); - if (this.height > this.maxHeight) this.setHeight(this.maxHeight); + if (this.height < this.minHeight) this.height = this.minHeight; + if (this.height > this.maxHeight) this.height = this.maxHeight; } onResize(callback: () => void, options?: IReactionOptions) { @@ -238,11 +242,6 @@ export class DockStore implements DockStorageState { this.selectedTabId = this.getTabById(tabId)?.id ?? null; } - @action - setHeight(height?: number) { - this.height = Math.max(this.minHeight, Math.min(height || this.minHeight, this.maxHeight)); - } - @action reset() { localStorage.reset(); diff --git a/src/renderer/components/dock/dock.tsx b/src/renderer/components/dock/dock.tsx index 6d74544f45..19a233eb79 100644 --- a/src/renderer/components/dock/dock.tsx +++ b/src/renderer/components/dock/dock.tsx @@ -89,7 +89,7 @@ export class Dock extends React.Component { onStart={dockStore.open} onMinExtentSubceed={dockStore.close} onMinExtentExceed={dockStore.open} - onDrag={dockStore.setHeight} + onDrag={extent => dockStore.height = extent} />
{ } get expanded(): boolean { - return sidebarLocalStorage.get().expanded[this.id]; + return Boolean(sidebarLocalStorage.get().expanded[this.id]); } get compact(): boolean { - return sidebarLocalStorage.get().compact; + return Boolean(sidebarLocalStorage.get().compact); } toggleExpand = (event: React.MouseEvent) => { @@ -48,18 +48,16 @@ export class SidebarItem extends React.Component { }; render() { - const { isHidden, isActive, subMenus = [], icon, text, children, url } = this.props; + const { isHidden, isActive, subMenus = [], icon, text, children, url, className } = this.props; if (isHidden) return null; const { id, expanded, compact } = this; const isExpandable = (subMenus.length > 0 || children) && !compact; - const className = cssNames(SidebarItem.displayName, this.props.className, { - compact, - }); + const classNames = cssNames(SidebarItem.displayName, className, { compact }); return ( -
+
isActive}> {icon} {text}