Updates to add more ads and fix ad types.

This commit is contained in:
Courtney Arnold 2026-08-31 20:17:22 -05:00
parent ad850d2be6
commit ad2d932842
17 changed files with 552 additions and 59 deletions

View file

@ -92,6 +92,25 @@ class _DataSettingsScreenState extends State<DataSettingsScreen> {
}
}
/// The resting (non-syncing) Sync Now icon — badged with the same
/// play-triangle [CloudBackupActionButton] uses, for anyone who isn't on
/// an active ad-free purchase, since tapping this can trigger the
/// rewarded ad gate (see [AppState.syncNow]/`AdService.showGateAd`). Not
/// a live prediction of whether *this* tap specifically will show one —
/// same general "this leads to an ad-supported feature" disclosure the
/// icon-badge uses elsewhere, not an attempt to account for the open
/// gate window or the free-first-sync case.
Widget _syncNowIcon(BuildContext context, AppState appState) {
const icon = Icon(Icons.sync);
if (appState.adsCurrentlyDisabled) return icon;
final colors = Theme.of(context).colorScheme;
return Badge(
backgroundColor: colors.tertiary,
label: Icon(Icons.play_arrow, size: 8, color: colors.onTertiary),
child: icon,
);
}
/// Shared warning-dialog shell for both purge actions — [message] is the
/// caller's job to make specific and unambiguous, since this is the only
/// thing standing between the user and an unrecoverable delete.
@ -283,7 +302,7 @@ class _DataSettingsScreenState extends State<DataSettingsScreen> {
height: 16,
width: 16,
child: CircularProgressIndicator(strokeWidth: 2))
: const Icon(Icons.sync),
: _syncNowIcon(context, appState),
label: const Text('Sync Now'),
),
TextButton.icon(