Skip to content

Commit

Permalink
Remove analytics
Browse files Browse the repository at this point in the history
  • Loading branch information
Xennis committed Nov 23, 2023
1 parent a65595a commit 15c5172
Show file tree
Hide file tree
Showing 18 changed files with 68 additions and 134 deletions.
1 change: 0 additions & 1 deletion green_walking/android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -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'
}
4 changes: 4 additions & 0 deletions green_walking/android/app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
<!-- Privacy: Disable crash reporting by default. -->
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="false" />
<!-- Privacy: Disable tracking by default. -->
<meta-data
android:name="firebase_analytics_collection_enabled"
Expand Down
5 changes: 3 additions & 2 deletions green_walking/lib/l10n/app_de.arb
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,8 @@
"missingDescription": "Der Ort hat bisher keine Beschreibung.",
"fallbackDescription": "Die Beschreibung ist nur in der lokalen Sprache verfügbar.",
"settingsPage": "Einstellungen",
"settingsTrackingDescription": "Trackingdienst aktivieren",
"settingsCrashReportingTitle": "Absturzmeldung",
"settingsCrashReportingDescription": "Aktiviere senden von Bericht im Falle eines Fehlers",
"feedbackPage": "Feedback senden",
"feedbackSendLabel": "Feedback senden",
"feedbackPageText": "Du hast Feedback für die App? Zögere nicht, es uns zuzusenden und damit die App zu verbessern.\n\nDu kannst zum Beispiel Feedback geben zu dem Design und der Bedienbarkeit der App, nicht angezeigten Grünanlagen, wünschenswerten Funktionen, Fehlern oder Funktionen, die dir besonders gut gefallen.",
Expand All @@ -24,7 +25,7 @@
"imprintDisclaimerText": "Wir übernehmen keine Haftung für die Inhalte externer Links. Für den Inhalt der verlinkten Seiten sind ausschließlich deren Betreiber verantwortlich.",
"imprintGdprApplyText": "Es gilt die",
"openInBrowserSemanticLabel": "Im Browser öffnen",
"gdprDialogText": "Für das beste Erlebnis aktiviert die App Tracking. Weitere Infos erhälst du in der",
"gdprDialogText": "Für das beste Erlebnis sendet die App Absturzberichte, wenn derartiger Fehler auftreten. Weitere Infos erhälst du in der",
"gdprPrivacyPolicy": "Datenschutzerklärung",
"gdprAgree": "Einverstanden",
"gdprDisagree": "Nein danke",
Expand Down
14 changes: 10 additions & 4 deletions green_walking/lib/l10n/app_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -48,9 +48,15 @@
"type": "text",
"placeholders": {}
},
"settingsTrackingDescription": "Enable tracking service",
"@settingsTrackingDescription": {
"description": "Description for enable/disable tracking setting",
"settingsCrashReportingTitle": "Crash reporting",
"@settingsCrashReportingTitle": {
"description": "Title for enable/disable sending crash reports",
"type": "text",
"placeholders": {}
},
"settingsCrashReportingDescription": "Enable sending report in case of an error",
"@settingsCrashReportingDescription": {
"description": "Description for enable/disable sending crash reports",
"type": "text",
"placeholders": {}
},
Expand Down Expand Up @@ -169,7 +175,7 @@
"type": "text",
"placeholders": {}
},
"gdprDialogText": "For the best experience the app enables tracking. Further information can be found in the",
"gdprDialogText": "For the best experience the app sends crash reports if such an error occurs. Further information can be found in the",
"@gdprDialogText": {
"description": "Text for privacy policy link",
"type": "text",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ import 'package:url_launcher/url_launcher.dart';

import '../config.dart';

class ImprintPage extends StatelessWidget {
const ImprintPage({super.key});
class LegalNoticePage extends StatelessWidget {
const LegalNoticePage({super.key});

@override
Widget build(BuildContext context) {
Expand All @@ -31,7 +31,7 @@ class ImprintPage extends StatelessWidget {
),
const TextSpan(
text:
'Fabian Rosenthal\nSchäferkampsallee 61\n20357\nHamburg\nGermany\ncode [at] xennis.org\n\n'),
'Fabian Rosenthal\nMethfesselstraße 96\n20255\nHamburg\nGermany\ncode [at] xennis.org\n\n'),
TextSpan(
text: '${locale.imprintDisclaimerLabel}:',
style: const TextStyle(fontWeight: FontWeight.bold),
Expand Down
4 changes: 2 additions & 2 deletions green_walking/lib/pages/map.dart
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import 'package:mapbox_maps_flutter/mapbox_maps_flutter.dart' show CameraOptions

import 'search.dart';
import '../services/app_prefs.dart';
import '../widgets/gdpr_dialog.dart';
import '../widgets/user_consent_dialog.dart';
import '../widgets/map_view.dart';
import '../widgets/navigation_drawer.dart';

Expand All @@ -22,7 +22,7 @@ class _MapPageState extends State<MapPage> {
@override
void initState() {
super.initState();
WidgetsBinding.instance.addPostFrameCallback((_) => enableAnalyticsOrConsent(context));
WidgetsBinding.instance.addPostFrameCallback((_) => enableCrashReportingOrConsent(context));
}

@override
Expand Down
4 changes: 2 additions & 2 deletions green_walking/lib/pages/settings.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';

Expand All @@ -26,7 +26,7 @@ class SettingsPage extends StatelessWidget {
ThemeListTile(prefsProvider.themeMode),
LanguageListTile(prefsProvider.locale),
const Divider(),
const AnalyticsListTile()
const CrashReportingListTile()
]))));
}
}
6 changes: 3 additions & 3 deletions green_walking/lib/routes.dart
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -16,7 +16,7 @@ class Routes {
Map<String, WidgetBuilder> getRoutes(BuildContext context) {
return <String, WidgetBuilder>{
Routes.feedback: (_) => const FeedbackPage(),
Routes.imprint: (_) => const ImprintPage(),
Routes.legalNotice: (_) => const LegalNoticePage(),
Routes.map: (_) => const MapPage(),
Routes.settings: (_) => const SettingsPage(),
};
Expand Down
2 changes: 1 addition & 1 deletion green_walking/lib/services/app_prefs.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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';
Expand Down
2 changes: 1 addition & 1 deletion green_walking/lib/widgets/navigation_drawer.dart
Original file line number Diff line number Diff line change
Expand Up @@ -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),
),
],
),
Expand Down
Original file line number Diff line number Diff line change
@@ -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<AnalyticsListTile> createState() => _AnalyticsListTileState();
State<CrashReportingListTile> createState() => _CrashReportingListTileState();
}

class _AnalyticsListTileState extends State<AnalyticsListTile> {
class _CrashReportingListTileState extends State<CrashReportingListTile> {
bool _enabled = false;

@override
Expand All @@ -20,12 +20,12 @@ class _AnalyticsListTileState extends State<AnalyticsListTile> {

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<bool?>(
future: AppPrefs.getBool(AppPrefs.analyticsEnabled),
future: AppPrefs.getBool(AppPrefs.crashReportingEnabled),
initialData: _enabled,
builder: (BuildContext context, AsyncSnapshot<bool?> snapshot) {
return Switch(
Expand All @@ -34,8 +34,8 @@ class _AnalyticsListTileState extends State<AnalyticsListTile> {
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;
});
Expand Down
Original file line number Diff line number Diff line change
@@ -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';
Expand All @@ -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<dynamic>(context: context, builder: (BuildContext context) => const GdprDialog());
showDialog<dynamic>(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) {
Expand Down Expand Up @@ -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();
}),
],
Expand Down
24 changes: 0 additions & 24 deletions green_walking/pubspec.lock
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
1 change: 0 additions & 1 deletion green_walking/pubspec.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -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:
Expand Down
11 changes: 0 additions & 11 deletions green_walking/test/pages/imprint_test.dart

This file was deleted.

11 changes: 11 additions & 0 deletions green_walking/test/pages/legal_notice_test.dart
Original file line number Diff line number Diff line change
@@ -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: <LocalizationsDelegate<dynamic>>[AppLocalizations.delegate]));
});
}
2 changes: 0 additions & 2 deletions green_walking/web/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@

<!-- Add SDKs for Firebase products that you want to use
https://firebase.google.com/docs/web/setup#available-libraries -->
<script src="https://www.gstatic.com/firebasejs/7.19.1/firebase-analytics.js"></script>
<script src="https://www.gstatic.com/firebasejs/7.19.1/firebase-firestore.js"></script>

<script>
Expand All @@ -40,7 +39,6 @@
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
firebase.analytics();
</script>

<!-- This script installs service_worker.js to provide PWA functionality to
Expand Down
Loading

0 comments on commit 15c5172

Please sign in to comment.