mirror of
https://gitlab.com/famedly/fluffychat.git
synced 2024-11-20 02:59:26 +01:00
Merge branch 'krille/remove-sentry' into 'main'
chore: Remove error logging with sentry See merge request famedly/fluffychat!983
This commit is contained in:
commit
cdcef393e7
@ -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)
|
More information is available at: [https://matrix.org](https://matrix.org)
|
||||||
|
|
||||||
## Sentry<a id="2"/>
|
|
||||||
FluffyChat uses Sentry for crash reports if the user allows it.
|
|
||||||
|
|
||||||
More information is available at: [https://sentry.io](https://sentry.io)
|
|
||||||
|
|
||||||
## Database<a id="3"/>
|
## Database<a id="3"/>
|
||||||
FluffyChat caches some data received from the server in a local database on the device of the user.
|
FluffyChat caches some data received from the server in a local database on the device of the user.
|
||||||
|
|
||||||
|
@ -16,7 +16,6 @@ import 'package:vrouter/vrouter.dart';
|
|||||||
import 'package:fluffychat/config/routes.dart';
|
import 'package:fluffychat/config/routes.dart';
|
||||||
import 'package:fluffychat/utils/client_manager.dart';
|
import 'package:fluffychat/utils/client_manager.dart';
|
||||||
import 'package:fluffychat/utils/platform_infos.dart';
|
import 'package:fluffychat/utils/platform_infos.dart';
|
||||||
import 'package:fluffychat/utils/sentry_controller.dart';
|
|
||||||
import 'config/app_config.dart';
|
import 'config/app_config.dart';
|
||||||
import 'config/themes.dart';
|
import 'config/themes.dart';
|
||||||
import 'utils/background_push.dart';
|
import 'utils/background_push.dart';
|
||||||
@ -49,8 +48,8 @@ void main() async {
|
|||||||
.addAll(Uri.parse(html.window.location.href).queryParameters);
|
.addAll(Uri.parse(html.window.location.href).queryParameters);
|
||||||
}
|
}
|
||||||
|
|
||||||
runZonedGuarded(
|
runApp(
|
||||||
() => runApp(PlatformInfos.isMobile
|
PlatformInfos.isMobile
|
||||||
? AppLock(
|
? AppLock(
|
||||||
builder: (args) => FluffyChatApp(
|
builder: (args) => FluffyChatApp(
|
||||||
clients: clients,
|
clients: clients,
|
||||||
@ -59,8 +58,7 @@ void main() async {
|
|||||||
lockScreen: const LockScreen(),
|
lockScreen: const LockScreen(),
|
||||||
enabled: false,
|
enabled: false,
|
||||||
)
|
)
|
||||||
: FluffyChatApp(clients: clients, queryParameters: queryParameters)),
|
: FluffyChatApp(clients: clients, queryParameters: queryParameters),
|
||||||
SentryController.captureException,
|
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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/reactions_picker.dart';
|
||||||
import 'package:fluffychat/pages/chat/reply_display.dart';
|
import 'package:fluffychat/pages/chat/reply_display.dart';
|
||||||
import 'package:fluffychat/pages/chat/tombstone_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/chat_settings_popup_menu.dart';
|
||||||
import 'package:fluffychat/widgets/connection_status_header.dart';
|
import 'package:fluffychat/widgets/connection_status_header.dart';
|
||||||
import 'package:fluffychat/widgets/matrix.dart';
|
import 'package:fluffychat/widgets/matrix.dart';
|
||||||
@ -216,12 +215,6 @@ class ChatView extends StatelessWidget {
|
|||||||
onTap: controller.clearSingleSelectedEvent,
|
onTap: controller.clearSingleSelectedEvent,
|
||||||
child: Builder(
|
child: Builder(
|
||||||
builder: (context) {
|
builder: (context) {
|
||||||
if (snapshot.hasError) {
|
|
||||||
SentryController.captureException(
|
|
||||||
snapshot.error,
|
|
||||||
StackTrace.current,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
if (controller.timeline == null) {
|
if (controller.timeline == null) {
|
||||||
return const Center(
|
return const Center(
|
||||||
child: CircularProgressIndicator
|
child: CircularProgressIndicator
|
||||||
|
@ -9,7 +9,6 @@ import 'package:matrix/matrix.dart';
|
|||||||
import 'package:path_provider/path_provider.dart';
|
import 'package:path_provider/path_provider.dart';
|
||||||
|
|
||||||
import 'package:fluffychat/utils/localized_exception_extension.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';
|
import '../../../utils/matrix_sdk_extensions.dart/event_extension.dart';
|
||||||
|
|
||||||
class AudioPlayerWidget extends StatefulWidget {
|
class AudioPlayerWidget extends StatefulWidget {
|
||||||
@ -124,7 +123,7 @@ class _AudioPlayerState extends State<AudioPlayerWidget> {
|
|||||||
content: Text(L10n.of(context)!.oopsSomethingWentWrong),
|
content: Text(L10n.of(context)!.oopsSomethingWentWrong),
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
SentryController.captureException(e, s);
|
Logs().w('Error while playing audio', e, s);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,6 @@ import 'package:video_player/video_player.dart';
|
|||||||
import 'package:fluffychat/pages/chat/events/image_bubble.dart';
|
import 'package:fluffychat/pages/chat/events/image_bubble.dart';
|
||||||
import 'package:fluffychat/utils/localized_exception_extension.dart';
|
import 'package:fluffychat/utils/localized_exception_extension.dart';
|
||||||
import 'package:fluffychat/utils/matrix_sdk_extensions.dart/event_extension.dart';
|
import 'package:fluffychat/utils/matrix_sdk_extensions.dart/event_extension.dart';
|
||||||
import 'package:fluffychat/utils/sentry_controller.dart';
|
|
||||||
|
|
||||||
class EventVideoPlayer extends StatefulWidget {
|
class EventVideoPlayer extends StatefulWidget {
|
||||||
final Event event;
|
final Event event;
|
||||||
@ -70,7 +69,7 @@ class _EventVideoPlayerState extends State<EventVideoPlayer> {
|
|||||||
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
ScaffoldMessenger.of(context).showSnackBar(SnackBar(
|
||||||
content: Text(e.toLocalizedString(context)),
|
content: Text(e.toLocalizedString(context)),
|
||||||
));
|
));
|
||||||
SentryController.captureException(e, s);
|
Logs().w('Error while playing video', e, s);
|
||||||
} finally {
|
} finally {
|
||||||
// Workaround for Chewie needs time to get the aspectRatio
|
// Workaround for Chewie needs time to get the aspectRatio
|
||||||
await Future.delayed(const Duration(milliseconds: 100));
|
await Future.delayed(const Duration(milliseconds: 100));
|
||||||
|
@ -10,7 +10,6 @@ import 'package:wakelock/wakelock.dart';
|
|||||||
|
|
||||||
import 'package:fluffychat/config/app_config.dart';
|
import 'package:fluffychat/config/app_config.dart';
|
||||||
import 'package:fluffychat/utils/platform_infos.dart';
|
import 'package:fluffychat/utils/platform_infos.dart';
|
||||||
import 'package:fluffychat/utils/sentry_controller.dart';
|
|
||||||
import 'events/audio_player.dart';
|
import 'events/audio_player.dart';
|
||||||
|
|
||||||
class RecordingDialog extends StatefulWidget {
|
class RecordingDialog extends StatefulWidget {
|
||||||
@ -64,9 +63,9 @@ class _RecordingDialogState extends State<RecordingDialog> {
|
|||||||
_duration += const Duration(milliseconds: 100);
|
_duration += const Duration(milliseconds: 100);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
} catch (e, s) {
|
} catch (_) {
|
||||||
SentryController.captureException(e, s);
|
|
||||||
setState(() => error = true);
|
setState(() => error = true);
|
||||||
|
rethrow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -8,7 +8,6 @@ import 'package:package_info_plus/package_info_plus.dart';
|
|||||||
import 'package:url_launcher/url_launcher.dart';
|
import 'package:url_launcher/url_launcher.dart';
|
||||||
import 'package:vrouter/vrouter.dart';
|
import 'package:vrouter/vrouter.dart';
|
||||||
|
|
||||||
import 'package:fluffychat/widgets/sentry_switch_list_tile.dart';
|
|
||||||
import '../config/app_config.dart';
|
import '../config/app_config.dart';
|
||||||
|
|
||||||
abstract class PlatformInfos {
|
abstract class PlatformInfos {
|
||||||
@ -62,7 +61,6 @@ abstract class PlatformInfos {
|
|||||||
onPressed: () => VRouter.of(context).to('logs'),
|
onPressed: () => VRouter.of(context).to('logs'),
|
||||||
child: const Text('Logs'),
|
child: const Text('Logs'),
|
||||||
),
|
),
|
||||||
SentrySwitchListTile.adaptive(label: L10n.of(context)!.sendBugReports),
|
|
||||||
],
|
],
|
||||||
applicationIcon: Image.asset('assets/logo.png', width: 64, height: 64),
|
applicationIcon: Image.asset('assets/logo.png', width: 64, height: 64),
|
||||||
applicationName: AppConfig.applicationName,
|
applicationName: AppConfig.applicationName,
|
||||||
|
@ -8,7 +8,6 @@ import 'package:path_provider/path_provider.dart';
|
|||||||
import 'package:video_compress/video_compress.dart';
|
import 'package:video_compress/video_compress.dart';
|
||||||
|
|
||||||
import 'package:fluffychat/utils/platform_infos.dart';
|
import 'package:fluffychat/utils/platform_infos.dart';
|
||||||
import 'package:fluffychat/utils/sentry_controller.dart';
|
|
||||||
|
|
||||||
extension ResizeImage on MatrixFile {
|
extension ResizeImage on MatrixFile {
|
||||||
static const int max = 1200;
|
static const int max = 1200;
|
||||||
@ -23,7 +22,7 @@ extension ResizeImage on MatrixFile {
|
|||||||
// will throw an error e.g. on Android SDK < 18
|
// will throw an error e.g. on Android SDK < 18
|
||||||
mediaInfo = await VideoCompress.compressVideo(tmpFile.path);
|
mediaInfo = await VideoCompress.compressVideo(tmpFile.path);
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
SentryController.captureException(e, s);
|
Logs().w('Error while compressing video', e, s);
|
||||||
}
|
}
|
||||||
return MatrixVideoFile(
|
return MatrixVideoFile(
|
||||||
bytes: (await mediaInfo?.file?.readAsBytes()) ?? bytes,
|
bytes: (await mediaInfo?.file?.readAsBytes()) ?? bytes,
|
||||||
@ -50,7 +49,7 @@ extension ResizeImage on MatrixFile {
|
|||||||
name: name,
|
name: name,
|
||||||
);
|
);
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
SentryController.captureException(e, s);
|
Logs().w('Error while compressing video', e, s);
|
||||||
}
|
}
|
||||||
return null;
|
return 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<void> toggleSentryAction(
|
|
||||||
BuildContext context, bool enableSentry) async {
|
|
||||||
if (!AppConfig.enableSentry) return;
|
|
||||||
final storage = Store();
|
|
||||||
await storage.setItemBool(SettingKeys.sentry, enableSentry);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
static Future<bool> 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,
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -24,7 +24,6 @@ import 'package:vrouter/vrouter.dart';
|
|||||||
import 'package:fluffychat/config/themes.dart';
|
import 'package:fluffychat/config/themes.dart';
|
||||||
import 'package:fluffychat/utils/client_manager.dart';
|
import 'package:fluffychat/utils/client_manager.dart';
|
||||||
import 'package:fluffychat/utils/platform_infos.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/uia_request_manager.dart';
|
||||||
import 'package:fluffychat/utils/voip_plugin.dart';
|
import 'package:fluffychat/utils/voip_plugin.dart';
|
||||||
import '../config/app_config.dart';
|
import '../config/app_config.dart';
|
||||||
@ -211,7 +210,6 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
|
|||||||
}
|
}
|
||||||
} catch (e, s) {
|
} catch (e, s) {
|
||||||
client.onLoginStateChanged.addError(e, s);
|
client.onLoginStateChanged.addError(e, s);
|
||||||
SentryController.captureException(e, s);
|
|
||||||
rethrow;
|
rethrow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -273,12 +271,6 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _reportSyncError(SyncStatusUpdate update) =>
|
|
||||||
SentryController.captureException(
|
|
||||||
update.error!.exception,
|
|
||||||
update.error!.stackTrace,
|
|
||||||
);
|
|
||||||
|
|
||||||
void _registerSubs(String name) {
|
void _registerSubs(String name) {
|
||||||
final c = getClientByName(name);
|
final c = getClientByName(name);
|
||||||
if (c == null) {
|
if (c == null) {
|
||||||
@ -286,9 +278,6 @@ class MatrixState extends State<Matrix> with WidgetsBindingObserver {
|
|||||||
'Attempted to register subscriptions for non-existing client $name');
|
'Attempted to register subscriptions for non-existing client $name');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
c.onSyncStatus.stream
|
|
||||||
.where((s) => s.status == SyncStatus.error)
|
|
||||||
.listen(_reportSyncError);
|
|
||||||
onRoomKeyRequestSub[name] ??=
|
onRoomKeyRequestSub[name] ??=
|
||||||
c.onRoomKeyRequest.stream.listen((RoomKeyRequest request) async {
|
c.onRoomKeyRequest.stream.listen((RoomKeyRequest request) async {
|
||||||
if (widget.clients.any(((cl) =>
|
if (widget.clients.any(((cl) =>
|
||||||
|
@ -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<SentrySwitchListTile> {
|
|
||||||
bool _enabled = false;
|
|
||||||
|
|
||||||
@override
|
|
||||||
Widget build(BuildContext context) {
|
|
||||||
return FutureBuilder<bool>(
|
|
||||||
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(() {}),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1500,13 +1500,6 @@ packages:
|
|||||||
url: "https://pub.dartlang.org"
|
url: "https://pub.dartlang.org"
|
||||||
source: hosted
|
source: hosted
|
||||||
version: "0.0.5"
|
version: "0.0.5"
|
||||||
sentry:
|
|
||||||
dependency: "direct main"
|
|
||||||
description:
|
|
||||||
name: sentry
|
|
||||||
url: "https://pub.dartlang.org"
|
|
||||||
source: hosted
|
|
||||||
version: "6.4.0"
|
|
||||||
share_plus:
|
share_plus:
|
||||||
dependency: "direct main"
|
dependency: "direct main"
|
||||||
description:
|
description:
|
||||||
|
@ -76,7 +76,6 @@ dependencies:
|
|||||||
receive_sharing_intent: ^1.4.5
|
receive_sharing_intent: ^1.4.5
|
||||||
record: ^4.3.2
|
record: ^4.3.2
|
||||||
scroll_to_index: ^3.0.1
|
scroll_to_index: ^3.0.1
|
||||||
sentry: ^6.3.0
|
|
||||||
share_plus: ^4.0.9
|
share_plus: ^4.0.9
|
||||||
shared_preferences: ^2.0.13
|
shared_preferences: ^2.0.13
|
||||||
slugify: ^2.0.0
|
slugify: ^2.0.0
|
||||||
|
Loading…
Reference in New Issue
Block a user