From 15c51724cec1b4ce4b21a3d6a0f21cdc2450e32a Mon Sep 17 00:00:00 2001 From: Xennis Date: Thu, 23 Nov 2023 17:58:50 +0100 Subject: [PATCH] Remove analytics --- green_walking/android/app/build.gradle | 1 - .../android/app/src/main/AndroidManifest.xml | 4 ++ green_walking/lib/l10n/app_de.arb | 5 +- green_walking/lib/l10n/app_en.arb | 14 +++-- .../pages/{imprint.dart => legal_notice.dart} | 6 +- green_walking/lib/pages/map.dart | 4 +- green_walking/lib/pages/settings.dart | 4 +- green_walking/lib/routes.dart | 6 +- green_walking/lib/services/app_prefs.dart | 2 +- .../lib/widgets/navigation_drawer.dart | 2 +- ...le.dart => crash_reporting_list_tile.dart} | 20 +++--- ...r_dialog.dart => user_consent_dialog.dart} | 24 ++++---- green_walking/pubspec.lock | 24 -------- green_walking/pubspec.yaml | 1 - green_walking/test/pages/imprint_test.dart | 11 ---- .../test/pages/legal_notice_test.dart | 11 ++++ green_walking/web/index.html | 2 - web/privacy/privacy-policy.md | 61 ++----------------- 18 files changed, 68 insertions(+), 134 deletions(-) rename green_walking/lib/pages/{imprint.dart => legal_notice.dart} (89%) rename green_walking/lib/widgets/settings/{analytics_list_tile.dart => crash_reporting_list_tile.dart} (58%) rename green_walking/lib/widgets/{gdpr_dialog.dart => user_consent_dialog.dart} (70%) delete mode 100644 green_walking/test/pages/imprint_test.dart create mode 100644 green_walking/test/pages/legal_notice_test.dart diff --git a/green_walking/android/app/build.gradle b/green_walking/android/app/build.gradle index 013777c..d052473 100644 --- a/green_walking/android/app/build.gradle +++ b/green_walking/android/app/build.gradle @@ -86,5 +86,4 @@ dependencies { // When using the BoM, you don't specify versions in Firebase library dependencies. //implementation platform('com.google.firebase:firebase-bom:29.0.0') //implementation 'com.google.firebase:firebase-crashlytics' - //implementation 'com.google.firebase:firebase-analytics' } diff --git a/green_walking/android/app/src/main/AndroidManifest.xml b/green_walking/android/app/src/main/AndroidManifest.xml index 808c066..35a921f 100644 --- a/green_walking/android/app/src/main/AndroidManifest.xml +++ b/green_walking/android/app/src/main/AndroidManifest.xml @@ -28,6 +28,10 @@ + + { @override void initState() { super.initState(); - WidgetsBinding.instance.addPostFrameCallback((_) => enableAnalyticsOrConsent(context)); + WidgetsBinding.instance.addPostFrameCallback((_) => enableCrashReportingOrConsent(context)); } @override diff --git a/green_walking/lib/pages/settings.dart b/green_walking/lib/pages/settings.dart index 95b2bf6..6560c14 100644 --- a/green_walking/lib/pages/settings.dart +++ b/green_walking/lib/pages/settings.dart @@ -3,7 +3,7 @@ import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:provider/provider.dart'; import '../provider/prefs_provider.dart'; -import '../widgets/settings/analytics_list_tile.dart'; +import '../widgets/settings/crash_reporting_list_tile.dart'; import '../widgets/settings/language_list_tile.dart'; import '../widgets/settings/theme_list_tile.dart'; @@ -26,7 +26,7 @@ class SettingsPage extends StatelessWidget { ThemeListTile(prefsProvider.themeMode), LanguageListTile(prefsProvider.locale), const Divider(), - const AnalyticsListTile() + const CrashReportingListTile() ])))); } } diff --git a/green_walking/lib/routes.dart b/green_walking/lib/routes.dart index b4825e3..43f6b20 100644 --- a/green_walking/lib/routes.dart +++ b/green_walking/lib/routes.dart @@ -1,13 +1,13 @@ import 'package:flutter/widgets.dart'; import 'pages/feedback.dart'; -import 'pages/imprint.dart'; +import 'pages/legal_notice.dart'; import 'pages/map.dart'; import 'pages/settings.dart'; class Routes { static const String feedback = 'feedback'; - static const String imprint = 'imprint'; + static const String legalNotice = 'legal-notice'; static const String map = 'map'; static const String privacy = 'privacy'; static const String settings = 'settings'; @@ -16,7 +16,7 @@ class Routes { Map getRoutes(BuildContext context) { return { Routes.feedback: (_) => const FeedbackPage(), - Routes.imprint: (_) => const ImprintPage(), + Routes.legalNotice: (_) => const LegalNoticePage(), Routes.map: (_) => const MapPage(), Routes.settings: (_) => const SettingsPage(), }; diff --git a/green_walking/lib/services/app_prefs.dart b/green_walking/lib/services/app_prefs.dart index 3288f74..a5e4c6c 100644 --- a/green_walking/lib/services/app_prefs.dart +++ b/green_walking/lib/services/app_prefs.dart @@ -8,7 +8,7 @@ import 'package:shared_preferences/shared_preferences.dart'; // ignore: avoid_classes_with_only_static_members class AppPrefs { static const String keyLastPosition = 'last-position'; - static const String analyticsEnabled = 'analytics-enabled'; + static const String crashReportingEnabled = 'crash-reporting-enabled'; static const String _keyThemeMode = 'themeMode'; static const String _keyLanguage = 'language'; diff --git a/green_walking/lib/widgets/navigation_drawer.dart b/green_walking/lib/widgets/navigation_drawer.dart index 224e8a1..cf1b18f 100644 --- a/green_walking/lib/widgets/navigation_drawer.dart +++ b/green_walking/lib/widgets/navigation_drawer.dart @@ -80,7 +80,7 @@ class AppNavigationDrawer extends StatelessWidget { ListTile( leading: const Icon(Icons.info), title: Text(locale.imprint), - onTap: () => Navigator.of(context).pushNamed(Routes.imprint), + onTap: () => Navigator.of(context).pushNamed(Routes.legalNotice), ), ], ), diff --git a/green_walking/lib/widgets/settings/analytics_list_tile.dart b/green_walking/lib/widgets/settings/crash_reporting_list_tile.dart similarity index 58% rename from green_walking/lib/widgets/settings/analytics_list_tile.dart rename to green_walking/lib/widgets/settings/crash_reporting_list_tile.dart index 45a364f..c7d2c82 100644 --- a/green_walking/lib/widgets/settings/analytics_list_tile.dart +++ b/green_walking/lib/widgets/settings/crash_reporting_list_tile.dart @@ -1,17 +1,17 @@ -import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import '../../services/app_prefs.dart'; -class AnalyticsListTile extends StatefulWidget { - const AnalyticsListTile({super.key}); +class CrashReportingListTile extends StatefulWidget { + const CrashReportingListTile({super.key}); @override - State createState() => _AnalyticsListTileState(); + State createState() => _CrashReportingListTileState(); } -class _AnalyticsListTileState extends State { +class _CrashReportingListTileState extends State { bool _enabled = false; @override @@ -20,12 +20,12 @@ class _AnalyticsListTileState extends State { return ListTile( leading: const Icon(Icons.analytics_outlined), - title: const Text("Google Analytics"), + title: Text(locale.settingsCrashReportingTitle), subtitle: Text( - locale.settingsTrackingDescription, + locale.settingsCrashReportingDescription, ), trailing: FutureBuilder( - future: AppPrefs.getBool(AppPrefs.analyticsEnabled), + future: AppPrefs.getBool(AppPrefs.crashReportingEnabled), initialData: _enabled, builder: (BuildContext context, AsyncSnapshot snapshot) { return Switch( @@ -34,8 +34,8 @@ class _AnalyticsListTileState extends State { if (newValue == null) { return; } - AppPrefs.setBool(AppPrefs.analyticsEnabled, newValue); - FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(newValue); + AppPrefs.setBool(AppPrefs.crashReportingEnabled, newValue); + FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(newValue); setState(() { _enabled = newValue; }); diff --git a/green_walking/lib/widgets/gdpr_dialog.dart b/green_walking/lib/widgets/user_consent_dialog.dart similarity index 70% rename from green_walking/lib/widgets/gdpr_dialog.dart rename to green_walking/lib/widgets/user_consent_dialog.dart index 2b0d0ef..b748ef1 100644 --- a/green_walking/lib/widgets/gdpr_dialog.dart +++ b/green_walking/lib/widgets/user_consent_dialog.dart @@ -1,4 +1,4 @@ -import 'package:firebase_analytics/firebase_analytics.dart'; +import 'package:firebase_crashlytics/firebase_crashlytics.dart'; import 'package:flutter/gestures.dart'; import 'package:flutter/material.dart'; import 'package:flutter_gen/gen_l10n/app_localizations.dart'; @@ -7,19 +7,19 @@ import 'package:url_launcher/url_launcher.dart'; import '../config.dart'; import '../services/app_prefs.dart'; -void enableAnalyticsOrConsent(BuildContext context) { - AppPrefs.getBool(AppPrefs.analyticsEnabled).then((bool? enabled) { +void enableCrashReportingOrConsent(BuildContext context) { + AppPrefs.getBool(AppPrefs.crashReportingEnabled).then((bool? enabled) { if (enabled == true) { - // Privacy: Only enable analytics if it is set to enabled. - FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(true); + // Privacy: Only enable if it is set to enabled. + FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); } else if (enabled == null) { - showDialog(context: context, builder: (BuildContext context) => const GdprDialog()); + showDialog(context: context, builder: (BuildContext context) => const UserConsentDialog()); } }); } -class GdprDialog extends StatelessWidget { - const GdprDialog({super.key}); +class UserConsentDialog extends StatelessWidget { + const UserConsentDialog({super.key}); @override Widget build(BuildContext context) { @@ -56,15 +56,15 @@ class GdprDialog extends StatelessWidget { TextButton( child: Text(locale.gdprDisagree.toUpperCase()), onPressed: () { - AppPrefs.setBool(AppPrefs.analyticsEnabled, false); - FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(false); + AppPrefs.setBool(AppPrefs.crashReportingEnabled, false); + FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(false); Navigator.of(context).pop(); }), TextButton( child: Text(locale.gdprAgree.toUpperCase()), onPressed: () { - AppPrefs.setBool(AppPrefs.analyticsEnabled, true); - FirebaseAnalytics.instance.setAnalyticsCollectionEnabled(true); + AppPrefs.setBool(AppPrefs.crashReportingEnabled, true); + FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true); Navigator.of(context).pop(); }), ], diff --git a/green_walking/pubspec.lock b/green_walking/pubspec.lock index dcc404f..7f94a8e 100644 --- a/green_walking/pubspec.lock +++ b/green_walking/pubspec.lock @@ -121,30 +121,6 @@ packages: url: "https://pub.dev" source: hosted version: "7.0.0" - firebase_analytics: - dependency: "direct main" - description: - name: firebase_analytics - sha256: "828401ca7a9ca47949106b9791b6f669942eed3fa991fb39323ba27da6b35dc7" - url: "https://pub.dev" - source: hosted - version: "10.6.4" - firebase_analytics_platform_interface: - dependency: transitive - description: - name: firebase_analytics_platform_interface - sha256: "4449defa57b63275b122e55e48d2dfebd6682718dac5eeb1c88adc4ef221a9f8" - url: "https://pub.dev" - source: hosted - version: "3.7.6" - firebase_analytics_web: - dependency: transitive - description: - name: firebase_analytics_web - sha256: "2e5fc93356992fb2236040b301527427b57950235e57ce21e13c07cc86279686" - url: "https://pub.dev" - source: hosted - version: "0.5.5+6" firebase_core: dependency: "direct main" description: diff --git a/green_walking/pubspec.yaml b/green_walking/pubspec.yaml index 7119b8b..fd17da3 100644 --- a/green_walking/pubspec.yaml +++ b/green_walking/pubspec.yaml @@ -18,7 +18,6 @@ environment: sdk: ">=3.1.0 <4.0.0" dependencies: - firebase_analytics: ^10.6.4 firebase_core: ^2.22.0 firebase_crashlytics: ^3.4.4 flutter: diff --git a/green_walking/test/pages/imprint_test.dart b/green_walking/test/pages/imprint_test.dart deleted file mode 100644 index 9b11d04..0000000 --- a/green_walking/test/pages/imprint_test.dart +++ /dev/null @@ -1,11 +0,0 @@ -import 'package:flutter/material.dart'; -import 'package:flutter_gen/gen_l10n/app_localizations.dart'; -import 'package:flutter_test/flutter_test.dart'; -import 'package:green_walking/pages/imprint.dart'; - -void main() { - testWidgets('ImprintPage() can be rendered', (WidgetTester tester) async { - await tester.pumpWidget(const MaterialApp( - home: ImprintPage(), localizationsDelegates: >[AppLocalizations.delegate])); - }); -} diff --git a/green_walking/test/pages/legal_notice_test.dart b/green_walking/test/pages/legal_notice_test.dart new file mode 100644 index 0000000..9b82ff6 --- /dev/null +++ b/green_walking/test/pages/legal_notice_test.dart @@ -0,0 +1,11 @@ +import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; +import 'package:flutter_test/flutter_test.dart'; +import 'package:green_walking/pages/legal_notice.dart'; + +void main() { + testWidgets('LegalNoticePage() can be rendered', (WidgetTester tester) async { + await tester.pumpWidget(const MaterialApp( + home: LegalNoticePage(), localizationsDelegates: >[AppLocalizations.delegate])); + }); +} diff --git a/green_walking/web/index.html b/green_walking/web/index.html index a5aa791..ffbebe5 100644 --- a/green_walking/web/index.html +++ b/green_walking/web/index.html @@ -23,7 +23,6 @@ -