markMessageAsReadByIndex function
Mark a specific message as read by index.
Implementation
Future<void> markMessageAsReadByIndex(
String agentName,
int messageIndex, {
String? teamName,
}) async {
final inboxPath = getInboxPath(agentName, teamName: teamName);
final lockFilePath = '$inboxPath.lock';
final lock = File(lockFilePath);
try {
await _acquireLock(lock);
final messages = await readMailbox(agentName, teamName: teamName);
if (messageIndex < 0 || messageIndex >= messages.length) return;
final msg = messages[messageIndex];
if (msg.read) return;
messages[messageIndex] = msg.copyWith(read: true);
final encoder = const JsonEncoder.withIndent(' ');
await File(
inboxPath,
).writeAsString(encoder.convert(messages.map((m) => m.toJson()).toList()));
} on PathNotFoundException {
return;
} catch (_) {
// Silently fail.
} finally {
await _releaseLock(lock);
}
}