1- import { DbItem , DbItemKind } from "./db-item" ;
1+ import { DbItem , DbItemKind , LocalDbItem , RemoteDbItem } from "./db-item" ;
22
33export 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