- Offener Chat meldete bei jedem Neuaufbau erneut "gelesen" – auch mit App im Hintergrund; die gerade gezeigte Benachrichtigung verschwand dann sofort wieder. Jetzt nur bei Fokus, je Event nur einmal. - Zurück in der App: "Neue Nachrichten"-Trenner hinter dem zuletzt gelesenen Stand, danach gelesen melden. - "Lesebestätigungen senden" aus: nur noch private Bestätigung (m.read.private) statt gar keiner – Ungelesen-Zähler stimmen wieder. Gilt auch für "Gelesen" aus der Benachrichtigung. Co-Authored-By: Claude Opus 5.5 <[email protected]>
26 lines
1.1 KiB
Dart
26 lines
1.1 KiB
Dart
import 'package:matrix/matrix.dart';
|
||
import 'package:shared_preferences/shared_preferences.dart';
|
||
|
||
/// SharedPreferences-Schlüssel der Einstellung „Lesebestätigungen senden“
|
||
/// (siehe privacyReadReceiptsProvider). Auch der Hintergrund-Isolate der
|
||
/// Benachrichtigungen liest ihn, dort gibt es keine Provider.
|
||
const readReceiptsPrefKey = 'privacy_read_receipts';
|
||
|
||
Future<bool> loadReadReceiptsPublic() async {
|
||
final prefs = await SharedPreferences.getInstance();
|
||
return prefs.getBool(readReceiptsPrefKey) ?? true;
|
||
}
|
||
|
||
/// Setzt Lesemarker und Lesebestätigung bis [eventId].
|
||
///
|
||
/// Mit [publicReceipt] = false (Einstellung „Lesebestätigungen senden“ aus)
|
||
/// geht nur die private Bestätigung (m.read.private) raus: Der Server zählt
|
||
/// Ungelesenes trotzdem herunter und andere eigene Geräte kennen den Stand,
|
||
/// Chatpartner sehen aber kein „gelesen“. Früher wurde in diesem Fall gar
|
||
/// nichts gesendet – Ungelesen-Zähler blieben dann stehen.
|
||
Future<void> markRoomReadUpTo(
|
||
Room room,
|
||
String eventId, {
|
||
required bool publicReceipt,
|
||
}) => room.setReadMarker(eventId, mRead: eventId, public: publicReceipt);
|