fix read indicators

This commit is contained in:
Henry Hiles 2025-11-23 14:50:38 -05:00
commit e55d7c4c58
No known key found for this signature in database
6 changed files with 36 additions and 14 deletions

View file

@ -1,21 +1,20 @@
import "dart:convert";
import "dart:io";
import "package:flutter/foundation.dart";
import "package:nexus/controllers/database_controller.dart";
import "package:vodozemac/vodozemac.dart" as voz;
import "package:flutter_vodozemac/flutter_vodozemac.dart" as voz_fl;
import "package:matrix/matrix.dart";
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:nexus/controllers/secure_storage_controller.dart";
import "package:nexus/models/session_backup.dart";
import "package:path/path.dart";
import "package:path_provider/path_provider.dart";
import "package:sqflite_common_ffi/sqflite_ffi.dart";
class ClientController extends AsyncNotifier<Client> {
static const sessionBackupKey = "sessionBackup";
@override
Future<Client> build() async {
if (!voz.isInitialized()) await voz_fl.init();
final client = Client(
"nexus",
logLevel: kReleaseMode ? Level.warning : Level.verbose,
@ -23,9 +22,7 @@ class ClientController extends AsyncNotifier<Client> {
supportedLoginTypes: {AuthenticationTypes.password},
database: await MatrixSdkDatabase.init(
"nexus",
database: await databaseFactoryFfi.openDatabase(
join((await getApplicationSupportDirectory()).path, "database.db"),
),
database: await ref.watch(DatabaseController.provider.future),
),
);

View file

@ -0,0 +1,18 @@
import "package:flutter_riverpod/flutter_riverpod.dart";
import "package:path/path.dart";
import "package:path_provider/path_provider.dart";
import "package:sqflite_common_ffi/sqflite_ffi.dart";
class DatabaseController extends AsyncNotifier<Database> {
@override
Future<Database> build() async {
databaseFactory = databaseFactoryFfi;
return databaseFactoryFfi.openDatabase(
join((await getApplicationSupportDirectory()).path, "database.db"),
);
}
static final provider = AsyncNotifierProvider<DatabaseController, Database>(
DatabaseController.new,
);
}

View file

@ -64,7 +64,8 @@ class RoomChatController extends AsyncNotifier<ChatController> {
Future<void> markRead() async {
final controller = await future;
await room.setReadMarker(controller.messages.last.id);
final id = controller.messages.last.id;
await room.setReadMarker(id, mRead: id);
}
Future<void> updateMessage(Message message, Message newMessage) async =>