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