Enable Formatting on Quoted Messages
continuous-integration/drone/pr Build is running Details
continuous-integration/drone/push Build is pending Details

Fix: #556
This commit is contained in:
Sarah Jamie Lewis 2022-11-24 13:51:26 -08:00
parent f6710484a2
commit 059d32718b
3 changed files with 32 additions and 9 deletions

View File

@ -1,5 +1,6 @@
import 'dart:convert';
import 'package:cwtch/config.dart';
import 'package:cwtch/models/message.dart';
import 'package:cwtch/models/messages/malformedmessage.dart';
import 'package:cwtch/widgets/malformedbubble.dart';
@ -8,6 +9,9 @@ import 'package:cwtch/widgets/quotedmessage.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import '../../settings.dart';
import '../../third_party/linkify/flutter_linkify.dart';
class QuotedMessageStructure {
final String quotedHash;
final String body;
@ -34,9 +38,16 @@ class QuotedMessage extends Message {
this.content,
);
var content = message["body"];
return Text(
content,
);
var formatMessages = Provider.of<Settings>(context).isExperimentEnabled(FormattingExperiment);
return SelectableLinkify(
text: content + '\u202F',
options: LinkifyOptions(messageFormatting: formatMessages, parseLinks: false, looseUrl: true, defaultToHttps: true),
linkifiers: [UrlLinkifier()],
onOpen: null,
textAlign: TextAlign.left,
style: TextStyle(overflow: TextOverflow.ellipsis),
codeStyle: TextStyle(overflow: TextOverflow.ellipsis),
textWidthBasis: TextWidthBasis.longestLine);
} catch (e) {
return MalformedBubble();
}

View File

@ -10,6 +10,9 @@ import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:provider/provider.dart';
import '../../settings.dart';
import '../../third_party/linkify/flutter_linkify.dart';
class TextMessage extends Message {
final MessageMetadata metadata;
final String content;
@ -21,9 +24,16 @@ class TextMessage extends Message {
return ChangeNotifierProvider.value(
value: this.metadata,
builder: (bcontext, child) {
return Text(
this.content,
overflow: TextOverflow.ellipsis,
var formatMessages = Provider.of<Settings>(bcontext).isExperimentEnabled(FormattingExperiment);
return SelectableLinkify(
text: content + '\u202F',
options: LinkifyOptions(messageFormatting: formatMessages, parseLinks: false, looseUrl: true, defaultToHttps: true),
linkifiers: [UrlLinkifier()],
onOpen: null,
textAlign: TextAlign.left,
style: TextStyle(overflow: TextOverflow.ellipsis),
codeStyle: TextStyle(overflow: TextOverflow.ellipsis),
textWidthBasis: TextWidthBasis.longestLine,
);
});
}

View File

@ -83,12 +83,14 @@ class QuotedMessageBubbleState extends State<QuotedMessageBubble> {
// If the sender is not us, then we want to give them a nickname...
String qMessageSender;
// if we are quoted then display our nickname
// if we sent the quoted message then display our nickname
if (qMessage.getMetadata().senderHandle == Provider.of<ProfileInfoState>(context).onion) {
qMessageSender = Provider.of<ProfileInfoState>(context).nickname;
} else {
qMessageSender = Provider.of<MessageMetadata>(context).senderHandle;
ContactInfoState? contact = Provider.of<ProfileInfoState>(context).contactList.findContact(qMessage.getMetadata().senderHandle);
// default to handle
qMessageSender = qMessage.getMetadata().senderHandle;
// if we have the handle as a contact then replace with the nickname...
ContactInfoState? contact = Provider.of<ProfileInfoState>(context).contactList.findContact(qMessageSender);
if (contact != null) {
qMessageSender = contact.nickname;
}