diff --git a/PRIVACY.md b/PRIVACY.md
index 60925577..a3a66629 100644
--- a/PRIVACY.md
+++ b/PRIVACY.md
@@ -19,11 +19,6 @@ FluffyChat only communicates with the selected server, with sentry.io if enabled
More information is available at: [https://matrix.org](https://matrix.org)
-## Sentry
-FluffyChat uses Sentry for crash reports if the user allows it.
-
-More information is available at: [https://sentry.io](https://sentry.io)
-
## Database
FluffyChat caches some data received from the server in a local database on the device of the user.
diff --git a/lib/main.dart b/lib/main.dart
index 91e6579e..5473b25a 100644
--- a/lib/main.dart
+++ b/lib/main.dart
@@ -16,7 +16,6 @@ import 'package:vrouter/vrouter.dart';
import 'package:fluffychat/config/routes.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/platform_infos.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
import 'config/app_config.dart';
import 'config/themes.dart';
import 'utils/background_push.dart';
@@ -49,8 +48,8 @@ void main() async {
.addAll(Uri.parse(html.window.location.href).queryParameters);
}
- runZonedGuarded(
- () => runApp(PlatformInfos.isMobile
+ runApp(
+ PlatformInfos.isMobile
? AppLock(
builder: (args) => FluffyChatApp(
clients: clients,
@@ -59,8 +58,7 @@ void main() async {
lockScreen: const LockScreen(),
enabled: false,
)
- : FluffyChatApp(clients: clients, queryParameters: queryParameters)),
- SentryController.captureException,
+ : FluffyChatApp(clients: clients, queryParameters: queryParameters),
);
}
diff --git a/lib/pages/chat/chat_view.dart b/lib/pages/chat/chat_view.dart
index 9613ddc6..920f5354 100644
--- a/lib/pages/chat/chat_view.dart
+++ b/lib/pages/chat/chat_view.dart
@@ -16,7 +16,6 @@ import 'package:fluffychat/pages/chat/pinned_events.dart';
import 'package:fluffychat/pages/chat/reactions_picker.dart';
import 'package:fluffychat/pages/chat/reply_display.dart';
import 'package:fluffychat/pages/chat/tombstone_display.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
import 'package:fluffychat/widgets/chat_settings_popup_menu.dart';
import 'package:fluffychat/widgets/connection_status_header.dart';
import 'package:fluffychat/widgets/matrix.dart';
@@ -216,12 +215,6 @@ class ChatView extends StatelessWidget {
onTap: controller.clearSingleSelectedEvent,
child: Builder(
builder: (context) {
- if (snapshot.hasError) {
- SentryController.captureException(
- snapshot.error,
- StackTrace.current,
- );
- }
if (controller.timeline == null) {
return const Center(
child: CircularProgressIndicator
diff --git a/lib/pages/chat/events/audio_player.dart b/lib/pages/chat/events/audio_player.dart
index 9b6177a7..c2620024 100644
--- a/lib/pages/chat/events/audio_player.dart
+++ b/lib/pages/chat/events/audio_player.dart
@@ -9,7 +9,6 @@ import 'package:matrix/matrix.dart';
import 'package:path_provider/path_provider.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
import '../../../utils/matrix_sdk_extensions.dart/event_extension.dart';
class AudioPlayerWidget extends StatefulWidget {
@@ -124,7 +123,7 @@ class _AudioPlayerState extends State {
content: Text(L10n.of(context)!.oopsSomethingWentWrong),
),
);
- SentryController.captureException(e, s);
+ Logs().w('Error while playing audio', e, s);
});
}
diff --git a/lib/pages/chat/events/video_player.dart b/lib/pages/chat/events/video_player.dart
index 9cbcb9bc..7443eea0 100644
--- a/lib/pages/chat/events/video_player.dart
+++ b/lib/pages/chat/events/video_player.dart
@@ -14,7 +14,6 @@ import 'package:video_player/video_player.dart';
import 'package:fluffychat/pages/chat/events/image_bubble.dart';
import 'package:fluffychat/utils/localized_exception_extension.dart';
import 'package:fluffychat/utils/matrix_sdk_extensions.dart/event_extension.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
class EventVideoPlayer extends StatefulWidget {
final Event event;
@@ -70,7 +69,7 @@ class _EventVideoPlayerState extends State {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
content: Text(e.toLocalizedString(context)),
));
- SentryController.captureException(e, s);
+ Logs().w('Error while playing video', e, s);
} finally {
// Workaround for Chewie needs time to get the aspectRatio
await Future.delayed(const Duration(milliseconds: 100));
diff --git a/lib/pages/chat/recording_dialog.dart b/lib/pages/chat/recording_dialog.dart
index 1958860d..d5e8fb12 100644
--- a/lib/pages/chat/recording_dialog.dart
+++ b/lib/pages/chat/recording_dialog.dart
@@ -10,7 +10,6 @@ import 'package:wakelock/wakelock.dart';
import 'package:fluffychat/config/app_config.dart';
import 'package:fluffychat/utils/platform_infos.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
import 'events/audio_player.dart';
class RecordingDialog extends StatefulWidget {
@@ -64,9 +63,9 @@ class _RecordingDialogState extends State {
_duration += const Duration(milliseconds: 100);
});
});
- } catch (e, s) {
- SentryController.captureException(e, s);
+ } catch (_) {
setState(() => error = true);
+ rethrow;
}
}
diff --git a/lib/utils/platform_infos.dart b/lib/utils/platform_infos.dart
index a8071430..3d0ca933 100644
--- a/lib/utils/platform_infos.dart
+++ b/lib/utils/platform_infos.dart
@@ -8,7 +8,6 @@ import 'package:package_info_plus/package_info_plus.dart';
import 'package:url_launcher/url_launcher.dart';
import 'package:vrouter/vrouter.dart';
-import 'package:fluffychat/widgets/sentry_switch_list_tile.dart';
import '../config/app_config.dart';
abstract class PlatformInfos {
@@ -62,7 +61,6 @@ abstract class PlatformInfos {
onPressed: () => VRouter.of(context).to('logs'),
child: const Text('Logs'),
),
- SentrySwitchListTile.adaptive(label: L10n.of(context)!.sendBugReports),
],
applicationIcon: Image.asset('assets/logo.png', width: 64, height: 64),
applicationName: AppConfig.applicationName,
diff --git a/lib/utils/resize_image.dart b/lib/utils/resize_image.dart
index c18a8e29..abe7ae66 100644
--- a/lib/utils/resize_image.dart
+++ b/lib/utils/resize_image.dart
@@ -8,7 +8,6 @@ import 'package:path_provider/path_provider.dart';
import 'package:video_compress/video_compress.dart';
import 'package:fluffychat/utils/platform_infos.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
extension ResizeImage on MatrixFile {
static const int max = 1200;
@@ -23,7 +22,7 @@ extension ResizeImage on MatrixFile {
// will throw an error e.g. on Android SDK < 18
mediaInfo = await VideoCompress.compressVideo(tmpFile.path);
} catch (e, s) {
- SentryController.captureException(e, s);
+ Logs().w('Error while compressing video', e, s);
}
return MatrixVideoFile(
bytes: (await mediaInfo?.file?.readAsBytes()) ?? bytes,
@@ -50,7 +49,7 @@ extension ResizeImage on MatrixFile {
name: name,
);
} catch (e, s) {
- SentryController.captureException(e, s);
+ Logs().w('Error while compressing video', e, s);
}
return null;
}
diff --git a/lib/utils/sentry_controller.dart b/lib/utils/sentry_controller.dart
deleted file mode 100644
index f81c6ca2..00000000
--- a/lib/utils/sentry_controller.dart
+++ /dev/null
@@ -1,37 +0,0 @@
-import 'package:flutter/foundation.dart';
-import 'package:flutter/material.dart';
-
-import 'package:matrix/matrix.dart';
-import 'package:sentry/sentry.dart';
-
-import 'package:fluffychat/config/app_config.dart';
-import '../config/setting_keys.dart';
-import 'famedlysdk_store.dart';
-
-abstract class SentryController {
- static Future toggleSentryAction(
- BuildContext context, bool enableSentry) async {
- if (!AppConfig.enableSentry) return;
- final storage = Store();
- await storage.setItemBool(SettingKeys.sentry, enableSentry);
- return;
- }
-
- static Future getSentryStatus() async {
- if (!AppConfig.enableSentry) return false;
- final storage = Store();
- return await storage.getItemBool(SettingKeys.sentry);
- }
-
- static final sentry = SentryClient(SentryOptions(dsn: AppConfig.sentryDns));
-
- static void captureException(error, stackTrace) async {
- Logs().e('Capture exception', error, stackTrace);
- if (!kDebugMode && await getSentryStatus()) {
- await sentry.captureException(
- error,
- stackTrace: stackTrace,
- );
- }
- }
-}
diff --git a/lib/widgets/matrix.dart b/lib/widgets/matrix.dart
index 927ba05d..51127711 100644
--- a/lib/widgets/matrix.dart
+++ b/lib/widgets/matrix.dart
@@ -24,7 +24,6 @@ import 'package:vrouter/vrouter.dart';
import 'package:fluffychat/config/themes.dart';
import 'package:fluffychat/utils/client_manager.dart';
import 'package:fluffychat/utils/platform_infos.dart';
-import 'package:fluffychat/utils/sentry_controller.dart';
import 'package:fluffychat/utils/uia_request_manager.dart';
import 'package:fluffychat/utils/voip_plugin.dart';
import '../config/app_config.dart';
@@ -211,7 +210,6 @@ class MatrixState extends State with WidgetsBindingObserver {
}
} catch (e, s) {
client.onLoginStateChanged.addError(e, s);
- SentryController.captureException(e, s);
rethrow;
}
}
@@ -273,12 +271,6 @@ class MatrixState extends State with WidgetsBindingObserver {
}
}
- void _reportSyncError(SyncStatusUpdate update) =>
- SentryController.captureException(
- update.error!.exception,
- update.error!.stackTrace,
- );
-
void _registerSubs(String name) {
final c = getClientByName(name);
if (c == null) {
@@ -286,9 +278,6 @@ class MatrixState extends State with WidgetsBindingObserver {
'Attempted to register subscriptions for non-existing client $name');
return;
}
- c.onSyncStatus.stream
- .where((s) => s.status == SyncStatus.error)
- .listen(_reportSyncError);
onRoomKeyRequestSub[name] ??=
c.onRoomKeyRequest.stream.listen((RoomKeyRequest request) async {
if (widget.clients.any(((cl) =>
diff --git a/lib/widgets/sentry_switch_list_tile.dart b/lib/widgets/sentry_switch_list_tile.dart
deleted file mode 100644
index d60df5ee..00000000
--- a/lib/widgets/sentry_switch_list_tile.dart
+++ /dev/null
@@ -1,34 +0,0 @@
-import 'package:flutter/material.dart';
-
-import 'package:fluffychat/utils/sentry_controller.dart';
-
-class SentrySwitchListTile extends StatefulWidget {
- final String label;
-
- const SentrySwitchListTile.adaptive({Key? key, required this.label})
- : super(key: key);
-
- @override
- _SentrySwitchListTileState createState() => _SentrySwitchListTileState();
-}
-
-class _SentrySwitchListTileState extends State {
- bool _enabled = false;
-
- @override
- Widget build(BuildContext context) {
- return FutureBuilder(
- future: SentryController.getSentryStatus(),
- builder: (context, snapshot) {
- _enabled = snapshot.data ?? false;
- return SwitchListTile.adaptive(
- title: Text(widget.label),
- value: _enabled,
- onChanged: (b) =>
- SentryController.toggleSentryAction(context, b).then(
- (_) => setState(() {}),
- ),
- );
- });
- }
-}
diff --git a/pubspec.lock b/pubspec.lock
index 2a670aa4..5a693be5 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -1500,13 +1500,6 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.5"
- sentry:
- dependency: "direct main"
- description:
- name: sentry
- url: "https://pub.dartlang.org"
- source: hosted
- version: "6.4.0"
share_plus:
dependency: "direct main"
description:
diff --git a/pubspec.yaml b/pubspec.yaml
index 4c5b62eb..5f2c71f1 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -76,7 +76,6 @@ dependencies:
receive_sharing_intent: ^1.4.5
record: ^4.3.2
scroll_to_index: ^3.0.1
- sentry: ^6.3.0
share_plus: ^4.0.9
shared_preferences: ^2.0.13
slugify: ^2.0.0