mirror of
https://github.com/lensapp/lens.git
synced 2025-05-20 05:10:56 +00:00
extensions-api -- added initial extensions listing/managing page available from app menu/hotkey
Signed-off-by: Roman <ixrock@gmail.com>
This commit is contained in:
parent
a5533a5eb1
commit
5001663e7a
@ -6,6 +6,7 @@ import { addClusterURL } from "../renderer/components/+add-cluster/add-cluster.r
|
|||||||
import { preferencesURL } from "../renderer/components/+preferences/preferences.route";
|
import { preferencesURL } from "../renderer/components/+preferences/preferences.route";
|
||||||
import { whatsNewURL } from "../renderer/components/+whats-new/whats-new.route";
|
import { whatsNewURL } from "../renderer/components/+whats-new/whats-new.route";
|
||||||
import { clusterSettingsURL } from "../renderer/components/+cluster-settings/cluster-settings.route";
|
import { clusterSettingsURL } from "../renderer/components/+cluster-settings/cluster-settings.route";
|
||||||
|
import { extensionsURL } from "../renderer/components/+extensions/extensions.route";
|
||||||
import logger from "./logger";
|
import logger from "./logger";
|
||||||
|
|
||||||
export function initMenu(windowManager: WindowManager) {
|
export function initMenu(windowManager: WindowManager) {
|
||||||
@ -67,12 +68,20 @@ export function buildMenu(windowManager: WindowManager) {
|
|||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{
|
{
|
||||||
label: 'Preferences',
|
label: 'Preferences',
|
||||||
accelerator: 'Cmd+,',
|
accelerator: 'CmdOrCtrl+,',
|
||||||
click() {
|
click() {
|
||||||
navigate(preferencesURL())
|
navigate(preferencesURL())
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
|
{
|
||||||
|
label: 'Extensions',
|
||||||
|
accelerator: 'CmdOrCtrl+Shift+E',
|
||||||
|
click() {
|
||||||
|
navigate(extensionsURL())
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ type: 'separator' },
|
||||||
{ role: 'services' },
|
{ role: 'services' },
|
||||||
{ type: 'separator' },
|
{ type: 'separator' },
|
||||||
{ role: 'hide' },
|
{ role: 'hide' },
|
||||||
|
|||||||
11
src/renderer/components/+extensions/extensions.route.ts
Normal file
11
src/renderer/components/+extensions/extensions.route.ts
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
import { RouteProps } from "react-router";
|
||||||
|
import { buildURL } from "../../navigation";
|
||||||
|
|
||||||
|
export const extensionsRoute: RouteProps = {
|
||||||
|
path: "/extensions"
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface IExtensionsRouteParams {
|
||||||
|
}
|
||||||
|
|
||||||
|
export const extensionsURL = buildURL<IExtensionsRouteParams>(extensionsRoute.path);
|
||||||
4
src/renderer/components/+extensions/extensions.scss
Normal file
4
src/renderer/components/+extensions/extensions.scss
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
.Extensions {
|
||||||
|
$spacing: $padding * 2;
|
||||||
|
padding: $spacing;
|
||||||
|
}
|
||||||
31
src/renderer/components/+extensions/extensions.tsx
Normal file
31
src/renderer/components/+extensions/extensions.tsx
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
import "./extensions.scss"
|
||||||
|
import React from "react";
|
||||||
|
import { observer } from "mobx-react";
|
||||||
|
import { extensionStore } from "../../../extensions/extension-store";
|
||||||
|
import { WizardLayout } from "../layout/wizard-layout";
|
||||||
|
import { Icon } from "../icon";
|
||||||
|
|
||||||
|
@observer
|
||||||
|
export class Extensions extends React.Component {
|
||||||
|
// todo: add input-select to customize extensions loading folder(s)
|
||||||
|
renderInfoPanel() {
|
||||||
|
return (
|
||||||
|
<div className="info-panel flex gaps align-center">
|
||||||
|
<Icon material="info"/>
|
||||||
|
<p>Extensions available to install</p>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
render() {
|
||||||
|
const { installed: installedExtensions } = extensionStore;
|
||||||
|
return (
|
||||||
|
<WizardLayout className="Extensions" infoPanel={this.renderInfoPanel()}>
|
||||||
|
<h2>Extensions</h2>
|
||||||
|
<pre>
|
||||||
|
{JSON.stringify(installedExtensions.toJSON(), null, 2)}
|
||||||
|
</pre>
|
||||||
|
</WizardLayout>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
2
src/renderer/components/+extensions/index.ts
Normal file
2
src/renderer/components/+extensions/index.ts
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
export * from "./extensions.route"
|
||||||
|
export * from "./extensions"
|
||||||
@ -11,6 +11,7 @@ import { Workspaces, workspacesRoute } from "../+workspaces";
|
|||||||
import { AddCluster, addClusterRoute } from "../+add-cluster";
|
import { AddCluster, addClusterRoute } from "../+add-cluster";
|
||||||
import { ClusterView } from "./cluster-view";
|
import { ClusterView } from "./cluster-view";
|
||||||
import { ClusterSettings, clusterSettingsRoute } from "../+cluster-settings";
|
import { ClusterSettings, clusterSettingsRoute } from "../+cluster-settings";
|
||||||
|
import { Extensions, extensionsRoute } from "../+extensions";
|
||||||
import { clusterViewRoute, clusterViewURL, getMatchedCluster, getMatchedClusterId } from "./cluster-view.route";
|
import { clusterViewRoute, clusterViewURL, getMatchedCluster, getMatchedClusterId } from "./cluster-view.route";
|
||||||
import { clusterStore } from "../../../common/cluster-store";
|
import { clusterStore } from "../../../common/cluster-store";
|
||||||
import { hasLoadedView, initView, lensViews, refreshViews } from "./lens-views";
|
import { hasLoadedView, initView, lensViews, refreshViews } from "./lens-views";
|
||||||
@ -60,6 +61,7 @@ export class ClusterManager extends React.Component {
|
|||||||
<Route component={AddCluster} {...addClusterRoute}/>
|
<Route component={AddCluster} {...addClusterRoute}/>
|
||||||
<Route component={ClusterView} {...clusterViewRoute}/>
|
<Route component={ClusterView} {...clusterViewRoute}/>
|
||||||
<Route component={ClusterSettings} {...clusterSettingsRoute}/>
|
<Route component={ClusterSettings} {...clusterSettingsRoute}/>
|
||||||
|
<Route component={Extensions} {...extensionsRoute}/>
|
||||||
<Redirect exact to={this.startUrl}/>
|
<Redirect exact to={this.startUrl}/>
|
||||||
</Switch>
|
</Switch>
|
||||||
</main>
|
</main>
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user