Skip to content

Commit a12de02

Browse files
Merge pull request quarkusio#48235 from phillip-kruger/dev-ui-disable-add-ext
Add config option to disable extension management in dev ui
2 parents 820127f + 7b613ec commit a12de02

File tree

3 files changed

+24
-11
lines changed

3 files changed

+24
-11
lines changed

extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/DevUIConfig.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,12 @@ public interface DevUIConfig {
5252
*/
5353
Cors cors();
5454

55+
/**
56+
* Enable/Disable the ability to add and remove extensions from Dev UI
57+
*/
58+
@WithDefault("true")
59+
boolean allowExtensionManagement();
60+
5561
/**
5662
* Fine tune the theme
5763
*/

extensions/vertx-http/deployment/src/main/java/io/quarkus/devui/deployment/menu/ExtensionsProcessor.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.quarkus.devtools.commands.data.QuarkusCommandOutcome;
2222
import io.quarkus.devtools.project.QuarkusProject;
2323
import io.quarkus.devtools.project.QuarkusProjectHelper;
24+
import io.quarkus.devui.deployment.DevUIConfig;
2425
import io.quarkus.devui.deployment.ExtensionsBuildItem;
2526
import io.quarkus.devui.deployment.InternalPageBuildItem;
2627
import io.quarkus.devui.deployment.extension.Extension;
@@ -34,7 +35,7 @@
3435
public class ExtensionsProcessor {
3536

3637
@BuildStep(onlyIf = IsLocalDevelopment.class)
37-
InternalPageBuildItem createExtensionsPages(ExtensionsBuildItem extensionsBuildItem) {
38+
InternalPageBuildItem createExtensionsPages(ExtensionsBuildItem extensionsBuildItem, DevUIConfig config) {
3839

3940
InternalPageBuildItem extensionsPages = new InternalPageBuildItem("Extensions", 10, "qwc-extensions-menu-action");
4041

@@ -52,15 +53,18 @@ InternalPageBuildItem createExtensionsPages(ExtensionsBuildItem extensionsBuildI
5253
.icon("font-awesome-solid:puzzle-piece")
5354
.componentLink("qwc-extensions.js"));
5455

56+
extensionsPages.addBuildTimeData("allowExtensionManagement", config.allowExtensionManagement());
57+
5558
return extensionsPages;
5659
}
5760

5861
@BuildStep(onlyIf = IsLocalDevelopment.class)
5962
void createBuildTimeActions(BuildProducer<BuildTimeActionBuildItem> buildTimeActionProducer,
60-
LaunchModeBuildItem launchModeBuildItem) {
63+
LaunchModeBuildItem launchModeBuildItem, DevUIConfig config) {
6164

6265
if (launchModeBuildItem.getDevModeType().isPresent()
63-
&& launchModeBuildItem.getDevModeType().get().equals(DevModeType.LOCAL)) {
66+
&& launchModeBuildItem.getDevModeType().get().equals(DevModeType.LOCAL)
67+
&& config.allowExtensionManagement()) {
6468

6569
BuildTimeActionBuildItem buildTimeActions = new BuildTimeActionBuildItem(NAMESPACE);
6670
getCategories(buildTimeActions);

extensions/vertx-http/dev-ui-resources/src/main/resources/dev-ui/qwc/qwc-extensions.js

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
33
import { RouterController } from 'router-controller';
44
import { devuiState } from 'devui-state';
55
import { observeState } from 'lit-element-state';
6+
import { allowExtensionManagement } from 'devui-data';
67
import 'qwc/qwc-extension.js';
78
import 'qwc/qwc-extension-link.js';
89
import 'qwc/qwc-extension-add.js';
@@ -96,14 +97,16 @@ export class QwcExtensions extends observeState(LitElement) {
9697
connectedCallback() {
9798
super.connectedCallback();
9899
window.addEventListener('extensions-filters-changed', this._onFiltersChanged);
99-
this.jsonRpc.getInstalledNamespaces().then(jsonRpcResponse => {
100-
if (jsonRpcResponse.result) {
101-
this._installedExtensions = jsonRpcResponse.result;
102-
this._addExtensionsEnabled = true;
103-
}
104-
}).catch(e => {
105-
notifier.showErrorMessage("Could not list namespaces "+ e?.error?.message);
106-
});
100+
if (allowExtensionManagement) {
101+
this.jsonRpc.getInstalledNamespaces().then(jsonRpcResponse => {
102+
if (jsonRpcResponse.result) {
103+
this._installedExtensions = jsonRpcResponse.result;
104+
this._addExtensionsEnabled = true;
105+
}
106+
}).catch(e => {
107+
notifier.showErrorMessage("Could not list namespaces "+ e?.error?.message);
108+
});
109+
}
107110
}
108111

109112
disconnectedCallback() {

0 commit comments

Comments
 (0)