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 {
String text;
int? responseToMessageId;
TextMessageContent({required this.text, this.responseToMessageId});
int? responseToOtherMessageId;
TextMessageContent({
required this.text,
this.responseToMessageId,
this.responseToOtherMessageId,
});
static TextMessageContent fromJson(Map json) {
return TextMessageContent(
text: json['text'],
responseToOtherMessageId: json.containsKey('responseToOtherMessageId')
? json['responseToOtherMessageId']
: null,
responseToMessageId: json.containsKey('responseToMessageId')
? json['responseToMessageId']
: null);
@ -174,6 +182,7 @@ class TextMessageContent extends MessageContent {
return {
'text': text,
'responseToMessageId': responseToMessageId,
'responseToOtherMessageId': responseToOtherMessageId,
};
}
}

View file

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

View file

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

View file

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