sendOperation method

  1. @override
Future<void> sendOperation(
  1. Operation operation
)
override

Sends an operation to the server/peers.

Implementation

@override
Future<void> sendOperation(Operation operation) async {
  const transientOps = {'CURSOR_MOVE', 'GHOST_UPDATE', 'PRESENCE_UPDATE'};
  if (transientOps.contains(operation.type)) {
    if (_innerClient != null && _isConnected) {
      await _innerClient!.sendOperation(operation);
      return;
    }
    print('OfflineClient: Dropping transient operation ${operation.type} because offline');
    return;
  }

  // Legacy: Normalize data if it uses old keys or formats, but keep them robust
  if (operation.data.containsKey('start')) {
    final startVal = operation.data['start'];
    if (startVal is String || startVal is int) {
      operation.data['start_date'] = startVal;
      operation.data.remove('start');
    }
  }
  if (operation.data.containsKey('end')) {
    final endVal = operation.data['end'];
    if (endVal is String || endVal is int) {
      operation.data['end_date'] = endVal;
      operation.data.remove('end');
    }
  }

  await _queueOperation(operation);

  _flushQueue();
}