deleteMessage method

Future<void> deleteMessage(
  1. String messageId
)

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');
  }
}