This commit is contained in:
otsmr 2025-05-11 20:51:19 +02:00
parent eedf6e0646
commit 37b46f1f83
4 changed files with 21 additions and 10 deletions

View file

@ -159,11 +159,19 @@ class MediaMessageContent extends MessageContent {
class TextMessageContent extends MessageContent { class TextMessageContent extends MessageContent {
String text; String text;
int? responseToMessageId; int? responseToMessageId;
TextMessageContent({required this.text, this.responseToMessageId}); int? responseToOtherMessageId;
TextMessageContent({
required this.text,
this.responseToMessageId,
this.responseToOtherMessageId,
});
static TextMessageContent fromJson(Map json) { static TextMessageContent fromJson(Map json) {
return TextMessageContent( return TextMessageContent(
text: json['text'], text: json['text'],
responseToOtherMessageId: json.containsKey('responseToOtherMessageId')
? json['responseToOtherMessageId']
: null,
responseToMessageId: json.containsKey('responseToMessageId') responseToMessageId: json.containsKey('responseToMessageId')
? json['responseToMessageId'] ? json['responseToMessageId']
: null); : null);
@ -174,6 +182,7 @@ class TextMessageContent extends MessageContent {
return { return {
'text': text, 'text': text,
'responseToMessageId': responseToMessageId, 'responseToMessageId': responseToMessageId,
'responseToOtherMessageId': responseToOtherMessageId,
}; };
} }
} }

View file

@ -158,11 +158,7 @@ Future<Result> encryptAndSendMessage(
} }
Future sendTextMessage( Future sendTextMessage(
int target, int target, TextMessageContent content, PushKind? pushKind) async {
TextMessageContent content,
PushKind? pushKind, {
int? responseToMessageId,
}) async {
DateTime messageSendAt = DateTime.now(); DateTime messageSendAt = DateTime.now();
int? messageId = await twonlyDatabase.messagesDao.insertMessage( int? messageId = await twonlyDatabase.messagesDao.insertMessage(
@ -171,7 +167,7 @@ Future sendTextMessage(
kind: Value(MessageKind.textMessage), kind: Value(MessageKind.textMessage),
sendAt: Value(messageSendAt), sendAt: Value(messageSendAt),
responseToOtherMessageId: Value(content.responseToMessageId), responseToOtherMessageId: Value(content.responseToMessageId),
responseToMessageId: Value(responseToMessageId), responseToMessageId: Value(content.responseToOtherMessageId),
downloadState: Value(DownloadState.downloaded), downloadState: Value(DownloadState.downloaded),
contentJson: Value( contentJson: Value(
jsonEncode(content.toJson()), jsonEncode(content.toJson()),

View file

@ -179,11 +179,13 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
} }
int? responseToMessageId; int? responseToMessageId;
int? responseToOtherMessageId;
int? messageId; int? messageId;
final content = message.content!; final content = message.content!;
if (content is TextMessageContent) { if (content is TextMessageContent) {
responseToMessageId = content.responseToMessageId; responseToMessageId = content.responseToMessageId;
responseToOtherMessageId = content.responseToOtherMessageId;
} }
if (content is ReopenedMediaFileContent) { if (content is ReopenedMediaFileContent) {
responseToMessageId = content.messageId; responseToMessageId = content.messageId;
@ -207,6 +209,7 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
acknowledgeByServer: Value(true), acknowledgeByServer: Value(true),
acknowledgeByUser: Value(acknowledgeByUser), acknowledgeByUser: Value(acknowledgeByUser),
responseToMessageId: Value(responseToMessageId), responseToMessageId: Value(responseToMessageId),
responseToOtherMessageId: Value(responseToOtherMessageId),
openedAt: Value(openedAt), openedAt: Value(openedAt),
downloadState: Value(message.kind == MessageKind.media downloadState: Value(message.kind == MessageKind.media
? DownloadState.pending ? DownloadState.pending

View file

@ -103,13 +103,16 @@ class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
tmpReactionsToOtherMessages[msg.responseToOtherMessageId!]! tmpReactionsToOtherMessages[msg.responseToOtherMessageId!]!
.add(msg); .add(msg);
} }
} else if (msg.responseToMessageId != null) { }
if (msg.responseToMessageId != null) {
if (!tmpReactionsToMyMessages.containsKey(msg.responseToMessageId!)) { if (!tmpReactionsToMyMessages.containsKey(msg.responseToMessageId!)) {
tmpReactionsToMyMessages[msg.responseToMessageId!] = [msg]; tmpReactionsToMyMessages[msg.responseToMessageId!] = [msg];
} else { } else {
tmpReactionsToMyMessages[msg.responseToMessageId!]!.add(msg); tmpReactionsToMyMessages[msg.responseToMessageId!]!.add(msg);
} }
} else { }
if (msg.responseToMessageId == null &&
msg.responseToOtherMessageId == null) {
displayedMessages.add(msg); displayedMessages.add(msg);
} }
} }
@ -138,9 +141,9 @@ class _ChatItemDetailsViewState extends State<ChatItemDetailsView> {
TextMessageContent( TextMessageContent(
text: newMessageController.text, text: newMessageController.text,
responseToMessageId: responseToMessage?.messageOtherId, responseToMessageId: responseToMessage?.messageOtherId,
responseToOtherMessageId: responseToMessage?.messageId,
), ),
PushKind.text, PushKind.text,
responseToMessageId: responseToMessage?.messageId,
); );
newMessageController.clear(); newMessageController.clear();
currentInputText = ""; currentInputText = "";