Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
38e5f4f
feat(ads): integrate InterstitialAdManager and navigatorKey in bootstrap
fulleni Sep 9, 2025
e40d23d
feat(ads): implement interstitial ad manager
fulleni Sep 9, 2025
e44028e
refactor(ads): remove unused AdNavigatorObserver
fulleni Sep 9, 2025
f67fa01
refactor(ads): replace AdNavigatorObserver with InterstitialAdManager
fulleni Sep 9, 2025
4f917b8
feat(app): add navigator key to app bloc
fulleni Sep 9, 2025
1d6710b
refactor(router): replace AdNavigatorObserver with GoRouterObserver
fulleni Sep 9, 2025
d0dacd5
feat(ads): implement interstitial ad trigger in headlines feed
fulleni Sep 9, 2025
945a2e9
chore: switch app environment to development
fulleni Sep 9, 2025
5909f85
refactor(ad): move InterstitialAdManager provider to after AppBloc
fulleni Sep 9, 2025
4417377
refactor(ads): remove BuildContext dependency for interstitial ad the…
fulleni Sep 9, 2025
004df1c
chore: switch app environment to demo
fulleni Sep 9, 2025
591bb94
feat(account): add interstitial ad trigger on saved headline tap
fulleni Sep 9, 2025
311bd36
feat(ads): add interstitial ad trigger when selecting a country
fulleni Sep 9, 2025
15c5f03
feat(ads): potential ad trigger on source item tap
fulleni Sep 9, 2025
3b4fadd
feat(ads): add potential ad trigger when tapping followed topic
fulleni Sep 9, 2025
970c073
feat(ads): implement interstitial ad trigger on article details view
fulleni Sep 9, 2025
1ddcce3
feat(ads): implement interstitial ad triggering on article navigation
fulleni Sep 9, 2025
0a320e7
feat(ads): implement interstitial ad trigger in headlines search
fulleni Sep 9, 2025
5269a8d
feat(ads): add interstitial ad trigger on country item tap
fulleni Sep 9, 2025
946d840
feat(ads): add interstitial ad trigger on source item tap
fulleni Sep 9, 2025
721f8b8
feat(ads): add interstitial ad trigger on topic item tap
fulleni Sep 9, 2025
6d0ae00
lint: misc
fulleni Sep 9, 2025
a145967
style: format misc
fulleni Sep 9, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/account/bloc/account_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/ads/interstitial_ad_manager.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/router/routes.dart';
import 'package:go_router/go_router.dart';
Expand Down Expand Up @@ -96,6 +97,9 @@ class FollowedCountriesListPage extends StatelessWidget {
},
),
onTap: () {
context.read<InterstitialAdManager>().onPotentialAdTrigger(
context: context,
);
context.pushNamed(
Routes.entityDetailsName,
pathParameters: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/account/bloc/account_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/ads/interstitial_ad_manager.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/router/routes.dart';
import 'package:go_router/go_router.dart';
Expand Down Expand Up @@ -93,6 +94,9 @@ class FollowedSourcesListPage extends StatelessWidget {
},
),
onTap: () {
context.read<InterstitialAdManager>().onPotentialAdTrigger(
context: context,
);
context.pushNamed(
Routes.entityDetailsName,
pathParameters: {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/account/bloc/account_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/ads/interstitial_ad_manager.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/router/routes.dart';
import 'package:go_router/go_router.dart';
Expand Down Expand Up @@ -101,6 +102,9 @@ class FollowedTopicsListPage extends StatelessWidget {
},
),
onTap: () {
context.read<InterstitialAdManager>().onPotentialAdTrigger(
context: context,
);
context.pushNamed(
Routes.entityDetailsName,
pathParameters: {
Expand Down
46 changes: 31 additions & 15 deletions lib/account/view/saved_headlines_page.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import 'package:core/core.dart';
import 'package:flutter/material.dart';
import 'package:flutter_bloc/flutter_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/account/bloc/account_bloc.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/ads/interstitial_ad_manager.dart';
import 'package:flutter_news_app_mobile_client_full_source_code/app/bloc/app_bloc.dart';
// HeadlineItemWidget import removed
import 'package:flutter_news_app_mobile_client_full_source_code/l10n/l10n.dart';
Expand Down Expand Up @@ -105,31 +106,46 @@ class SavedHeadlinesPage extends StatelessWidget {
case HeadlineImageStyle.hidden:
tile = HeadlineTileTextOnly(
headline: headline,
onHeadlineTap: () => context.goNamed(
Routes.accountArticleDetailsName,
pathParameters: {'id': headline.id},
extra: headline,
),
onHeadlineTap: () {
context
.read<InterstitialAdManager>()
.onPotentialAdTrigger(context: context);
context.goNamed(
Routes.accountArticleDetailsName,
pathParameters: {'id': headline.id},
extra: headline,
);
},
trailing: trailingButton,
);
case HeadlineImageStyle.smallThumbnail:
tile = HeadlineTileImageStart(
headline: headline,
onHeadlineTap: () => context.goNamed(
Routes.accountArticleDetailsName,
pathParameters: {'id': headline.id},
extra: headline,
),
onHeadlineTap: () {
context
.read<InterstitialAdManager>()
.onPotentialAdTrigger(context: context);
context.goNamed(
Routes.accountArticleDetailsName,
pathParameters: {'id': headline.id},
extra: headline,
);
},
trailing: trailingButton,
);
case HeadlineImageStyle.largeThumbnail:
tile = HeadlineTileImageTop(
headline: headline,
onHeadlineTap: () => context.goNamed(
Routes.accountArticleDetailsName,
pathParameters: {'id': headline.id},
extra: headline,
),
onHeadlineTap: () {
context
.read<InterstitialAdManager>()
.onPotentialAdTrigger(context: context);
context.goNamed(
Routes.accountArticleDetailsName,
pathParameters: {'id': headline.id},
extra: headline,
);
},
trailing: trailingButton,
);
}
Expand Down
Loading
Loading