# frozen_string_literal: true
module ActionCableHelper
  def trigger_rfc_action_cable
    Thread.new do
      # Context: RfC
      if submission.study_group_id.present?
        ActionCable.server.broadcast(
            "la_exercises_#{exercise_id}_channel_study_group_#{submission.study_group_id}",
            type: :rfc,
            id: id,
            html: ApplicationController.render(partial: 'request_for_comments/list_entry',
                                               locals: {request_for_comment: self}))
      end
    ensure
      ActiveRecord::Base.connection_pool.release_connection
    end
  end

  def trigger_rfc_action_cable_from_comment
    # Context: Comment
    RequestForComment.find_by(submission: file.context).trigger_rfc_action_cable
  end

  def trigger_working_times_action_cable
    Thread.new do
      # Context: Submission
      if study_group_id.present?
        ActionCable.server.broadcast(
            "la_exercises_#{exercise_id}_channel_study_group_#{study_group_id}",
            type: :working_times,
            working_time_data: exercise.get_working_times_for_study_group(study_group_id, user))
      end
    ensure
      ActiveRecord::Base.connection_pool.release_connection
    end
  end
end

# TODO: Check if any user is connected and prevent preparing the data otherwise
