Merge pull request #402 from pangeachat/blue-error-handling
error handling for error found by blue
This commit is contained in:
commit
35d909d3cd
3 changed files with 42 additions and 13 deletions
|
|
@ -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…
Add table
Reference in a new issue