toJson method
Serializes the interaction data to JSON format.
Used for logging, debugging, and network transmission. Must return a JSON-serializable map.
Implementation
@override
Map<String, dynamic> toJson() {
Map<String, dynamic> payloadJson;
if (_toJsonConverter != null) {
payloadJson = _toJsonConverter!(_payload);
} else if (_payload is Map<String, dynamic>) {
payloadJson = _payload as Map<String, dynamic>;
} else {
// Try to call toJson() method if it exists
try {
final dynamic obj = _payload;
payloadJson = obj.toJson() as Map<String, dynamic>;
} catch (e) {
// Fallback to string representation
payloadJson = {'value': _payload.toString(), 'type': T.toString()};
}
}
return {
'id': id,
'payload': payloadJson,
'payloadType': T.toString(),
'timeout': timeout?.inMilliseconds,
'supportsOptimistic': supportsOptimistic,
'priority': priority,
'tags': tags.toList(),
};
}