From ae3fdeaa27b476c630052321aa8393c9e4283a80 Mon Sep 17 00:00:00 2001 From: Roman Date: Tue, 11 Aug 2020 14:36:27 +0300 Subject: [PATCH] fix: navigate to cluster-settings page from clusters-menu Signed-off-by: Roman Signed-off-by: Lauri Nevala --- src/common/ipc.ts | 12 ++-- .../cluster-manager/cluster-manager.tsx | 52 +-------------- .../cluster-manager/cluster-view.tsx | 2 +- .../cluster-manager/clusters-menu.tsx | 3 +- .../components/cluster-manager/lens-views.ts | 64 +++++++++++++++++++ src/renderer/navigation.ts | 12 ++-- 6 files changed, 82 insertions(+), 63 deletions(-) create mode 100644 src/renderer/components/cluster-manager/lens-views.ts diff --git a/src/common/ipc.ts b/src/common/ipc.ts index 3d4a878fd7..ea0633c34e 100644 --- a/src/common/ipc.ts +++ b/src/common/ipc.ts @@ -28,7 +28,7 @@ export interface IpcChannelOptions { channel: IpcChannel; // main <-> renderer communication channel name mode?: IpcMode; // default: "async", use "sync" as last resort: https://www.electronjs.org/docs/api/ipc-renderer#ipcrenderersendsyncchannel-args handle?: (...args: any[]) => any; // main-process message handler - autoBind?: boolean; // auto-bind message handler in main-process, default: false + autoBind?: boolean; // auto-bind message handler in main-process, default: true timeout?: number; // timeout for waiting response from the sender once?: boolean; // todo: add support } @@ -50,11 +50,10 @@ export function createIpcChannel({ autoBind = true, mode = IpcMode.ASYNC, timeou res.msgId = req.msgId; // return back to sender to be able to handle response resolved = true logger.debug(`[IPC]: sending response to "${channel}"`, res); - if (mode === IpcMode.ASYNC) { - event.reply(channel, res); - } if (mode === IpcMode.SYNC) { event.returnValue = res; + } else { + event.reply(channel, res); } } @@ -82,11 +81,10 @@ export function createIpcChannel({ autoBind = true, mode = IpcMode.ASYNC, timeou msgId: getRandId({ prefix: "ipc-msg-id" }), args: args, } - if (mode === IpcMode.ASYNC) { - ipcRenderer.send(channel, req) - } if (mode === IpcMode.SYNC) { ipcRenderer.sendSync(channel, req) + } else { + ipcRenderer.send(channel, req) } return new Promise(async (resolve, reject) => { ipcRenderer.on(channel, function waitResponseHandler(event: IpcRendererEvent, res: IpcChannelResponse) { diff --git a/src/renderer/components/cluster-manager/cluster-manager.tsx b/src/renderer/components/cluster-manager/cluster-manager.tsx index 61d37c89ed..195e3fc13c 100644 --- a/src/renderer/components/cluster-manager/cluster-manager.tsx +++ b/src/renderer/components/cluster-manager/cluster-manager.tsx @@ -1,10 +1,8 @@ import "./cluster-manager.scss" import React from "react"; -import { WebviewTag } from "electron"; import { Redirect, Route, Switch } from "react-router"; -import { observable, reaction } from "mobx"; +import { reaction } from "mobx"; import { disposeOnUnmount, observer } from "mobx-react"; -import { clusterIpc } from "../../../common/cluster-ipc"; import { cssNames } from "../../utils"; import { ClustersMenu } from "./clusters-menu"; import { BottomBar } from "./bottom-bar"; @@ -14,52 +12,8 @@ import { Workspaces, workspacesRoute } from "../+workspaces"; import { AddCluster, addClusterRoute } from "../+add-cluster"; import { ClusterView } from "./cluster-view"; import { clusterViewRoute, clusterViewURL, getMatchedCluster, getMatchedClusterId } from "./cluster-view.route"; -import { ClusterId, clusterStore } from "../../../common/cluster-store"; -import logger from "../../../main/logger"; - -interface LensView { - isLoaded?: boolean - clusterId: ClusterId; - view: WebviewTag -} - -const lensViews = observable.map(); - -export function hasLoadedView(clusterId: ClusterId): boolean { - return !!lensViews.get(clusterId)?.isLoaded; -} - -// todo: figure out how to replace -tag to