🐛 Try to fix message loading

This commit is contained in:
2025-11-23 11:54:51 +08:00
parent ff934d0f08
commit b151ef6686
2 changed files with 16 additions and 11 deletions

View File

@@ -449,4 +449,13 @@ class AppDatabase extends _$AppDatabase {
chatMembers,
).insert(companionFromMember(member), mode: InsertMode.insertOrReplace);
}
Future<int> saveMessageWithSender(LocalChatMessage message) async {
// First save the sender if it exists
if (message.sender != null) {
await saveMember(message.sender!);
}
// Then save the message
return await saveMessage(messageToCompanion(message));
}
}

View File

@@ -299,10 +299,7 @@ class MessagesNotifier extends _$MessagesNotifier {
}).toList();
for (final message in messages) {
await _database.saveMessage(_database.messageToCompanion(message));
if (message.sender != null) {
await _database.saveMember(message.sender!); // Save/update member data
}
await _database.saveMessageWithSender(message);
if (message.nonce != null) {
_pendingMessages.removeWhere(
(_, pendingMsg) => pendingMsg.nonce == message.nonce,
@@ -501,8 +498,7 @@ class MessagesNotifier extends _$MessagesNotifier {
_pendingMessages[localMessage.id] = localMessage;
_fileUploadProgress[localMessage.id] = {};
await _database.saveMessage(_database.messageToCompanion(localMessage));
await _database.saveMember(mockMessage.sender);
await _database.saveMessageWithSender(localMessage);
final currentMessages = state.value ?? [];
state = AsyncValue.data([localMessage, ...currentMessages]);
@@ -553,7 +549,7 @@ class MessagesNotifier extends _$MessagesNotifier {
_pendingMessages.remove(localMessage.id);
await _database.deleteMessage(localMessage.id);
await _database.saveMessage(_database.messageToCompanion(updatedMessage));
await _database.saveMessageWithSender(updatedMessage);
final currentMessages = state.value ?? [];
if (editingTo != null) {
@@ -635,7 +631,7 @@ class MessagesNotifier extends _$MessagesNotifier {
_pendingMessages.remove(pendingMessageId);
await _database.deleteMessage(pendingMessageId);
await _database.saveMessage(_database.messageToCompanion(updatedMessage));
await _database.saveMessageWithSender(updatedMessage);
final newMessages =
(state.value ?? []).map((m) {
@@ -692,7 +688,7 @@ class MessagesNotifier extends _$MessagesNotifier {
);
}
await _database.saveMessage(_database.messageToCompanion(localMessage));
await _database.saveMessageWithSender(localMessage);
final currentMessages = state.value ?? [];
final existingIndex = currentMessages.indexWhere(
@@ -789,7 +785,7 @@ class MessagesNotifier extends _$MessagesNotifier {
messageToUpdate.status,
);
await _database.saveMessage(_database.messageToCompanion(deletedMessage));
await _database.saveMessageWithSender(deletedMessage);
if (messageIndex != -1) {
final newList = [...currentMessages];
@@ -938,7 +934,7 @@ class MessagesNotifier extends _$MessagesNotifier {
MessageStatus.sent,
);
await _database.saveMessage(_database.messageToCompanion(message));
await _database.saveMessageWithSender(message);
return message;
} catch (e) {
if (e is DioException) return null;