|
|
|
@ -19,7 +19,7 @@ import '../../models/pangea_match_model.dart';
|
|
|
|
class PangeaRichText extends StatefulWidget {
|
|
|
|
class PangeaRichText extends StatefulWidget {
|
|
|
|
final PangeaMessageEvent pangeaMessageEvent;
|
|
|
|
final PangeaMessageEvent pangeaMessageEvent;
|
|
|
|
final bool immersionMode;
|
|
|
|
final bool immersionMode;
|
|
|
|
final ToolbarDisplayController toolbarController;
|
|
|
|
final ToolbarDisplayController? toolbarController;
|
|
|
|
final TextStyle? style;
|
|
|
|
final TextStyle? style;
|
|
|
|
|
|
|
|
|
|
|
|
const PangeaRichText({
|
|
|
|
const PangeaRichText({
|
|
|
|
@ -89,7 +89,7 @@ class PangeaRichTextState extends State<PangeaRichText> {
|
|
|
|
.onError((error, stackTrace) => ErrorHandler.logError())
|
|
|
|
.onError((error, stackTrace) => ErrorHandler.logError())
|
|
|
|
.then((event) {
|
|
|
|
.then((event) {
|
|
|
|
repEvent = event;
|
|
|
|
repEvent = event;
|
|
|
|
widget.toolbarController.toolbar?.textSelection.setMessageText(
|
|
|
|
widget.toolbarController?.toolbar?.textSelection.setMessageText(
|
|
|
|
repEvent?.text ?? widget.pangeaMessageEvent.body,
|
|
|
|
repEvent?.text ?? widget.pangeaMessageEvent.body,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
}).whenComplete(() {
|
|
|
|
}).whenComplete(() {
|
|
|
|
@ -99,7 +99,7 @@ class PangeaRichTextState extends State<PangeaRichText> {
|
|
|
|
});
|
|
|
|
});
|
|
|
|
return widget.pangeaMessageEvent.body;
|
|
|
|
return widget.pangeaMessageEvent.body;
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
widget.toolbarController.toolbar?.textSelection.setMessageText(
|
|
|
|
widget.toolbarController?.toolbar?.textSelection.setMessageText(
|
|
|
|
repEvent!.text,
|
|
|
|
repEvent!.text,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
setState(() {});
|
|
|
|
setState(() {});
|
|
|
|
@ -129,31 +129,33 @@ class PangeaRichTextState extends State<PangeaRichText> {
|
|
|
|
final Widget richText = SelectableText.rich(
|
|
|
|
final Widget richText = SelectableText.rich(
|
|
|
|
onSelectionChanged: (selection, cause) {
|
|
|
|
onSelectionChanged: (selection, cause) {
|
|
|
|
if (cause == SelectionChangedCause.longPress &&
|
|
|
|
if (cause == SelectionChangedCause.longPress &&
|
|
|
|
!widget.toolbarController.highlighted &&
|
|
|
|
!(widget.toolbarController?.highlighted ?? false) &&
|
|
|
|
!widget.toolbarController.controller.selectedEvents.any(
|
|
|
|
!(widget.toolbarController?.controller.selectedEvents.any(
|
|
|
|
(e) => e.eventId == widget.pangeaMessageEvent.eventId,
|
|
|
|
(e) => e.eventId == widget.pangeaMessageEvent.eventId,
|
|
|
|
)) {
|
|
|
|
) ??
|
|
|
|
widget.toolbarController.controller.onSelectMessage(
|
|
|
|
false)) {
|
|
|
|
|
|
|
|
widget.toolbarController?.controller.onSelectMessage(
|
|
|
|
widget.pangeaMessageEvent.event,
|
|
|
|
widget.pangeaMessageEvent.event,
|
|
|
|
);
|
|
|
|
);
|
|
|
|
return;
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
widget.toolbarController.toolbar?.textSelection
|
|
|
|
widget.toolbarController?.toolbar?.textSelection
|
|
|
|
.onTextSelection(selection);
|
|
|
|
.onTextSelection(selection);
|
|
|
|
},
|
|
|
|
},
|
|
|
|
onTap: () => widget.toolbarController.showToolbar(context),
|
|
|
|
onTap: () => widget.toolbarController?.showToolbar(context),
|
|
|
|
enableInteractiveSelection: widget.toolbarController.highlighted,
|
|
|
|
enableInteractiveSelection:
|
|
|
|
|
|
|
|
widget.toolbarController?.highlighted ?? false,
|
|
|
|
contextMenuBuilder: (context, state) =>
|
|
|
|
contextMenuBuilder: (context, state) =>
|
|
|
|
widget.toolbarController.highlighted
|
|
|
|
widget.toolbarController?.highlighted ?? true
|
|
|
|
? const SizedBox.shrink()
|
|
|
|
? const SizedBox.shrink()
|
|
|
|
: MessageContextMenu.contextMenuOverride(
|
|
|
|
: MessageContextMenu.contextMenuOverride(
|
|
|
|
context: context,
|
|
|
|
context: context,
|
|
|
|
textSelection: state,
|
|
|
|
textSelection: state,
|
|
|
|
onDefine: () => widget.toolbarController.showToolbar(
|
|
|
|
onDefine: () => widget.toolbarController?.showToolbar(
|
|
|
|
context,
|
|
|
|
context,
|
|
|
|
mode: MessageMode.definition,
|
|
|
|
mode: MessageMode.definition,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
onListen: () => widget.toolbarController.showToolbar(
|
|
|
|
onListen: () => widget.toolbarController?.showToolbar(
|
|
|
|
context,
|
|
|
|
context,
|
|
|
|
mode: MessageMode.play,
|
|
|
|
mode: MessageMode.play,
|
|
|
|
),
|
|
|
|
),
|
|
|
|
|