sendMessage method
Sends m to the backend and returns its DeliveryStatus.
Implementation
@override
Future<DeliveryStatus> sendMessage(Message m) async {
if (!_connected) return DeliveryStatus.fail('disconnected');
await _delay();
final remoteId = 'srv-${DateTime.now().microsecondsSinceEpoch}';
final stored = m.copyWith(remoteId: remoteId, status: MessageStatus.sent);
_store.add(stored);
// Simulate delivery event back to sender.
_events.add(MessageStatusChangedEvent(
messageId: m.id,
remoteId: remoteId,
status: MessageStatus.sent,
));
return DeliveryStatus.ok(remoteId);
}