# frozen_string_literal: true module Sessions class SetMinQuality def initialize(session, preset:) @session = session @preset = preset.to_s.strip end def call id = normalize unless SelectQuality.allowed_min_ids(@session.quality_preset).include?(id) raise ArgumentError, "Qualità minima non valida" end return @session if @session.min_quality_preset == id @session.update!(min_quality_preset: id) @session.stream_events.create!( event_type: "quality_changed", occurred_at: Time.current, metadata: { "min_quality_preset" => id } ) SessionChannel.broadcast_message( @session, { type: "command", action: "set_min_quality", min_quality_preset: id } ) @session end private def normalize return SelectQuality::AUTO_ID if @preset.blank? || @preset == SelectQuality::AUTO_ID @preset end end end