don't show rich text for own messages if they're not overlay

This commit is contained in:
ggurdin 2024-05-22 12:58:35 -04:00
parent 4b88b263c0
commit ab33ec2b3f
5 changed files with 46 additions and 30 deletions

View file

@ -38,6 +38,7 @@ class MessageContent extends StatelessWidget {
//further down in the chain is also using pangeaController so its not constant
final bool immersionMode;
final ToolbarDisplayController? toolbarController;
final bool isOverlay;
// Pangea#
const MessageContent(
@ -50,6 +51,7 @@ class MessageContent extends StatelessWidget {
this.pangeaMessageEvent,
required this.immersionMode,
required this.toolbarController,
this.isOverlay = false,
// Pangea#
required this.borderRadius,
});
@ -203,7 +205,8 @@ class MessageContent extends StatelessWidget {
&&
!(pangeaMessageEvent?.showRichText(
selected,
toolbarController?.highlighted ?? false,
isOverlay: isOverlay,
highlighted: toolbarController?.highlighted ?? false,
) ??
false)
// Pangea#
@ -305,7 +308,8 @@ class MessageContent extends StatelessWidget {
);
if (pangeaMessageEvent?.showRichText(
selected,
toolbarController?.highlighted ?? false,
isOverlay: isOverlay,
highlighted: toolbarController?.highlighted ?? false,
) ??
false) {
return PangeaRichText(

View file

@ -80,7 +80,11 @@ class PangeaMessageEvent {
return _latestEdit;
}
bool showRichText(bool selected, bool highlighted) {
bool showRichText(
bool selected, {
bool highlighted = false,
bool isOverlay = false,
}) {
if (!_isValidPangeaMessageEvent) {
return false;
}
@ -90,8 +94,11 @@ class PangeaMessageEvent {
if ([EventStatus.error, EventStatus.sending].contains(_event.status)) {
return false;
}
if (ownMessage && !selected && !highlighted) return false;
if (isOverlay) return true;
if (ownMessage && !selected && !highlighted) {
return false;
}
return true;
}

View file

@ -134,8 +134,11 @@ class ToolbarDisplayController {
});
}
bool get highlighted =>
MatrixState.pAnyState.overlay.hashCode.toString() == overlayId;
bool get highlighted {
if (overlayId == null) return false;
if (MatrixState.pAnyState.overlay == null) overlayId = null;
return MatrixState.pAnyState.overlay.hashCode.toString() == overlayId;
}
}
class MessageToolbar extends StatefulWidget {

View file

@ -141,6 +141,7 @@ class OverlayMessage extends StatelessWidget {
pangeaMessageEvent: pangeaMessageEvent,
immersionMode: immersionMode,
toolbarController: toolbarController,
isOverlay: true,
),
if (event.hasAggregatedEvents(
timeline,

View file

@ -48,28 +48,33 @@ class PangeaRichTextState extends State<PangeaRichText> {
@override
void initState() {
super.initState();
updateTextSpan();
}
void updateTextSpan() {
setState(() {
textSpan = getTextSpan();
});
setTextSpan();
}
@override
void didUpdateWidget(PangeaRichText oldWidget) {
super.didUpdateWidget(oldWidget);
updateTextSpan();
setTextSpan();
}
String getTextSpan() {
void _setTextSpan(String newTextSpan) {
widget.toolbarController?.toolbar?.textSelection.setMessageText(
newTextSpan,
);
setState(() {
textSpan = newTextSpan;
});
}
void setTextSpan() {
if (_fetchingRepresentation == true) {
return widget.pangeaMessageEvent.body;
_setTextSpan(textSpan = widget.pangeaMessageEvent.body);
return;
}
if (repEvent != null) {
return repEvent!.text;
_setTextSpan(repEvent!.text);
return;
}
if (widget.pangeaMessageEvent.eventId.contains("webdebug")) {
@ -84,7 +89,6 @@ class PangeaRichTextState extends State<PangeaRichText> {
if (repEvent == null) {
setState(() => _fetchingRepresentation = true);
widget.pangeaMessageEvent
.representationByLanguageGlobal(
langCode: widget.pangeaMessageEvent.messageDisplayLangCode,
@ -95,23 +99,17 @@ class PangeaRichTextState extends State<PangeaRichText> {
)
.then((event) {
repEvent = event;
widget.toolbarController?.toolbar?.textSelection.setMessageText(
repEvent?.text ?? widget.pangeaMessageEvent.body,
);
_setTextSpan(repEvent?.text ?? widget.pangeaMessageEvent.body);
}).whenComplete(() {
if (mounted) {
setState(() => _fetchingRepresentation = false);
}
});
return widget.pangeaMessageEvent.body;
} else {
widget.toolbarController?.toolbar?.textSelection.setMessageText(
repEvent!.text,
);
setState(() {});
}
return repEvent!.text;
_setTextSpan(widget.pangeaMessageEvent.body);
} else {
_setTextSpan(repEvent!.text);
}
}
@override
@ -190,7 +188,10 @@ class PangeaRichTextState extends State<PangeaRichText> {
return blur > 0
? ImageFiltered(
imageFilter: ImageFilter.blur(sigmaX: blur, sigmaY: blur),
imageFilter: ImageFilter.blur(
sigmaX: blur,
sigmaY: blur,
),
child: richText,
)
: richText;