mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
Config personalized ads
This commit is contained in:
parent
5473ff5599
commit
677a73852f
6 changed files with 54 additions and 2 deletions
|
@ -119,6 +119,7 @@ enum PrefKey implements PrefKeyInterface {
|
|||
viewerBottomAppBarButtons,
|
||||
homeCollectionsNavBarButtons,
|
||||
lastAdRewardTime,
|
||||
isPersonalizedAds,
|
||||
;
|
||||
|
||||
@override
|
||||
|
@ -221,6 +222,8 @@ enum PrefKey implements PrefKeyInterface {
|
|||
return "homeCollectionsNavBarButtons";
|
||||
case PrefKey.lastAdRewardTime:
|
||||
return "lastAdRewardTime";
|
||||
case PrefKey.isPersonalizedAds:
|
||||
return "isPersonalizedAds";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -172,6 +172,13 @@ extension PrefExtension on Pref {
|
|||
PrefKey.lastAdRewardTime,
|
||||
value,
|
||||
(key, value) => provider.setInt(key, value));
|
||||
|
||||
bool? isPersonalizedAds() => provider.getBool(PrefKey.isPersonalizedAds);
|
||||
bool isPersonalizedAdsOr(bool def) => isPersonalizedAds() ?? def;
|
||||
Future<bool> setPersonalizedAds(bool value) => _set<bool>(
|
||||
PrefKey.isPersonalizedAds,
|
||||
value,
|
||||
(key, value) => provider.setBool(key, value));
|
||||
}
|
||||
|
||||
extension AccountPrefExtension on AccountPref {
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
"settingsPrivacyPageTitle": "Privacy settings",
|
||||
"settingsAnalyticsTitle": "Analytics",
|
||||
"settingsAnalyticsSubtitle": "Collect analytics after an error to help developers better diagnose the issue",
|
||||
"settingsPersonalizedAdsTitle": "Personalized ads",
|
||||
"settingsPersonalizedAdsSubtitle": "Show more relevant ads",
|
||||
"settingsPrivacyPolicyTitle": "Privacy policy",
|
||||
"setupPrivacyAgreeStatement": "Please read carefully the above privacy policy. By continuing, you agree to our privacy policy",
|
||||
"photosTabLabel": "Photos",
|
||||
|
|
|
@ -214,4 +214,5 @@ class RewardedAdHandler {
|
|||
static final _log = Logger("widget.ad.RewardedAdHandler");
|
||||
}
|
||||
|
||||
const _request = AdRequest();
|
||||
final _request =
|
||||
AdRequest(nonPersonalizedAds: !Pref().isPersonalizedAdsOr(false));
|
||||
|
|
|
@ -7,6 +7,7 @@ import 'package:logging/logging.dart';
|
|||
import 'package:nc_photos/app_localizations.dart';
|
||||
import 'package:nc_photos/controller/pref_controller.dart';
|
||||
import 'package:nc_photos/debug_util.dart';
|
||||
import 'package:nc_photos/entity/pref.dart';
|
||||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/language_util.dart' as language_util;
|
||||
import 'package:nc_photos/mobile/platform.dart'
|
||||
|
@ -280,6 +281,9 @@ class _PrivacySettingsState extends State<_PrivacySettings> {
|
|||
_isEnableAnalytics =
|
||||
FirebaseCrashlytics.instance.isCrashlyticsCollectionEnabled;
|
||||
}
|
||||
if (features.isSupportAds) {
|
||||
_isEnablePersonalizedAds = Pref().isPersonalizedAdsOr(false);
|
||||
}
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -308,6 +312,13 @@ class _PrivacySettingsState extends State<_PrivacySettings> {
|
|||
value: _isEnableAnalytics,
|
||||
onChanged: (value) => _onAnalyticsChanged(value),
|
||||
),
|
||||
if (features.isSupportAds)
|
||||
SwitchListTile(
|
||||
title: Text(L10n.global().settingsPersonalizedAdsTitle),
|
||||
subtitle: Text(L10n.global().settingsPersonalizedAdsSubtitle),
|
||||
value: _isEnablePersonalizedAds,
|
||||
onChanged: (value) => _onPersonalizedAdsChanged(value),
|
||||
),
|
||||
ListTile(
|
||||
title: Text(L10n.global().settingsPrivacyPolicyTitle),
|
||||
onTap: () {
|
||||
|
@ -328,5 +339,13 @@ class _PrivacySettingsState extends State<_PrivacySettings> {
|
|||
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(value);
|
||||
}
|
||||
|
||||
late bool _isEnableAnalytics;
|
||||
void _onPersonalizedAdsChanged(bool value) {
|
||||
Pref().setPersonalizedAds(value);
|
||||
setState(() {
|
||||
_isEnablePersonalizedAds = value;
|
||||
});
|
||||
}
|
||||
|
||||
late bool _isEnableAnalytics;
|
||||
late bool _isEnablePersonalizedAds;
|
||||
}
|
||||
|
|
|
@ -264,6 +264,17 @@ class _PrivacyState extends State<_Privacy> {
|
|||
child: Text(L10n.global().settingsAnalyticsSubtitle),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
SwitchListTile(
|
||||
title: Text(L10n.global().settingsPersonalizedAdsTitle),
|
||||
value: _isEnablePersonalizedAds,
|
||||
onChanged: _onPersonalizedAdsValueChanged,
|
||||
),
|
||||
const SizedBox(height: 8),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
child: Text(L10n.global().settingsPersonalizedAdsSubtitle),
|
||||
),
|
||||
const SizedBox(height: 16),
|
||||
Padding(
|
||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||
child: InkWell(
|
||||
|
@ -305,11 +316,13 @@ class _PrivacyState extends State<_Privacy> {
|
|||
dispose() {
|
||||
super.dispose();
|
||||
// persist user's choice
|
||||
_log.info("[dispose] Analytics: $_isEnableAnalytics");
|
||||
_log.info(
|
||||
"[dispose] Analytics: $_isEnableAnalytics, Personalized Ads: $_isEnablePersonalizedAds");
|
||||
if (features.isSupportCrashlytics) {
|
||||
FirebaseCrashlytics.instance
|
||||
.setCrashlyticsCollectionEnabled(_isEnableAnalytics);
|
||||
}
|
||||
Pref().setPersonalizedAds(_isEnablePersonalizedAds);
|
||||
}
|
||||
|
||||
void _onAnalyticsValueChanged(bool value) {
|
||||
|
@ -318,7 +331,14 @@ class _PrivacyState extends State<_Privacy> {
|
|||
});
|
||||
}
|
||||
|
||||
void _onPersonalizedAdsValueChanged(bool value) {
|
||||
setState(() {
|
||||
_isEnablePersonalizedAds = value;
|
||||
});
|
||||
}
|
||||
|
||||
bool _isEnableAnalytics = true;
|
||||
bool _isEnablePersonalizedAds = true;
|
||||
|
||||
static final _log = Logger("widget.setup._PrivacyState");
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue