diff --git a/packages/web/src/commands/stdCommands.ts b/packages/web/src/commands/stdCommands.ts
index 67deb9bdd..6a308a705 100644
--- a/packages/web/src/commands/stdCommands.ts
+++ b/packages/web/src/commands/stdCommands.ts
@@ -12,6 +12,7 @@ import openNewTab from '../utility/openNewTab';
import getElectron from '../utility/getElectron';
import { openElectronFile } from '../utility/openElectronFile';
import { getDefaultFileFormat } from '../plugins/fileformats';
+import { getCurrentConfig } from '../stores';
const electron = getElectron();
@@ -63,11 +64,12 @@ registerCommand({
registerCommand({
id: 'new.connection',
toolbar: true,
- icon: 'icon connection',
+ icon: 'icon new-connection',
toolbarName: 'Add connection',
category: 'New',
toolbarOrder: 1,
name: 'Connection',
+ testEnabled: () => !getCurrentConfig()?.runAsPortal,
onClick: () => showModal(ConnectionModal),
});
diff --git a/packages/web/src/stores.ts b/packages/web/src/stores.ts
index 134294bb2..76c37b054 100644
--- a/packages/web/src/stores.ts
+++ b/packages/web/src/stores.ts
@@ -3,6 +3,7 @@ import { ExtensionsDirectory } from 'dbgate-types';
import invalidateCommands from './commands/invalidateCommands';
import getElectron from './utility/getElectron';
import { GlobalCommand } from './commands/registerCommand';
+import { useConfig } from './utility/metadataLoaders';
interface TabDefinition {
title: string;
@@ -98,3 +99,11 @@ activeTab.subscribe(value => {
activeTabValue = value;
});
export const getActiveTab = () => activeTabValue;
+
+const currentConfigStore = useConfig();
+let currentConfigValue = null;
+currentConfigStore.subscribe(value => {
+ currentConfigValue = value;
+ invalidateCommands();
+});
+export const getCurrentConfig = () => currentConfigValue;
diff --git a/packages/web/src/utility/metadataLoaders.ts b/packages/web/src/utility/metadataLoaders.ts
index c1210dc55..7e05e0a52 100644
--- a/packages/web/src/utility/metadataLoaders.ts
+++ b/packages/web/src/utility/metadataLoaders.ts
@@ -332,7 +332,7 @@ export function useConnectionList() {
}
export function getConfig() {
- return getCore(configLoader, {}) || {};
+ return getCore(configLoader, {});
}
export function useConfig() {
return useCore(configLoader, {});
diff --git a/packages/web/src/widgets/ConnectionList.svelte b/packages/web/src/widgets/ConnectionList.svelte
index 629026426..1aceab4e9 100644
--- a/packages/web/src/widgets/ConnectionList.svelte
+++ b/packages/web/src/widgets/ConnectionList.svelte
@@ -8,8 +8,10 @@
import AppObjectList from '../appobj/AppObjectList.svelte';
import * as connectionAppObject from '../appobj/ConnectionAppObject.svelte';
import SubDatabaseList from '../appobj/SubDatabaseList.svelte';
- import { openedConnections } from '../stores';
+ import { commands, openedConnections } from '../stores';
import axiosInstance from '../utility/axiosInstance';
+ import ToolbarButton from './ToolbarButton.svelte';
+ import runCommand from '../commands/runCommand';
const connections = useConnectionList();
const serverStatus = useServerStatus();
@@ -41,4 +43,9 @@
isExpandable={data => $openedConnections.includes(data._id)}
{filter}
/>
+ {#if $connections && $connections.length == 0 && $commands['new.connection']?.enabled}
+