Skip to content

Commit 96800c8

Browse files
authored
feat: unique name for each new query window by incrementing the number (#30)
1 parent caa9b60 commit 96800c8

File tree

3 files changed

+25
-10
lines changed

3 files changed

+25
-10
lines changed

src/renderer/screens/DatabaseScreen/MainView.tsx

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,22 @@ import { useAppFeature } from 'renderer/contexts/AppFeatureProvider';
66
import { useWindowTab } from 'renderer/contexts/WindowTabProvider';
77
import QueryWindow from './QueryWindow';
88
import DatabaseTableList from 'renderer/components/DatabaseTable/DatabaseTableList';
9+
import generateIncrementalName from 'renderer/utils/generateIncrementalName';
910

1011
export default function MainView() {
1112
const { newWindow, tabs, setTabs, selectedTab, setSelectedTab } =
1213
useWindowTab();
1314
const { enableDebug } = useAppFeature();
1415

1516
const onNewTabClick = useCallback(() => {
16-
newWindow('Unnamed Query', (key, name) => (
17+
const incrementalTabName = generateIncrementalName(
18+
tabs.map((tab) => tab.name),
19+
'Unnamed Query'
20+
);
21+
newWindow(incrementalTabName, (key, name) => (
1722
<QueryWindow tabKey={key} name={name} />
1823
));
19-
}, [newWindow]);
24+
}, [newWindow, tabs]);
2025

2126
return (
2227
<Splitter primaryIndex={1} secondaryInitialSize={200}>
Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,12 @@
11
import { ConnectionStoreItem } from 'drivers/SQLLikeConnection';
2+
import generateIncrementalName from './generateIncrementalName';
23

34
export default function generateDatabaseName(
45
dbs: ConnectionStoreItem[],
56
name: string
67
) {
7-
const finalName = name.replace(/ \(\d+\)$/g, '');
8-
9-
for (let i = 0; i < 100; i++) {
10-
const newName = i > 0 ? `${finalName} (${i})` : finalName;
11-
if (!dbs.find((db) => db.name === newName)) return newName;
12-
}
13-
14-
return '';
8+
return generateIncrementalName(
9+
dbs.map((db) => db.name),
10+
name
11+
);
1512
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export default function generateIncrementalName(
2+
nameList: string[],
3+
name: string
4+
) {
5+
const finalName = name.replace(/ \(\d+\)$/g, '');
6+
7+
for (let i = 0; i < 1000; i++) {
8+
const newName = i > 0 ? `${finalName} (${i})` : finalName;
9+
if (!nameList.find((prevName) => prevName === newName)) return newName;
10+
}
11+
12+
return '';
13+
}

0 commit comments

Comments
 (0)