deleteMessage method
Delete a message (optimistic update).
Implementation
Future<void> deleteMessage(String messageId) async {
if (!_initialized) return;
// Find and snapshot
final index = _state.messages.indexWhere((m) => m.id == messageId);
if (index == -1) return;
final removedMessage = _state.messages[index];
final originalMessages = List<InboxMessage>.from(_state.messages);
final originalCount = _state.unreadCount;
// Optimistic update
final updatedMessages = List<InboxMessage>.from(_state.messages)
..removeAt(index);
final newCount =
removedMessage.read ? _state.unreadCount : (_state.unreadCount - 1).clamp(0, 999999);
_state = _state.copyWith(
messages: updatedMessages,
unreadCount: newCount,
);
notifyListeners();
try {
await _client!.inboxDeleteMessage(messageId);
await _persistState();
} catch (e) {
// Revert on failure
_state = _state.copyWith(
messages: originalMessages,
unreadCount: originalCount,
);
notifyListeners();
debugPrint('Error deleting message: $e');
}
}