Refactor selection method to allow all types of DbItem lists
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
import { DbItem, DbItemKind } from "./db-item";
|
||||
import { DbItem, DbItemKind, LocalDbItem, RemoteDbItem } from "./db-item";
|
||||
|
||||
export function getSelectedDbItem(dbItems: DbItem[]): DbItem | undefined {
|
||||
for (const dbItem of dbItems) {
|
||||
@@ -7,34 +7,38 @@ export function getSelectedDbItem(dbItems: DbItem[]): DbItem | undefined {
|
||||
dbItem.kind === DbItemKind.RootLocal
|
||||
) {
|
||||
for (const child of dbItem.children) {
|
||||
switch (child.kind) {
|
||||
case DbItemKind.LocalList:
|
||||
if (child.selected) {
|
||||
return child;
|
||||
}
|
||||
for (const database of child.databases) {
|
||||
if (database.selected) {
|
||||
return database;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DbItemKind.RemoteUserDefinedList:
|
||||
if (child.selected) {
|
||||
return child;
|
||||
}
|
||||
for (const repo of child.repos) {
|
||||
if (repo.selected) {
|
||||
return repo;
|
||||
}
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (child.selected) {
|
||||
return child;
|
||||
}
|
||||
}
|
||||
const selectedItem = extractSelected(child);
|
||||
if (selectedItem) return selectedItem;
|
||||
}
|
||||
} else {
|
||||
const selectedItem = extractSelected(dbItem);
|
||||
if (selectedItem) return selectedItem;
|
||||
}
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
function extractSelected(
|
||||
dbItem: RemoteDbItem | LocalDbItem,
|
||||
): DbItem | undefined {
|
||||
if (dbItem.selected) {
|
||||
return dbItem;
|
||||
}
|
||||
switch (dbItem.kind) {
|
||||
case DbItemKind.LocalList:
|
||||
for (const database of dbItem.databases) {
|
||||
if (database.selected) {
|
||||
return database;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case DbItemKind.RemoteUserDefinedList:
|
||||
for (const repo of dbItem.repos) {
|
||||
if (repo.selected) {
|
||||
return repo;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
return undefined;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user