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

Merge remote-tracking branch 'origin/master' into page_registry_issue_1258

# Conflicts:
#	extensions/support-page/main.ts
#	src/extensions/renderer-api/navigation.ts
This commit is contained in:
Roman 2020-11-12 00:33:03 +02:00
commit 0d16f6132d
11 changed files with 54 additions and 16 deletions

View File

@ -16,6 +16,3 @@
* [LensMainExtension](classes/lensmainextension.md) * [LensMainExtension](classes/lensmainextension.md)
* [LensRendererExtension](classes/lensrendererextension.md) * [LensRendererExtension](classes/lensrendererextension.md)
## Variables
* [windowManager](README.md#windowmanager)

View File

@ -1,4 +1,4 @@
import { LensMainExtension, windowManager } from "@k8slens/extensions"; import { LensMainExtension } from "@k8slens/extensions";
import { pageUrl } from "./src/common-vars"; import { pageUrl } from "./src/common-vars";
export default class SupportPageMainExtension extends LensMainExtension { export default class SupportPageMainExtension extends LensMainExtension {
@ -7,7 +7,7 @@ export default class SupportPageMainExtension extends LensMainExtension {
parentId: "help", parentId: "help",
label: "Support", label: "Support",
click: () => { click: () => {
windowManager.navigate(this.getPageUrl(pageUrl)); // todo: simplify this.navigate(this.getPageUrl(pageUrl)); // todo: simplify
} }
} }
] ]

View File

@ -2,8 +2,6 @@
export * from "../lens-main-extension" export * from "../lens-main-extension"
export * from "../lens-renderer-extension" export * from "../lens-renderer-extension"
import type { WindowManager } from "../../main/window-manager";
// APIs // APIs
import * as App from "./app" import * as App from "./app"
import * as EventBus from "./event-bus" import * as EventBus from "./event-bus"
@ -12,9 +10,6 @@ import * as Util from "./utils"
import * as ClusterFeature from "./cluster-feature" import * as ClusterFeature from "./cluster-feature"
import * as Interface from "../interfaces" import * as Interface from "../interfaces"
// TODO: allow to expose windowManager.navigate() as Navigation.navigate() in runtime
export let windowManager: WindowManager;
export { export {
App, App,
EventBus, EventBus,

View File

@ -1,7 +1,12 @@
import type { MenuRegistration } from "./registries/menu-registry"; import type { MenuRegistration } from "./registries/menu-registry";
import { observable } from "mobx"; import { observable } from "mobx";
import { LensExtension } from "./lens-extension" import { LensExtension } from "./lens-extension"
import { WindowManager } from "../main/window-manager";
export class LensMainExtension extends LensExtension { export class LensMainExtension extends LensExtension {
@observable.shallow appMenus: MenuRegistration[] = [] @observable.shallow appMenus: MenuRegistration[] = []
async navigate(location: string, frameId?: number) {
await WindowManager.getInstance<WindowManager>().navigate(location, frameId)
}
} }

View File

@ -8,5 +8,5 @@ import * as Navigation from "./navigation"
export { export {
Component, Component,
K8sApi, K8sApi,
Navigation, Navigation
} }

View File

@ -2,7 +2,6 @@ export { isAllowedResource } from "../../common/rbac"
export { apiManager } from "../../renderer/api/api-manager"; export { apiManager } from "../../renderer/api/api-manager";
export { KubeObjectStore } from "../../renderer/kube-object.store" export { KubeObjectStore } from "../../renderer/kube-object.store"
export { KubeApi, forCluster, IKubeApiCluster } from "../../renderer/api/kube-api"; export { KubeApi, forCluster, IKubeApiCluster } from "../../renderer/api/kube-api";
export type { EventStore } from "../../renderer/components/+events/event.store"
export { VersionedKubeApi } from "../../renderer/api/kube-api-versioned"; export { VersionedKubeApi } from "../../renderer/api/kube-api-versioned";
export { KubeObject } from "../../renderer/api/kube-object"; export { KubeObject } from "../../renderer/api/kube-object";
export { Pod, podsApi, PodsApi, IPodContainer, IPodContainerStatus } from "../../renderer/api/endpoints"; export { Pod, podsApi, PodsApi, IPodContainer, IPodContainerStatus } from "../../renderer/api/endpoints";
@ -34,3 +33,32 @@ export { ClusterRole, clusterRoleApi } from "../../renderer/api/endpoints";
export { ClusterRoleBinding, clusterRoleBindingApi } from "../../renderer/api/endpoints"; export { ClusterRoleBinding, clusterRoleBindingApi } from "../../renderer/api/endpoints";
export { CustomResourceDefinition, crdApi } from "../../renderer/api/endpoints"; export { CustomResourceDefinition, crdApi } from "../../renderer/api/endpoints";
export { KubeObjectStatus, KubeObjectStatusLevel} from "./kube-object-status" export { KubeObjectStatus, KubeObjectStatusLevel} from "./kube-object-status"
// stores
export type { EventStore } from "../../renderer/components/+events/event.store"
export type { PodsStore } from "../../renderer/components/+workloads-pods/pods.store"
export type { NodesStore } from "../../renderer/components/+nodes/nodes.store"
export type { DeploymentStore } from "../../renderer/components/+workloads-deployments/deployments.store"
export type { DaemonSetStore } from "../../renderer/components/+workloads-daemonsets/daemonsets.store"
export type { StatefulSetStore } from "../../renderer/components/+workloads-statefulsets/statefulset.store"
export type { JobStore } from "../../renderer/components/+workloads-jobs/job.store"
export type { CronJobStore } from "../../renderer/components/+workloads-cronjobs/cronjob.store"
export type { ConfigMapsStore } from "../../renderer/components/+config-maps/config-maps.store"
export type { SecretsStore } from "../../renderer/components/+config-secrets/secrets.store"
export type { ReplicaSetStore } from "../../renderer/components/+workloads-replicasets/replicasets.store"
export type { ResourceQuotasStore } from "../../renderer/components/+config-resource-quotas/resource-quotas.store"
export type { HPAStore } from "../../renderer/components/+config-autoscalers/hpa.store"
export type { PodDisruptionBudgetsStore } from "../../renderer/components/+config-pod-disruption-budgets/pod-disruption-budgets.store"
export type { ServiceStore } from "../../renderer/components/+network-services/services.store"
export type { EndpointStore } from "../../renderer/components/+network-endpoints/endpoints.store"
export type { IngressStore } from "../../renderer/components/+network-ingresses/ingress.store"
export type { NetworkPolicyStore } from "../../renderer/components/+network-policies/network-policy.store"
export type { PersistentVolumesStore } from "../../renderer/components/+storage-volumes/volumes.store"
export type { VolumeClaimStore } from "../../renderer/components/+storage-volume-claims/volume-claim.store"
export type { StorageClassStore } from "../../renderer/components/+storage-classes/storage-class.store"
export type { NamespaceStore } from "../../renderer/components/+namespaces/namespace.store"
export type { ServiceAccountsStore } from "../../renderer/components/+user-management-service-accounts/service-accounts.store"
export type { RolesStore } from "../../renderer/components/+user-management-roles/roles.store"
export type { RoleBindingsStore } from "../../renderer/components/+user-management-roles-bindings/role-bindings.store"
export type { CRDStore } from "../../renderer/components/+custom-resources/crd.store"
export type { CRDResourceStore } from "../../renderer/components/+custom-resources/crd-resource.store"

View File

@ -1,2 +1,4 @@
export { navigate, hideDetails, showDetails, getDetailsUrl } from "../../renderer/navigation" export { RouteProps } from "react-router"
export { navigate } from "../../renderer/navigation";
export { hideDetails, showDetails, getDetailsUrl } from "../../renderer/navigation"
export { IURLParams } from "../../common/utils/buildUrl"; export { IURLParams } from "../../common/utils/buildUrl";

View File

@ -78,7 +78,7 @@ app.on("ready", async () => {
app.exit(); app.exit();
} }
LensExtensionsApi.windowManager = windowManager = new WindowManager(proxyPort); windowManager = WindowManager.getInstance<WindowManager>(proxyPort);
extensionLoader.init(await extensionManager.load()); // call after windowManager to see splash earlier extensionLoader.init(await extensionManager.load()); // call after windowManager to see splash earlier
setTimeout(() => { setTimeout(() => {

View File

@ -16,7 +16,7 @@ import { isDevelopment } from "../common/vars";
export let tray: Tray; export let tray: Tray;
// refresh icon when MacOS dark/light theme has changed // refresh icon when MacOS dark/light theme has changed
nativeTheme.on("updated", () => tray?.setImage(getTrayIcon())); nativeTheme?.on("updated", () => tray?.setImage(getTrayIcon()));
export function getTrayIcon(isDark = nativeTheme.shouldUseDarkColors): string { export function getTrayIcon(isDark = nativeTheme.shouldUseDarkColors): string {
return path.resolve( return path.resolve(

View File

@ -7,8 +7,9 @@ import { extensionLoader } from "../extensions/extension-loader";
import { appEventBus } from "../common/event-bus" import { appEventBus } from "../common/event-bus"
import { initMenu } from "./menu"; import { initMenu } from "./menu";
import { initTray } from "./tray"; import { initTray } from "./tray";
import { Singleton } from "../common/utils";
export class WindowManager { export class WindowManager extends Singleton {
protected mainWindow: BrowserWindow; protected mainWindow: BrowserWindow;
protected splashWindow: BrowserWindow; protected splashWindow: BrowserWindow;
protected windowState: windowStateKeeper.State; protected windowState: windowStateKeeper.State;
@ -17,6 +18,7 @@ export class WindowManager {
@observable activeClusterId: ClusterId; @observable activeClusterId: ClusterId;
constructor(protected proxyPort: number) { constructor(protected proxyPort: number) {
super();
this.bindEvents(); this.bindEvents();
this.initMenu(); this.initMenu();
this.initTray(); this.initTray();

View File

@ -11,6 +11,9 @@ import { clusterViewRoute, IClusterViewRouteParams } from "./components/cluster-
export const history = typeof window !== "undefined" ? createBrowserHistory() : createMemoryHistory(); export const history = typeof window !== "undefined" ? createBrowserHistory() : createMemoryHistory();
export const navigation = createObservableHistory(history); export const navigation = createObservableHistory(history);
/**
* Navigate to a location. Works only in renderer.
*/
export function navigate(location: LocationDescriptor) { export function navigate(location: LocationDescriptor) {
const currentLocation = navigation.getPath(); const currentLocation = navigation.getPath();
navigation.push(location); navigation.push(location);
@ -64,6 +67,9 @@ export function getDetailsUrl(details: string) {
}); });
} }
/**
* Show details. Works only in renderer.
*/
export function showDetails(path: string, resetSelected = true) { export function showDetails(path: string, resetSelected = true) {
navigation.searchParams.merge({ navigation.searchParams.merge({
details: path, details: path,
@ -71,6 +77,9 @@ export function showDetails(path: string, resetSelected = true) {
}) })
} }
/**
* Hide details. Works only in renderer.
*/
export function hideDetails() { export function hideDetails() {
showDetails(null) showDetails(null)
} }