Skip to content

Commit 7a2f976

Browse files
committed
Refactor selection method to allow all types of DbItem lists
1 parent 9362881 commit 7a2f976

File tree

1 file changed

+31
-27
lines changed

1 file changed

+31
-27
lines changed
Lines changed: 31 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
import { DbItem, DbItemKind } from "./db-item";
1+
import { DbItem, DbItemKind, LocalDbItem, RemoteDbItem } from "./db-item";
22

33
export function getSelectedDbItem(dbItems: DbItem[]): DbItem | undefined {
44
for (const dbItem of dbItems) {
@@ -7,34 +7,38 @@ export function getSelectedDbItem(dbItems: DbItem[]): DbItem | undefined {
77
dbItem.kind === DbItemKind.RootLocal
88
) {
99
for (const child of dbItem.children) {
10-
switch (child.kind) {
11-
case DbItemKind.LocalList:
12-
if (child.selected) {
13-
return child;
14-
}
15-
for (const database of child.databases) {
16-
if (database.selected) {
17-
return database;
18-
}
19-
}
20-
break;
21-
case DbItemKind.RemoteUserDefinedList:
22-
if (child.selected) {
23-
return child;
24-
}
25-
for (const repo of child.repos) {
26-
if (repo.selected) {
27-
return repo;
28-
}
29-
}
30-
break;
31-
default:
32-
if (child.selected) {
33-
return child;
34-
}
35-
}
10+
const selectedItem = extractSelected(child);
11+
if (selectedItem) return selectedItem;
3612
}
13+
} else {
14+
const selectedItem = extractSelected(dbItem);
15+
if (selectedItem) return selectedItem;
3716
}
3817
}
3918
return undefined;
4019
}
20+
21+
function extractSelected(
22+
dbItem: RemoteDbItem | LocalDbItem,
23+
): DbItem | undefined {
24+
if (dbItem.selected) {
25+
return dbItem;
26+
}
27+
switch (dbItem.kind) {
28+
case DbItemKind.LocalList:
29+
for (const database of dbItem.databases) {
30+
if (database.selected) {
31+
return database;
32+
}
33+
}
34+
break;
35+
case DbItemKind.RemoteUserDefinedList:
36+
for (const repo of dbItem.repos) {
37+
if (repo.selected) {
38+
return repo;
39+
}
40+
}
41+
break;
42+
}
43+
return undefined;
44+
}

0 commit comments

Comments
 (0)