sendOperation method
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();
}