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)
|
||||
* [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";
|
||||
|
||||
export default class SupportPageMainExtension extends LensMainExtension {
|
||||
@ -7,7 +7,7 @@ export default class SupportPageMainExtension extends LensMainExtension {
|
||||
parentId: "help",
|
||||
label: "Support",
|
||||
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-renderer-extension"
|
||||
|
||||
import type { WindowManager } from "../../main/window-manager";
|
||||
|
||||
// APIs
|
||||
import * as App from "./app"
|
||||
import * as EventBus from "./event-bus"
|
||||
@ -12,9 +10,6 @@ import * as Util from "./utils"
|
||||
import * as ClusterFeature from "./cluster-feature"
|
||||
import * as Interface from "../interfaces"
|
||||
|
||||
// TODO: allow to expose windowManager.navigate() as Navigation.navigate() in runtime
|
||||
export let windowManager: WindowManager;
|
||||
|
||||
export {
|
||||
App,
|
||||
EventBus,
|
||||
|
||||
@ -1,7 +1,12 @@
|
||||
import type { MenuRegistration } from "./registries/menu-registry";
|
||||
import { observable } from "mobx";
|
||||
import { LensExtension } from "./lens-extension"
|
||||
import { WindowManager } from "../main/window-manager";
|
||||
|
||||
export class LensMainExtension extends LensExtension {
|
||||
@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 {
|
||||
Component,
|
||||
K8sApi,
|
||||
Navigation,
|
||||
Navigation
|
||||
}
|
||||
|
||||
@ -2,7 +2,6 @@ export { isAllowedResource } from "../../common/rbac"
|
||||
export { apiManager } from "../../renderer/api/api-manager";
|
||||
export { KubeObjectStore } from "../../renderer/kube-object.store"
|
||||
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 { KubeObject } from "../../renderer/api/kube-object";
|
||||
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 { CustomResourceDefinition, crdApi } from "../../renderer/api/endpoints";
|
||||
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";
|
||||
|
||||
@ -78,7 +78,7 @@ app.on("ready", async () => {
|
||||
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
|
||||
|
||||
setTimeout(() => {
|
||||
|
||||
@ -16,7 +16,7 @@ import { isDevelopment } from "../common/vars";
|
||||
export let tray: Tray;
|
||||
|
||||
// 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 {
|
||||
return path.resolve(
|
||||
|
||||
@ -7,8 +7,9 @@ import { extensionLoader } from "../extensions/extension-loader";
|
||||
import { appEventBus } from "../common/event-bus"
|
||||
import { initMenu } from "./menu";
|
||||
import { initTray } from "./tray";
|
||||
import { Singleton } from "../common/utils";
|
||||
|
||||
export class WindowManager {
|
||||
export class WindowManager extends Singleton {
|
||||
protected mainWindow: BrowserWindow;
|
||||
protected splashWindow: BrowserWindow;
|
||||
protected windowState: windowStateKeeper.State;
|
||||
@ -17,6 +18,7 @@ export class WindowManager {
|
||||
@observable activeClusterId: ClusterId;
|
||||
|
||||
constructor(protected proxyPort: number) {
|
||||
super();
|
||||
this.bindEvents();
|
||||
this.initMenu();
|
||||
this.initTray();
|
||||
|
||||
@ -11,6 +11,9 @@ import { clusterViewRoute, IClusterViewRouteParams } from "./components/cluster-
|
||||
export const history = typeof window !== "undefined" ? createBrowserHistory() : createMemoryHistory();
|
||||
export const navigation = createObservableHistory(history);
|
||||
|
||||
/**
|
||||
* Navigate to a location. Works only in renderer.
|
||||
*/
|
||||
export function navigate(location: LocationDescriptor) {
|
||||
const currentLocation = navigation.getPath();
|
||||
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) {
|
||||
navigation.searchParams.merge({
|
||||
details: path,
|
||||
@ -71,6 +77,9 @@ export function showDetails(path: string, resetSelected = true) {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* Hide details. Works only in renderer.
|
||||
*/
|
||||
export function hideDetails() {
|
||||
showDetails(null)
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user