emitPreProcessor property

Map<String, dynamic> Function(Map<String, dynamic> rawJson)? emitPreProcessor
final

Optional pre-processor to modify payload before emitting to server.

Called just before socket.emit() with the complete payload. Perfect for:

  • Adding client metadata (app version, device ID, platform)
  • Injecting authentication tokens or signatures
  • Transforming fields for backend compatibility
  • Adding analytics or tracking tags

Applied to all operations: batch changes, individual upserts, and deletes.

Example:

emitPreProcessor: (rawJson) {
  rawJson['clientVersion'] = '2.1.0';
  rawJson['deviceId'] = DeviceInfo.deviceId;
  rawJson['platform'] = Platform.operatingSystem;
  rawJson['timestamp'] = DateTime.now().toIso8601String();

  // Transform batch operations
  if (rawJson['changes'] is List) {
    for (var change in rawJson['changes']) {
      change['source'] = 'mobile-app';
    }
  }

  return rawJson;
}

Implementation

final Map<String, dynamic> Function(Map<String, dynamic> rawJson)? emitPreProcessor;