Merge pull request #402 from pangeachat/blue-error-handling

error handling for error found by blue
pull/1384/head
ggurdin 1 year ago committed by GitHub
commit 35d909d3cd
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -8,6 +8,11 @@ import 'package:flutter_gen/gen_l10n/l10n.dart';
import 'package:http/http.dart' as http;
import 'package:sentry_flutter/sentry_flutter.dart';
class PangeaWarningError implements Exception {
final String message;
PangeaWarningError(message) : message = "Pangea Warning Error: $message";
}
class ErrorHandler {
ErrorHandler();

@ -57,20 +57,28 @@ class PangeaRichTextState extends State<PangeaRichText> {
}
void _setTextSpan(String newTextSpan) {
widget.toolbarController?.toolbar?.textSelection.setMessageText(
newTextSpan,
);
if (mounted) {
try {
if (!mounted) return; // Early exit if the widget is no longer in the tree
widget.toolbarController?.toolbar?.textSelection.setMessageText(
newTextSpan,
);
setState(() {
textSpan = newTextSpan;
});
} catch (error, stackTrace) {
ErrorHandler.logError(
e: PangeaWarningError(error),
s: stackTrace,
m: "Error setting text span in PangeaRichText",
);
}
}
void setTextSpan() {
if (_fetchingRepresentation == true) {
if (_fetchingRepresentation) {
_setTextSpan(
textSpan = widget.pangeaMessageEvent.event
widget.pangeaMessageEvent.event
.getDisplayEvent(widget.pangeaMessageEvent.timeline)
.body,
);
@ -91,13 +99,17 @@ class PangeaRichTextState extends State<PangeaRichText> {
setState(() => _fetchingRepresentation = true);
widget.pangeaMessageEvent
.representationByLanguageGlobal(
langCode: widget.pangeaMessageEvent.messageDisplayLangCode,
)
.onError(
(error, stackTrace) =>
ErrorHandler.logError(e: error, s: stackTrace),
)
.then((event) {
langCode: widget.pangeaMessageEvent.messageDisplayLangCode,
)
.onError((error, stackTrace) {
ErrorHandler.logError(
e: PangeaWarningError(error),
s: stackTrace,
m: "Error fetching representation",
);
return null;
}).then((event) {
if (!mounted) return;
repEvent = event;
_setTextSpan(repEvent?.text ?? widget.pangeaMessageEvent.body);
}).whenComplete(() {

@ -149,33 +149,41 @@ packages:
description:
name: matcher
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
sha256: d2323aa2060500f906aa31a895b4030b6da3ebdcc5619d14ce1aada65cd161cb
url: "https://pub.dev"
source: hosted
version: "0.12.16+1"
version: "0.12.16+1"
material_color_utilities:
dependency: transitive
description:
name: material_color_utilities
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
sha256: "0e0a020085b65b6083975e499759762399b4475f766c21668c4ecca34ea74e5a"
url: "https://pub.dev"
source: hosted
version: "0.8.0"
version: "0.8.0"
meta:
dependency: transitive
description:
name: meta
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
sha256: "7687075e408b093f36e6bbf6c91878cc0d4cd10f409506f7bc996f68220b9136"
url: "https://pub.dev"
source: hosted
version: "1.12.0"
version: "1.12.0"
path:
dependency: transitive
description:
name: path
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
sha256: "087ce49c3f0dc39180befefc60fdb4acd8f8620e5682fe2476afd0b3688bb4af"
url: "https://pub.dev"
source: hosted
version: "1.9.0"
version: "1.9.0"
pedantic:
dependency: "direct dev"
description:
@ -242,9 +250,11 @@ packages:
description:
name: test_api
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
sha256: "9955ae474176f7ac8ee4e989dadfb411a58c30415bcfb648fa04b2b8a03afa7f"
url: "https://pub.dev"
source: hosted
version: "0.7.0"
version: "0.7.0"
vector_math:
dependency: transitive
description:
@ -272,3 +282,5 @@ packages:
sdks:
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"
dart: ">=3.3.0 <4.0.0"
flutter: ">=3.18.0-18.0.pre.54"

Loading…
Cancel
Save