From 6d101ad5c4dc07e0f0935c145eee63bb1714d65f Mon Sep 17 00:00:00 2001
From: Vishesh Handa <me@vhanda.in>
Date: Sun, 26 Jul 2020 18:59:29 +0200
Subject: [PATCH] Remove flutter crashlytics

Sentry is being used instead, and it's working out quite well.
---
 android/app/build.gradle      |  7 -------
 ios/Podfile.lock              | 15 ---------------
 lib/core/notes_folder_fs.dart |  2 +-
 lib/error_reporting.dart      |  9 ---------
 lib/main.dart                 |  4 ----
 pubspec.lock                  |  7 -------
 pubspec.yaml                  |  1 -
 7 files changed, 1 insertion(+), 44 deletions(-)

diff --git a/android/app/build.gradle b/android/app/build.gradle
index 4b4c83d6..bd89209b 100644
--- a/android/app/build.gradle
+++ b/android/app/build.gradle
@@ -83,7 +83,6 @@ android {
             ndk {
                 abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
             }
-            ext.enableCrashlytics = false
         }
     }
 
@@ -106,9 +105,3 @@ dependencies {
 
 apply plugin: 'com.google.gms.google-services'
 apply plugin: 'io.fabric'
-
-crashlytics {
-    enableNdk true
-    androidNdkOut "../../debugSymbols"
-    androidNdkLibsOut "../../build/app/intermediates/transforms/stripDebugSymbol/prod/release/0/lib"
-}
diff --git a/ios/Podfile.lock b/ios/Podfile.lock
index 17352e67..bfb0664d 100644
--- a/ios/Podfile.lock
+++ b/ios/Podfile.lock
@@ -2,11 +2,8 @@ PODS:
   - connectivity (0.0.1):
     - Flutter
     - Reachability
-  - Crashlytics (3.14.0):
-    - Fabric (~> 1.10.2)
   - device_info (0.0.1):
     - Flutter
-  - Fabric (1.10.2)
   - Firebase/Analytics (6.27.1):
     - Firebase/Core
   - Firebase/Core (6.27.1):
@@ -42,10 +39,6 @@ PODS:
     - GoogleUtilities/UserDefaults (~> 6.7)
     - PromisesObjC (~> 1.2)
   - Flutter (1.0.0)
-  - flutter_crashlytics (0.0.1):
-    - Crashlytics
-    - Fabric
-    - Flutter
   - flutter_email_sender (0.0.1):
     - Flutter
   - flutter_plugin_android_lifecycle (0.0.1):
@@ -136,7 +129,6 @@ DEPENDENCIES:
   - device_info (from `.symlinks/plugins/device_info/ios`)
   - firebase_analytics (from `.symlinks/plugins/firebase_analytics/ios`)
   - Flutter (from `Flutter`)
-  - flutter_crashlytics (from `.symlinks/plugins/flutter_crashlytics/ios`)
   - flutter_email_sender (from `.symlinks/plugins/flutter_email_sender/ios`)
   - flutter_plugin_android_lifecycle (from `.symlinks/plugins/flutter_plugin_android_lifecycle/ios`)
   - flutter_sentry (from `.symlinks/plugins/flutter_sentry/ios`)
@@ -161,8 +153,6 @@ DEPENDENCIES:
 
 SPEC REPOS:
   trunk:
-    - Crashlytics
-    - Fabric
     - Firebase
     - FirebaseAnalytics
     - FirebaseCore
@@ -186,8 +176,6 @@ EXTERNAL SOURCES:
     :path: ".symlinks/plugins/firebase_analytics/ios"
   Flutter:
     :path: Flutter
-  flutter_crashlytics:
-    :path: ".symlinks/plugins/flutter_crashlytics/ios"
   flutter_email_sender:
     :path: ".symlinks/plugins/flutter_email_sender/ios"
   flutter_plugin_android_lifecycle:
@@ -233,9 +221,7 @@ EXTERNAL SOURCES:
 
 SPEC CHECKSUMS:
   connectivity: 6e94255659cc86dcbef1d452ad3e0491bb1b3e75
-  Crashlytics: 540b7e5f5da5a042647227a5e3ac51d85eed06df
   device_info: d7d233b645a32c40dfdc212de5cf646ca482f175
-  Fabric: 706c8b8098fff96c33c0db69cbf81f9c551d0d74
   Firebase: 919186c8e119dd9372a45fd1dd17a8a942bc1892
   firebase_analytics: dacdcfc524d722fff13dcff942f0dfa47e6be567
   FirebaseAnalytics: 5fa308e1b13f838d0f6dc74719ac2a72e8c5afc4
@@ -243,7 +229,6 @@ SPEC CHECKSUMS:
   FirebaseCoreDiagnostics: 7535fe695737f8c5b350584292a70b7f8ff0357b
   FirebaseInstallations: 3c520c951305cbf9ca54eb891ff9e6d1fd384881
   Flutter: 0e3d915762c693b495b44d77113d4970485de6ec
-  flutter_crashlytics: 7b5bba7233066381c8e18343435342ba05f3053c
   flutter_email_sender: f787522d0e82f50e5766c1213dbffff22fdcf009
   flutter_plugin_android_lifecycle: dc0b544e129eebb77a6bfb1239d4d1c673a60a35
   flutter_sentry: e7e66f0717b5fba24f96891e879562bdd8985d36
diff --git a/lib/core/notes_folder_fs.dart b/lib/core/notes_folder_fs.dart
index 972c5544..28f20762 100644
--- a/lib/core/notes_folder_fs.dart
+++ b/lib/core/notes_folder_fs.dart
@@ -150,7 +150,7 @@ class NotesFolderFS with NotesFolderNotifier implements NotesFolder {
 
     for (var note in _notes) {
       // FIXME: Collected all the Errors, and report them back, along with "WHY", and the contents of the Note
-      //        Each of these needs to be reported to crashlytics, as Note loading should never fail
+      //        Each of these needs to be reported to sentry, as Note loading should never fail
       var f = note.load();
       futures.add(f);
 
diff --git a/lib/error_reporting.dart b/lib/error_reporting.dart
index 1c68b916..cf821563 100644
--- a/lib/error_reporting.dart
+++ b/lib/error_reporting.dart
@@ -4,7 +4,6 @@ import 'dart:io';
 import 'package:flutter/foundation.dart';
 
 import 'package:device_info/device_info.dart';
-import 'package:flutter_crashlytics/flutter_crashlytics.dart';
 import 'package:package_info/package_info.dart';
 import 'package:sentry/sentry.dart';
 
@@ -87,12 +86,6 @@ bool _initReportCrashes() {
   return !JournalApp.isInDebugMode && Settings.instance.collectCrashReports;
 }
 
-Future<void> initCrashlytics() async {
-  if (reportCrashes) {
-    await FlutterCrashlytics().initialize();
-  }
-}
-
 Future<void> reportError(Object error, StackTrace stackTrace) async {
   Log.e("Uncaught Exception", ex: error, stacktrace: stackTrace);
 
@@ -112,7 +105,6 @@ Future<void> logException(Object e, StackTrace stackTrace) async {
   }
 
   await captureSentryException(e, stackTrace);
-  return FlutterCrashlytics().logException(e, stackTrace);
 }
 
 Future<void> logExceptionWarning(Object e, StackTrace stackTrace) async {
@@ -124,7 +116,6 @@ Future<void> logExceptionWarning(Object e, StackTrace stackTrace) async {
   }
 
   await captureSentryException(e, stackTrace, level: SeverityLevel.warning);
-  return FlutterCrashlytics().logException(e, stackTrace);
 }
 
 List<Breadcrumb> breadcrumbs = [];
diff --git a/lib/main.dart b/lib/main.dart
index 153847c1..8fe062a7 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -19,10 +19,6 @@ void main() async {
   JournalApp.isInDebugMode = foundation.kDebugMode;
   FlutterError.onError = flutterOnErrorHandler;
 
-  // Make sure Crashlytics is initialized so we get Android/iOS errors
-  // But for Flutter errors, lets just rely on Sentry.
-  initCrashlytics();
-
   Isolate.current.addErrorListener(RawReceivePort((dynamic pair) async {
     var isolateError = pair as List<dynamic>;
     assert(isolateError.length == 2);
diff --git a/pubspec.lock b/pubspec.lock
index fe43ac03..dea8440c 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -239,13 +239,6 @@ packages:
       url: "https://pub.dartlang.org"
     source: hosted
     version: "1.2.2"
-  flutter_crashlytics:
-    dependency: "direct main"
-    description:
-      name: flutter_crashlytics
-      url: "https://pub.dartlang.org"
-    source: hosted
-    version: "1.0.0"
   flutter_driver:
     dependency: "direct dev"
     description: flutter
diff --git a/pubspec.yaml b/pubspec.yaml
index 8b42e9b4..adde0e1a 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -13,7 +13,6 @@ dependencies:
   uuid: ^2.0.1
   yaml: ^2.2.0
   firebase_analytics: ^5.0.11
-  flutter_crashlytics: ^1.0.0
   shared_preferences: ^0.5.6
   url_launcher: ^5.4.1
   dots_indicator: ^0.0.3