Skip to content

Commit 020ae33

Browse files
committed
feat(bootstrap): add countries and languages data clients and repositories
- Add DataClient implementations for Country and Language models - Create DataRepository instances for countries and languages - Integrate new repositories into the App widget - Implement both in-memory and API-based data clients for development environments
1 parent 163e24f commit 020ae33

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

lib/bootstrap.dart

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,8 @@ Future<Widget> bootstrap(
6060
DataClient<UserAppSettings> userAppSettingsClient;
6161
DataClient<RemoteConfig> remoteConfigClient;
6262
DataClient<DashboardSummary> dashboardSummaryClient;
63+
DataClient<Country> countriesClient;
64+
DataClient<Language> languagesClient;
6365

6466
if (appConfig.environment == app_config.AppEnvironment.demo) {
6567
headlinesClient = DataInMemory<Headline>(
@@ -102,6 +104,18 @@ Future<Widget> bootstrap(
102104
initialData: dashboardSummaryFixturesData,
103105
logger: Logger('DataInMemory<DashboardSummary>'),
104106
);
107+
countriesClient = DataInMemory<Country>(
108+
toJson: (i) => i.toJson(),
109+
getId: (i) => i.id,
110+
initialData: countriesFixturesData,
111+
logger: Logger('DataInMemory<Country>'),
112+
);
113+
languagesClient = DataInMemory<Language>(
114+
toJson: (i) => i.toJson(),
115+
getId: (i) => i.id,
116+
initialData: languagesFixturesData,
117+
logger: Logger('DataInMemory<Language>'),
118+
);
105119
} else if (appConfig.environment == app_config.AppEnvironment.development) {
106120
headlinesClient = DataApi<Headline>(
107121
httpClient: httpClient!,
@@ -152,6 +166,20 @@ Future<Widget> bootstrap(
152166
toJson: (summary) => summary.toJson(),
153167
logger: Logger('DataApi<DashboardSummary>'),
154168
);
169+
countriesClient = DataApi<Country>(
170+
httpClient: httpClient,
171+
modelName: 'country',
172+
fromJson: Country.fromJson,
173+
toJson: (country) => country.toJson(),
174+
logger: Logger('DataApi<Country>'),
175+
);
176+
languagesClient = DataApi<Language>(
177+
httpClient: httpClient,
178+
modelName: 'language',
179+
fromJson: Language.fromJson,
180+
toJson: (language) => language.toJson(),
181+
logger: Logger('DataApi<Language>'),
182+
);
155183
} else {
156184
headlinesClient = DataApi<Headline>(
157185
httpClient: httpClient!,
@@ -202,6 +230,20 @@ Future<Widget> bootstrap(
202230
toJson: (summary) => summary.toJson(),
203231
logger: Logger('DataApi<DashboardSummary>'),
204232
);
233+
countriesClient = DataApi<Country>(
234+
httpClient: httpClient,
235+
modelName: 'country',
236+
fromJson: Country.fromJson,
237+
toJson: (country) => country.toJson(),
238+
logger: Logger('DataApi<Country>'),
239+
);
240+
languagesClient = DataApi<Language>(
241+
httpClient: httpClient,
242+
modelName: 'language',
243+
fromJson: Language.fromJson,
244+
toJson: (language) => language.toJson(),
245+
logger: Logger('DataApi<Language>'),
246+
);
205247
}
206248

207249
final headlinesRepository = DataRepository<Headline>(
@@ -222,6 +264,10 @@ Future<Widget> bootstrap(
222264
final dashboardSummaryRepository = DataRepository<DashboardSummary>(
223265
dataClient: dashboardSummaryClient,
224266
);
267+
final countriesRepository =
268+
DataRepository<Country>(dataClient: countriesClient);
269+
final languagesRepository =
270+
DataRepository<Language>(dataClient: languagesClient);
225271

226272
return App(
227273
authenticationRepository: authenticationRepository,
@@ -232,6 +278,8 @@ Future<Widget> bootstrap(
232278
userContentPreferencesRepository: userContentPreferencesRepository,
233279
remoteConfigRepository: remoteConfigRepository,
234280
dashboardSummaryRepository: dashboardSummaryRepository,
281+
countriesRepository: countriesRepository,
282+
languagesRepository: languagesRepository,
235283
storageService: kvStorage,
236284
environment: environment,
237285
);

0 commit comments

Comments
 (0)