Skip to content

Commit df7ecb9

Browse files
authored
Merge pull request #74 from flutter-news-app-full-source-code/integrate-local-ads-into-the-dashboard-management
Integrate local ads into the dashboard management
2 parents fc8f927 + 77e92ab commit df7ecb9

File tree

59 files changed

+7309
-54
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

59 files changed

+7309
-54
lines changed

lib/app/view/app.dart

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33

44
import 'package:auth_repository/auth_repository.dart';
55
import 'package:core/core.dart' hide AppStatus;
6-
// Import for app_theme.dart
76
import 'package:data_repository/data_repository.dart';
87
import 'package:flex_color_scheme/flex_color_scheme.dart';
98
import 'package:flutter/material.dart';
@@ -35,6 +34,7 @@ class App extends StatelessWidget {
3534
required DataRepository<DashboardSummary> dashboardSummaryRepository,
3635
required DataRepository<Country> countriesRepository,
3736
required DataRepository<Language> languagesRepository,
37+
required DataRepository<LocalAd> localAdsRepository,
3838
required KVStorageService storageService,
3939
required AppEnvironment environment,
4040
super.key,
@@ -49,6 +49,7 @@ class App extends StatelessWidget {
4949
_dashboardSummaryRepository = dashboardSummaryRepository,
5050
_countriesRepository = countriesRepository,
5151
_languagesRepository = languagesRepository,
52+
_localAdsRepository = localAdsRepository,
5253
_environment = environment;
5354

5455
final AuthRepository _authenticationRepository;
@@ -62,6 +63,7 @@ class App extends StatelessWidget {
6263
final DataRepository<DashboardSummary> _dashboardSummaryRepository;
6364
final DataRepository<Country> _countriesRepository;
6465
final DataRepository<Language> _languagesRepository;
66+
final DataRepository<LocalAd> _localAdsRepository;
6567
final KVStorageService _kvStorageService;
6668
final AppEnvironment _environment;
6769

@@ -79,6 +81,7 @@ class App extends StatelessWidget {
7981
RepositoryProvider.value(value: _dashboardSummaryRepository),
8082
RepositoryProvider.value(value: _countriesRepository),
8183
RepositoryProvider.value(value: _languagesRepository),
84+
RepositoryProvider.value(value: _localAdsRepository),
8285
RepositoryProvider.value(value: _kvStorageService),
8386
RepositoryProvider(
8487
create: (context) => const ThrottledFetchingService(),

lib/app_configuration/widgets/ad_platform_config_form.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ import 'package:flutter/material.dart';
33
import 'package:flutter_news_app_web_dashboard_full_source_code/app_configuration/widgets/app_config_form_fields.dart';
44
import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/app_localizations.dart';
55
import 'package:flutter_news_app_web_dashboard_full_source_code/l10n/l10n.dart';
6+
import 'package:flutter_news_app_web_dashboard_full_source_code/router/routes.dart';
7+
import 'package:go_router/go_router.dart';
68
import 'package:ui_kit/ui_kit.dart';
79

810
/// {@template ad_platform_config_form}
@@ -295,7 +297,7 @@ class _AdPlatformConfigFormState extends State<AdPlatformConfigForm> {
295297
),
296298
const SizedBox(height: AppSpacing.lg),
297299

298-
// Local Ad Management (Non-functional as requested)
300+
// Local Ad Management
299301
if (_selectedPlatform == AdPlatformType.local)
300302
ExpansionTile(
301303
title: Text(l10n.localAdManagementTitle),
@@ -319,7 +321,8 @@ class _AdPlatformConfigFormState extends State<AdPlatformConfigForm> {
319321
const SizedBox(height: AppSpacing.lg),
320322
Center(
321323
child: ElevatedButton(
322-
onPressed: null,
324+
onPressed: () =>
325+
context.goNamed(Routes.localAdsManagementName),
323326
child: Text(l10n.manageLocalAdsButton),
324327
),
325328
),

lib/bootstrap.dart

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ Future<Widget> bootstrap(
6262
DataClient<DashboardSummary> dashboardSummaryClient;
6363
DataClient<Country> countriesClient;
6464
DataClient<Language> languagesClient;
65+
DataClient<LocalAd> localAdsClient;
6566

6667
if (appConfig.environment == app_config.AppEnvironment.demo) {
6768
headlinesClient = DataInMemory<Headline>(
@@ -116,6 +117,12 @@ Future<Widget> bootstrap(
116117
initialData: languagesFixturesData,
117118
logger: Logger('DataInMemory<Language>'),
118119
);
120+
localAdsClient = DataInMemory<LocalAd>(
121+
toJson: FeedItem.toJson,
122+
getId: (i) => i.id,
123+
initialData: localAdsFixturesData,
124+
logger: Logger('DataInMemory<LocalAd>'),
125+
);
119126
} else if (appConfig.environment == app_config.AppEnvironment.development) {
120127
headlinesClient = DataApi<Headline>(
121128
httpClient: httpClient!,
@@ -180,6 +187,13 @@ Future<Widget> bootstrap(
180187
toJson: (language) => language.toJson(),
181188
logger: Logger('DataApi<Language>'),
182189
);
190+
localAdsClient = DataApi<LocalAd>(
191+
httpClient: httpClient,
192+
modelName: 'local_ad',
193+
fromJson: LocalAd.fromJson,
194+
toJson: LocalAd.toJson,
195+
logger: Logger('DataApi<LocalAd>'),
196+
);
183197
} else {
184198
headlinesClient = DataApi<Headline>(
185199
httpClient: httpClient!,
@@ -244,6 +258,13 @@ Future<Widget> bootstrap(
244258
toJson: (language) => language.toJson(),
245259
logger: Logger('DataApi<Language>'),
246260
);
261+
localAdsClient = DataApi<LocalAd>(
262+
httpClient: httpClient,
263+
modelName: 'local_ad',
264+
fromJson: LocalAd.fromJson,
265+
toJson: FeedItem.toJson,
266+
logger: Logger('DataApi<LocalAd>'),
267+
);
247268
}
248269

249270
final headlinesRepository = DataRepository<Headline>(
@@ -270,6 +291,9 @@ Future<Widget> bootstrap(
270291
final languagesRepository = DataRepository<Language>(
271292
dataClient: languagesClient,
272293
);
294+
final localAdsRepository = DataRepository<LocalAd>(
295+
dataClient: localAdsClient,
296+
);
273297

274298
return App(
275299
authenticationRepository: authenticationRepository,
@@ -282,6 +306,7 @@ Future<Widget> bootstrap(
282306
dashboardSummaryRepository: dashboardSummaryRepository,
283307
countriesRepository: countriesRepository,
284308
languagesRepository: languagesRepository,
309+
localAdsRepository: localAdsRepository,
285310
storageService: kvStorage,
286311
environment: environment,
287312
);

0 commit comments

Comments
 (0)