class Procedure::RevisionChangesComponent < ApplicationComponent
  def initialize(changes:, previous_revision:)
    @changes = changes
    @previous_revision = previous_revision
    @public_move_changes, @private_move_changes = changes.filter { _1.op == :move }.partition { !_1.private? }
    @delete_champ_warning = !total_dossiers.zero? && !@changes.all?(&:can_rebase?)
  end

  private

  def total_dossiers
    @total_dossiers ||= @previous_revision.dossiers
      .visible_by_administration
      .state_en_construction_ou_instruction
      .size
  end
end