From cce1f787d3af1a2729d5640eff7112abee65a17d Mon Sep 17 00:00:00 2001
From: Vishesh Handa <me@vhanda.in>
Date: Sun, 6 Jun 2021 09:53:24 +0200
Subject: [PATCH] Don't even touch the firebase code if analytics are disabled

The anlaytics fuctions do not do anything when analytics collection is
disabled, and I've verified that I do not get any events in the firebase
dashboard.

However, to be on the safer side lets not even touch the code.

Related to #506
---
 lib/analytics/analytics.dart | 18 ++++++++++++++----
 lib/error_reporting.dart     |  4 ++++
 2 files changed, 18 insertions(+), 4 deletions(-)

diff --git a/lib/analytics/analytics.dart b/lib/analytics/analytics.dart
index f09f7dd3..a660d92b 100644
--- a/lib/analytics/analytics.dart
+++ b/lib/analytics/analytics.dart
@@ -146,8 +146,10 @@ class Analytics {
     Map<String, String> parameters = const {},
   }) async {
     String name = _eventToString(e);
-    if (Platform.isAndroid || Platform.isIOS) {
-      await firebase.logEvent(name: name, parameters: parameters);
+    if (enabled) {
+      if (Platform.isAndroid || Platform.isIOS) {
+        await firebase.logEvent(name: name, parameters: parameters);
+      }
     }
     captureErrorBreadcrumb(name: name, parameters: parameters);
   }
@@ -160,13 +162,21 @@ class Analytics {
   }
 
   Future<void> setCurrentScreen({required String screenName}) async {
+    if (!enabled) {
+      return;
+    }
     if (Platform.isAndroid || Platform.isIOS) {
       await firebase.setCurrentScreen(screenName: screenName);
     }
   }
 
-  Future<void> setUserProperty(
-      {required String name, required String value}) async {
+  Future<void> setUserProperty({
+    required String name,
+    required String value,
+  }) async {
+    if (!enabled) {
+      return;
+    }
     if (Platform.isAndroid || Platform.isIOS) {
       await firebase.setUserProperty(name: name, value: value);
     }
diff --git a/lib/error_reporting.dart b/lib/error_reporting.dart
index 552cbb57..86c0ca6f 100644
--- a/lib/error_reporting.dart
+++ b/lib/error_reporting.dart
@@ -125,6 +125,10 @@ void captureErrorBreadcrumb({
   required String name,
   required Map<String, String> parameters,
 }) {
+  if (!reportCrashes) {
+    return;
+  }
+
   var b = Breadcrumb(
     message: name,
     timestamp: DateTime.now(),