33 LocalDatabase ,
44 LocalList ,
55 RemoteRepositoryList ,
6+ SelectedDbItemKind ,
67} from "./config/db-config" ;
78import {
89 DbItemKind ,
@@ -18,16 +19,20 @@ import {
1819
1920export function createRemoteTree ( dbConfig : DbConfig ) : RootRemoteDbItem {
2021 const systemDefinedLists = [
21- createSystemDefinedList ( 10 ) ,
22- createSystemDefinedList ( 100 ) ,
23- createSystemDefinedList ( 1000 ) ,
22+ createSystemDefinedList ( 10 , dbConfig ) ,
23+ createSystemDefinedList ( 100 , dbConfig ) ,
24+ createSystemDefinedList ( 1000 , dbConfig ) ,
2425 ] ;
2526
2627 const userDefinedRepoLists = dbConfig . databases . remote . repositoryLists . map (
27- createUserDefinedList ,
28+ ( r ) => createRemoteUserDefinedList ( r , dbConfig ) ,
29+ ) ;
30+ const owners = dbConfig . databases . remote . owners . map ( ( o ) =>
31+ createOwnerItem ( o , dbConfig ) ,
32+ ) ;
33+ const repos = dbConfig . databases . remote . repositories . map ( ( r ) =>
34+ createRepoItem ( r , dbConfig ) ,
2835 ) ;
29- const owners = dbConfig . databases . remote . owners . map ( createOwnerItem ) ;
30- const repos = dbConfig . databases . remote . repositories . map ( createRepoItem ) ;
3136
3237 return {
3338 kind : DbItemKind . RootRemote ,
@@ -41,62 +46,118 @@ export function createRemoteTree(dbConfig: DbConfig): RootRemoteDbItem {
4146}
4247
4348export function createLocalTree ( dbConfig : DbConfig ) : RootLocalDbItem {
44- const localLists = dbConfig . databases . local . lists . map ( createLocalList ) ;
45- const localDbs = dbConfig . databases . local . databases . map ( createLocalDb ) ;
49+ const localLists = dbConfig . databases . local . lists . map ( ( l ) =>
50+ createLocalList ( l , dbConfig ) ,
51+ ) ;
52+ const localDbs = dbConfig . databases . local . databases . map ( ( l ) =>
53+ createLocalDb ( l , dbConfig ) ,
54+ ) ;
4655
4756 return {
4857 kind : DbItemKind . RootLocal ,
4958 children : [ ...localLists , ...localDbs ] ,
5059 } ;
5160}
5261
53- function createSystemDefinedList ( n : number ) : RemoteSystemDefinedListDbItem {
62+ function createSystemDefinedList (
63+ n : number ,
64+ dbConfig : DbConfig ,
65+ ) : RemoteSystemDefinedListDbItem {
66+ const listName = `top_${ n } ` ;
67+
68+ const selected =
69+ dbConfig . selected &&
70+ dbConfig . selected . kind === SelectedDbItemKind . RemoteSystemDefinedList &&
71+ dbConfig . selected . listName === listName ;
72+
5473 return {
5574 kind : DbItemKind . RemoteSystemDefinedList ,
56- listName : `top_ ${ n } ` ,
75+ listName,
5776 listDisplayName : `Top ${ n } repositories` ,
5877 listDescription : `Top ${ n } repositories of a language` ,
78+ selected : ! ! selected ,
5979 } ;
6080}
6181
62- function createUserDefinedList (
82+ function createRemoteUserDefinedList (
6383 list : RemoteRepositoryList ,
84+ dbConfig : DbConfig ,
6485) : RemoteUserDefinedListDbItem {
86+ const selected =
87+ dbConfig . selected &&
88+ dbConfig . selected . kind === SelectedDbItemKind . RemoteUserDefinedList &&
89+ dbConfig . selected . listName === list . name ;
90+
6591 return {
6692 kind : DbItemKind . RemoteUserDefinedList ,
6793 listName : list . name ,
68- repos : list . repositories . map ( ( r ) => createRepoItem ( r ) ) ,
94+ repos : list . repositories . map ( ( r ) => createRepoItem ( r , dbConfig , list . name ) ) ,
95+ selected : ! ! selected ,
6996 } ;
7097}
7198
72- function createOwnerItem ( owner : string ) : RemoteOwnerDbItem {
99+ function createOwnerItem ( owner : string , dbConfig : DbConfig ) : RemoteOwnerDbItem {
100+ const selected =
101+ dbConfig . selected &&
102+ dbConfig . selected . kind === SelectedDbItemKind . RemoteOwner &&
103+ dbConfig . selected . ownerName === owner ;
104+
73105 return {
74106 kind : DbItemKind . RemoteOwner ,
75107 ownerName : owner ,
108+ selected : ! ! selected ,
76109 } ;
77110}
78111
79- function createRepoItem ( repo : string ) : RemoteRepoDbItem {
112+ function createRepoItem (
113+ repo : string ,
114+ dbConfig : DbConfig ,
115+ listName ?: string ,
116+ ) : RemoteRepoDbItem {
117+ const selected =
118+ dbConfig . selected &&
119+ dbConfig . selected . kind === SelectedDbItemKind . RemoteRepository &&
120+ dbConfig . selected . repositoryName === repo &&
121+ dbConfig . selected . listName === listName ;
122+
80123 return {
81124 kind : DbItemKind . RemoteRepo ,
82125 repoFullName : repo ,
126+ selected : ! ! selected ,
83127 } ;
84128}
85129
86- function createLocalList ( list : LocalList ) : LocalListDbItem {
130+ function createLocalList ( list : LocalList , dbConfig : DbConfig ) : LocalListDbItem {
131+ const selected =
132+ dbConfig . selected &&
133+ dbConfig . selected . kind === SelectedDbItemKind . LocalUserDefinedList &&
134+ dbConfig . selected . listName === list . name ;
135+
87136 return {
88137 kind : DbItemKind . LocalList ,
89138 listName : list . name ,
90- databases : list . databases . map ( createLocalDb ) ,
139+ databases : list . databases . map ( ( d ) => createLocalDb ( d , dbConfig , list . name ) ) ,
140+ selected : ! ! selected ,
91141 } ;
92142}
93143
94- function createLocalDb ( db : LocalDatabase ) : LocalDatabaseDbItem {
144+ function createLocalDb (
145+ db : LocalDatabase ,
146+ dbConfig : DbConfig ,
147+ listName ?: string ,
148+ ) : LocalDatabaseDbItem {
149+ const selected =
150+ dbConfig . selected &&
151+ dbConfig . selected . kind === SelectedDbItemKind . LocalDatabase &&
152+ dbConfig . selected . databaseName === db . name &&
153+ dbConfig . selected . listName === listName ;
154+
95155 return {
96156 kind : DbItemKind . LocalDatabase ,
97157 databaseName : db . name ,
98158 dateAdded : db . dateAdded ,
99159 language : db . language ,
100160 storagePath : db . storagePath ,
161+ selected : ! ! selected ,
101162 } ;
102163}
0 commit comments