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:
commit
0d16f6132d
@ -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)
|
|
||||||
|
|||||||
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|||||||
@ -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,
|
||||||
|
|||||||
@ -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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,5 +8,5 @@ import * as Navigation from "./navigation"
|
|||||||
export {
|
export {
|
||||||
Component,
|
Component,
|
||||||
K8sApi,
|
K8sApi,
|
||||||
Navigation,
|
Navigation
|
||||||
}
|
}
|
||||||
|
|||||||
@ -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"
|
||||||
|
|||||||
@ -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";
|
||||||
|
|||||||
@ -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(() => {
|
||||||
|
|||||||
@ -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(
|
||||||
|
|||||||
@ -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();
|
||||||
|
|||||||
@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user