diff --git a/lib/pangea/widgets/igc/pangea_rich_text.dart b/lib/pangea/widgets/igc/pangea_rich_text.dart index 7391edb05..451423bb2 100644 --- a/lib/pangea/widgets/igc/pangea_rich_text.dart +++ b/lib/pangea/widgets/igc/pangea_rich_text.dart @@ -56,56 +56,74 @@ class PangeaRichTextState extends State { setTextSpan(); } -void _setTextSpan(String newTextSpan) { - try { - if (!mounted) return; // Early exit if the widget is no longer in the tree + void _setTextSpan(String newTextSpan) { + 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: error, s: stackTrace, m: "Error setting text span in PangeaRichText"); - } -} - -void setTextSpan() { - if (_fetchingRepresentation) { - _setTextSpan(widget.pangeaMessageEvent.event.getDisplayEvent(widget.pangeaMessageEvent.timeline).body); - return; + widget.toolbarController?.toolbar?.textSelection.setMessageText( + newTextSpan, + ); + setState(() { + textSpan = newTextSpan; + }); + } catch (error, stackTrace) { + ErrorHandler.logError( + e: error, + s: stackTrace, + m: "Error setting text span in PangeaRichText", + ); + } } - if (widget.pangeaMessageEvent.eventId.contains("webdebug")) { - debugger(when: kDebugMode); + void setTextSpan() { + if (_fetchingRepresentation) { + _setTextSpan( + widget.pangeaMessageEvent.event + .getDisplayEvent(widget.pangeaMessageEvent.timeline) + .body, + ); + return; + } + + if (widget.pangeaMessageEvent.eventId.contains("webdebug")) { + debugger(when: kDebugMode); + } + + repEvent = widget.pangeaMessageEvent + .representationByLanguage( + widget.pangeaMessageEvent.messageDisplayLangCode, + ) + ?.content; + + if (repEvent == null) { + setState(() => _fetchingRepresentation = true); + widget.pangeaMessageEvent + .representationByLanguageGlobal( + langCode: widget.pangeaMessageEvent.messageDisplayLangCode, + ) + .onError( + (error, stackTrace) => ErrorHandler.logError( + e: error, + s: stackTrace, + m: "Error fetching representation", + ), + ) + .then((event) { + if (!mounted) return; + repEvent = event; + _setTextSpan(repEvent?.text ?? widget.pangeaMessageEvent.body); + }).whenComplete(() { + if (mounted) { + setState(() => _fetchingRepresentation = false); + } + }); + + _setTextSpan(widget.pangeaMessageEvent.body); + } else { + _setTextSpan(repEvent!.text); + } } - repEvent = widget.pangeaMessageEvent - .representationByLanguage(widget.pangeaMessageEvent.messageDisplayLangCode) - ?.content; - - if (repEvent == null) { - setState(() => _fetchingRepresentation = true); - widget.pangeaMessageEvent - .representationByLanguageGlobal(langCode: widget.pangeaMessageEvent.messageDisplayLangCode) - .onError((error, stackTrace) => ErrorHandler.logError(e: error, s: stackTrace, m: "Error fetching representation")) - .then((event) { - if (!mounted) return; - repEvent = event; - _setTextSpan(repEvent?.text ?? widget.pangeaMessageEvent.body); - }).whenComplete(() { - if (mounted) { - setState(() => _fetchingRepresentation = false); - } - }); - - _setTextSpan(widget.pangeaMessageEvent.body); - } else { - _setTextSpan(repEvent!.text); - } -} - @override Widget build(BuildContext context) { if (blur > 0) {