rollback method

Future<bool> rollback(
  1. String interactionId
)

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;
}