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,
|
viewerBottomAppBarButtons,
|
||||||
homeCollectionsNavBarButtons,
|
homeCollectionsNavBarButtons,
|
||||||
lastAdRewardTime,
|
lastAdRewardTime,
|
||||||
|
isPersonalizedAds,
|
||||||
;
|
;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -221,6 +222,8 @@ enum PrefKey implements PrefKeyInterface {
|
||||||
return "homeCollectionsNavBarButtons";
|
return "homeCollectionsNavBarButtons";
|
||||||
case PrefKey.lastAdRewardTime:
|
case PrefKey.lastAdRewardTime:
|
||||||
return "lastAdRewardTime";
|
return "lastAdRewardTime";
|
||||||
|
case PrefKey.isPersonalizedAds:
|
||||||
|
return "isPersonalizedAds";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -172,6 +172,13 @@ extension PrefExtension on Pref {
|
||||||
PrefKey.lastAdRewardTime,
|
PrefKey.lastAdRewardTime,
|
||||||
value,
|
value,
|
||||||
(key, value) => provider.setInt(key, 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 {
|
extension AccountPrefExtension on AccountPref {
|
||||||
|
|
|
@ -9,6 +9,8 @@
|
||||||
"settingsPrivacyPageTitle": "Privacy settings",
|
"settingsPrivacyPageTitle": "Privacy settings",
|
||||||
"settingsAnalyticsTitle": "Analytics",
|
"settingsAnalyticsTitle": "Analytics",
|
||||||
"settingsAnalyticsSubtitle": "Collect analytics after an error to help developers better diagnose the issue",
|
"settingsAnalyticsSubtitle": "Collect analytics after an error to help developers better diagnose the issue",
|
||||||
|
"settingsPersonalizedAdsTitle": "Personalized ads",
|
||||||
|
"settingsPersonalizedAdsSubtitle": "Show more relevant ads",
|
||||||
"settingsPrivacyPolicyTitle": "Privacy policy",
|
"settingsPrivacyPolicyTitle": "Privacy policy",
|
||||||
"setupPrivacyAgreeStatement": "Please read carefully the above privacy policy. By continuing, you agree to our privacy policy",
|
"setupPrivacyAgreeStatement": "Please read carefully the above privacy policy. By continuing, you agree to our privacy policy",
|
||||||
"photosTabLabel": "Photos",
|
"photosTabLabel": "Photos",
|
||||||
|
|
|
@ -214,4 +214,5 @@ class RewardedAdHandler {
|
||||||
static final _log = Logger("widget.ad.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/app_localizations.dart';
|
||||||
import 'package:nc_photos/controller/pref_controller.dart';
|
import 'package:nc_photos/controller/pref_controller.dart';
|
||||||
import 'package:nc_photos/debug_util.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/k.dart' as k;
|
||||||
import 'package:nc_photos/language_util.dart' as language_util;
|
import 'package:nc_photos/language_util.dart' as language_util;
|
||||||
import 'package:nc_photos/mobile/platform.dart'
|
import 'package:nc_photos/mobile/platform.dart'
|
||||||
|
@ -280,6 +281,9 @@ class _PrivacySettingsState extends State<_PrivacySettings> {
|
||||||
_isEnableAnalytics =
|
_isEnableAnalytics =
|
||||||
FirebaseCrashlytics.instance.isCrashlyticsCollectionEnabled;
|
FirebaseCrashlytics.instance.isCrashlyticsCollectionEnabled;
|
||||||
}
|
}
|
||||||
|
if (features.isSupportAds) {
|
||||||
|
_isEnablePersonalizedAds = Pref().isPersonalizedAdsOr(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
|
@ -308,6 +312,13 @@ class _PrivacySettingsState extends State<_PrivacySettings> {
|
||||||
value: _isEnableAnalytics,
|
value: _isEnableAnalytics,
|
||||||
onChanged: (value) => _onAnalyticsChanged(value),
|
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(
|
ListTile(
|
||||||
title: Text(L10n.global().settingsPrivacyPolicyTitle),
|
title: Text(L10n.global().settingsPrivacyPolicyTitle),
|
||||||
onTap: () {
|
onTap: () {
|
||||||
|
@ -328,5 +339,13 @@ class _PrivacySettingsState extends State<_PrivacySettings> {
|
||||||
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(value);
|
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _onPersonalizedAdsChanged(bool value) {
|
||||||
|
Pref().setPersonalizedAds(value);
|
||||||
|
setState(() {
|
||||||
|
_isEnablePersonalizedAds = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
late bool _isEnableAnalytics;
|
late bool _isEnableAnalytics;
|
||||||
|
late bool _isEnablePersonalizedAds;
|
||||||
}
|
}
|
||||||
|
|
|
@ -264,6 +264,17 @@ class _PrivacyState extends State<_Privacy> {
|
||||||
child: Text(L10n.global().settingsAnalyticsSubtitle),
|
child: Text(L10n.global().settingsAnalyticsSubtitle),
|
||||||
),
|
),
|
||||||
const SizedBox(height: 16),
|
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(
|
||||||
padding: const EdgeInsets.symmetric(horizontal: 16),
|
padding: const EdgeInsets.symmetric(horizontal: 16),
|
||||||
child: InkWell(
|
child: InkWell(
|
||||||
|
@ -305,11 +316,13 @@ class _PrivacyState extends State<_Privacy> {
|
||||||
dispose() {
|
dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
// persist user's choice
|
// persist user's choice
|
||||||
_log.info("[dispose] Analytics: $_isEnableAnalytics");
|
_log.info(
|
||||||
|
"[dispose] Analytics: $_isEnableAnalytics, Personalized Ads: $_isEnablePersonalizedAds");
|
||||||
if (features.isSupportCrashlytics) {
|
if (features.isSupportCrashlytics) {
|
||||||
FirebaseCrashlytics.instance
|
FirebaseCrashlytics.instance
|
||||||
.setCrashlyticsCollectionEnabled(_isEnableAnalytics);
|
.setCrashlyticsCollectionEnabled(_isEnableAnalytics);
|
||||||
}
|
}
|
||||||
|
Pref().setPersonalizedAds(_isEnablePersonalizedAds);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onAnalyticsValueChanged(bool value) {
|
void _onAnalyticsValueChanged(bool value) {
|
||||||
|
@ -318,7 +331,14 @@ class _PrivacyState extends State<_Privacy> {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _onPersonalizedAdsValueChanged(bool value) {
|
||||||
|
setState(() {
|
||||||
|
_isEnablePersonalizedAds = value;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
bool _isEnableAnalytics = true;
|
bool _isEnableAnalytics = true;
|
||||||
|
bool _isEnablePersonalizedAds = true;
|
||||||
|
|
||||||
static final _log = Logger("widget.setup._PrivacyState");
|
static final _log = Logger("widget.setup._PrivacyState");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue