rollback method
Manually rollback a specific interaction
Implementation
Future<bool> rollback(String interactionId) async {
final snapshot = _snapshots[interactionId];
if (snapshot == null) return false;
bool rollbackSuccess = true;
// Rollback all affected handlers
final futures = _handlers
.where((h) => snapshot.affectedHandlers.contains(h.handlerId))
.map((handler) async {
try {
await handler.handleRollback(interactionId, snapshot.interaction);
} catch (e) {
debugPrint('Rollback failed for ${handler.handlerId}: $e');
rollbackSuccess = false;
}
});
await Future.wait(futures);
// Emit rollback result
final rollbackResult = ABUSResult.rollback(
interactionId: interactionId,
metadata: {
'tags': snapshot.interaction.tags.toList(),
'rollbackSuccess': rollbackSuccess,
},
);
_emitResult(rollbackResult);
_cleanupInteraction(interactionId);
return rollbackSuccess;
}