# frozen_string_literal: true

class SnippetInputActionCollection
  include Gitlab::Utils::StrongMemoize

  attr_reader :actions

  delegate :empty?, :any?, :[], to: :actions

  def initialize(actions = [], allowed_actions: nil)
    @actions = actions.map { |action| SnippetInputAction.new(action.merge(allowed_actions: allowed_actions)) }
  end

  def to_commit_actions
    strong_memoize(:commit_actions) do
      actions.map { |action| action.to_commit_action }
    end
  end

  def valid?
    strong_memoize(:valid) do
      actions.all?(&:valid?)
    end
  end
end