mirror of
https://github.com/twonlyapp/twonly-app.git
synced 2026-01-15 16:28:40 +00:00
fix #188
This commit is contained in:
parent
f362695f6e
commit
024def010c
1 changed files with 44 additions and 43 deletions
|
|
@ -160,36 +160,10 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
|
||||||
Logger("handleServerMessages")
|
Logger("handleServerMessages")
|
||||||
.shout("Content or messageid not defined $message");
|
.shout("Content or messageid not defined $message");
|
||||||
} else {
|
} else {
|
||||||
// when a message is received doubled ignore it...
|
|
||||||
if ((await twonlyDatabase.messagesDao
|
|
||||||
.containsOtherMessageId(fromUserId, message.messageId!))) {
|
|
||||||
var ok = client.Response_Ok()..none = true;
|
|
||||||
return client.Response()..ok = ok;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool acknowledgeByUser = false;
|
|
||||||
DateTime? openedAt;
|
|
||||||
|
|
||||||
if (message.kind == MessageKind.storedMediaFile ||
|
|
||||||
message.kind == MessageKind.reopenedMedia) {
|
|
||||||
acknowledgeByUser = true;
|
|
||||||
openedAt = DateTime.now();
|
|
||||||
}
|
|
||||||
|
|
||||||
int? responseToMessageId;
|
|
||||||
int? responseToOtherMessageId;
|
|
||||||
int? messageId;
|
|
||||||
|
|
||||||
final content = message.content!;
|
final content = message.content!;
|
||||||
if (content is TextMessageContent) {
|
|
||||||
responseToMessageId = content.responseToMessageId;
|
|
||||||
responseToOtherMessageId = content.responseToOtherMessageId;
|
|
||||||
}
|
|
||||||
if (content is ReopenedMediaFileContent) {
|
|
||||||
responseToMessageId = content.messageId;
|
|
||||||
}
|
|
||||||
if (content is StoredMediaFileContent) {
|
if (content is StoredMediaFileContent) {
|
||||||
responseToMessageId = content.messageId;
|
/// stored media file just updates the message
|
||||||
await twonlyDatabase.messagesDao.updateMessageByOtherUser(
|
await twonlyDatabase.messagesDao.updateMessageByOtherUser(
|
||||||
fromUserId,
|
fromUserId,
|
||||||
content.messageId,
|
content.messageId,
|
||||||
|
|
@ -198,6 +172,33 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
|
||||||
),
|
),
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
|
// when a message is received doubled ignore it...
|
||||||
|
if ((await twonlyDatabase.messagesDao
|
||||||
|
.containsOtherMessageId(fromUserId, message.messageId!))) {
|
||||||
|
var ok = client.Response_Ok()..none = true;
|
||||||
|
return client.Response()..ok = ok;
|
||||||
|
}
|
||||||
|
|
||||||
|
int? responseToMessageId;
|
||||||
|
int? responseToOtherMessageId;
|
||||||
|
int? messageId;
|
||||||
|
|
||||||
|
bool acknowledgeByUser = false;
|
||||||
|
DateTime? openedAt;
|
||||||
|
|
||||||
|
if (message.kind == MessageKind.reopenedMedia) {
|
||||||
|
acknowledgeByUser = true;
|
||||||
|
openedAt = DateTime.now();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (content is TextMessageContent) {
|
||||||
|
responseToMessageId = content.responseToMessageId;
|
||||||
|
responseToOtherMessageId = content.responseToOtherMessageId;
|
||||||
|
}
|
||||||
|
if (content is ReopenedMediaFileContent) {
|
||||||
|
responseToMessageId = content.messageId;
|
||||||
|
}
|
||||||
|
|
||||||
String contentJson = jsonEncode(content.toJson());
|
String contentJson = jsonEncode(content.toJson());
|
||||||
final update = MessagesCompanion(
|
final update = MessagesCompanion(
|
||||||
contactId: Value(fromUserId),
|
contactId: Value(fromUserId),
|
||||||
|
|
@ -222,20 +223,7 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
|
||||||
if (messageId == null) {
|
if (messageId == null) {
|
||||||
return client.Response()..error = ErrorCode.InternalError;
|
return client.Response()..error = ErrorCode.InternalError;
|
||||||
}
|
}
|
||||||
}
|
if (message.kind == MessageKind.media) {
|
||||||
|
|
||||||
await encryptAndSendMessageAsync(
|
|
||||||
message.messageId!,
|
|
||||||
fromUserId,
|
|
||||||
MessageJson(
|
|
||||||
kind: MessageKind.ack,
|
|
||||||
messageId: message.messageId!,
|
|
||||||
content: MessageContent(),
|
|
||||||
timestamp: DateTime.now(),
|
|
||||||
),
|
|
||||||
);
|
|
||||||
|
|
||||||
if (message.kind == MessageKind.media && messageId != null) {
|
|
||||||
twonlyDatabase.contactsDao.incFlameCounter(
|
twonlyDatabase.contactsDao.incFlameCounter(
|
||||||
fromUserId,
|
fromUserId,
|
||||||
true,
|
true,
|
||||||
|
|
@ -249,7 +237,20 @@ Future<client.Response> handleNewMessage(int fromUserId, Uint8List body) async {
|
||||||
startDownloadMedia(msg, false);
|
startDownloadMedia(msg, false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// dearchive contact when receiving a new message
|
}
|
||||||
|
|
||||||
|
await encryptAndSendMessageAsync(
|
||||||
|
message.messageId!,
|
||||||
|
fromUserId,
|
||||||
|
MessageJson(
|
||||||
|
kind: MessageKind.ack,
|
||||||
|
messageId: message.messageId!,
|
||||||
|
content: MessageContent(),
|
||||||
|
timestamp: DateTime.now(),
|
||||||
|
),
|
||||||
|
);
|
||||||
|
|
||||||
|
// unarchive contact when receiving a new message
|
||||||
await twonlyDatabase.contactsDao.updateContact(
|
await twonlyDatabase.contactsDao.updateContact(
|
||||||
fromUserId,
|
fromUserId,
|
||||||
ContactsCompanion(
|
ContactsCompanion(
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue