♻️ Refactored chat db

This commit is contained in:
2025-11-19 00:29:22 +08:00
parent b77a832d8a
commit ad4bf94195
11 changed files with 7926 additions and 55 deletions

View File

@@ -140,8 +140,11 @@ class MessagesNotifier extends _$MessagesNotifier {
offset: offset,
limit: take,
);
dbMessages =
chatMessagesFromDb.map(_database.companionToMessage).toList();
dbMessages = await Future.wait(
chatMessagesFromDb
.map((msg) => _database.companionToMessage(msg))
.toList(),
);
}
List<LocalChatMessage> filteredMessages = dbMessages;
@@ -202,8 +205,11 @@ class MessagesNotifier extends _$MessagesNotifier {
offset: offset,
limit: take,
);
final dbMessages =
chatMessagesFromDb.map(_database.companionToMessage).toList();
final dbMessages = await Future.wait(
chatMessagesFromDb
.map((msg) => _database.companionToMessage(msg))
.toList(),
);
// Always ensure unique messages to prevent duplicate keys
final uniqueMessages = <LocalChatMessage>[];
@@ -300,7 +306,7 @@ class MessagesNotifier extends _$MessagesNotifier {
final lastMessage =
dbMessages.isEmpty
? null
: _database.companionToMessage(dbMessages.first);
: await _database.companionToMessage(dbMessages.first);
if (lastMessage == null) {
talker.log('No local messages, fetching from network');

View File

@@ -1,3 +1,4 @@
import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:island/models/reference.dart';
import 'package:island/pods/network.dart';
@@ -5,10 +6,7 @@ import 'package:island/pods/network.dart';
part 'file_references.g.dart';
@riverpod
Future<List<Reference>> fileReferences(
FileReferencesRef ref,
String fileId,
) async {
Future<List<Reference>> fileReferences(Ref ref, String fileId) async {
final client = ref.read(apiClientProvider);
final response = await client.get('/drive/files/$fileId/references');
final list = response.data as List<dynamic>;