11import { keyBy , mapValues , omit , pick } from "lodash"
22import settings , { setDefaultConfigValues } from "@/settings"
33import currentMode from "@/mode"
4- import { getAllCorporaInFolders } from "@/corpora/corpus-chooser"
54import { corpusListing , setCorpusListing } from "@/corpora/corpus_listing"
65import { CorpusSet } from "@/corpora/corpus-set"
76import { CorpusSetParallel } from "@/parallel/corpus-set-parallel"
@@ -13,6 +12,7 @@ import { ConfigTransformed, CorpusTransformed } from "@/settings/config-transfor
1312import { korpRequest } from "@/backend/common"
1413import { getLocData } from "@/i18n/loc-data"
1514import moment from "moment"
15+ import { getAllCorporaInFolders } from "./corpora/corpus-chooser"
1616
1717type InfoData = Record < string , Pick < CorpusTransformed , "info" | "private_struct_attributes" > >
1818
@@ -107,39 +107,19 @@ function transformConfig(config: Config, infos: InfoData): ConfigTransformed {
107107
108108 const modes = config . modes . map ( ( mode ) => ( { ...mode , selected : mode . mode == currentMode } ) )
109109
110+ // Resolve folder names in the default corpus selection.
111+ // Compat added in October 2025: from now on this setting doesn't need to prepend folder names with "__"
112+ const preselectedCorpora = config . preselected_corpora ?. flatMap ( ( id ) =>
113+ getAllCorporaInFolders ( config . folders || { } , id . replace ( / ^ _ _ / , "" ) ) ,
114+ )
115+
110116 return {
111117 folders : { } ,
112118 ...omit ( config , "pos_attributes" , "corpora" ) ,
113119 corpora : mapValues ( config . corpora , transformCorpus ) ,
114120 modes,
115121 mode : modes . find ( ( mode ) => mode . selected ) ! ,
116- }
117- }
118-
119- /** Determine initial corpus selection. */
120- function setInitialCorpora ( ) : void {
121- // if no preselectedCorpora is defined, use all of them
122- if ( ! settings . preselected_corpora ?. length ) {
123- // if all corpora in mode is limited_access, make them all preselected
124- if ( corpusListing . corpora . filter ( ( corpus ) => ! corpus . limited_access ) . length == 0 ) {
125- settings . preselected_corpora = corpusListing . corpora
126- . filter ( ( corpus ) => ! corpus . hide )
127- . map ( ( corpus ) => corpus . id )
128-
129- // else filter out the ones with limited_access
130- } else {
131- settings . preselected_corpora = corpusListing . corpora
132- . filter ( ( corpus ) => ! ( corpus . hide || corpus . limited_access ) )
133- . map ( ( corpus ) => corpus . id )
134- }
135- } else {
136- let expandedCorpora : string [ ] = [ ]
137- for ( let preItem of settings . preselected_corpora ) {
138- preItem = preItem . replace ( / ^ _ _ / g, "" )
139- expandedCorpora . push ( ...getAllCorporaInFolders ( settings . folders , preItem ) )
140- }
141- // folders expanded, save
142- settings . preselected_corpora = expandedCorpora
122+ preselected_corpora : preselectedCorpora ,
143123 }
144124}
145125
@@ -179,8 +159,6 @@ export async function fetchInitialData(authDef: Promise<boolean>) {
179159 ? new CorpusSetParallel ( corpora as CorpusTransformed < CorpusParallel > [ ] )
180160 : new CorpusSet ( corpora )
181161 setCorpusListing ( corpusListing )
182-
183- setInitialCorpora ( )
184162}
185163
186164/** Find most recently updated corpora. */
0 commit comments