now or later?

This commit is contained in:
24c02 2026-01-22 15:55:04 -05:00
parent 0a0547e024
commit 98ea7e3c9d
7 changed files with 19 additions and 10 deletions

View file

@ -154,7 +154,7 @@ class Letter::BatchesController < BaseBatchesController
@batch.letters.each do |letter|
letter.mark_mailed! if letter.may_mark_mailed?
end
User::UpdateTasksJob.perform_now(current_user)
User::UpdateTasksJob.perform_later(current_user)
redirect_to letter_batch_path(@batch), notice: "All letters have been marked as mailed."
else
redirect_to letter_batch_path(@batch), alert: "Cannot mark letters as mailed. Batch must be processed."

View file

@ -69,7 +69,7 @@ class Letter::QueuesController < ApplicationController
end
limit = params[:limit].presence&.to_i
batch = @letter_queue.make_batch(user: current_user, limit:)
User::UpdateTasksJob.perform_now(current_user)
User::UpdateTasksJob.perform_later(current_user)
flash[:success] = "now do something with it!"
redirect_to process_letter_batch_path(batch, uft: @letter_queue.user_facing_title, template: @letter_queue.template)
end
@ -102,7 +102,7 @@ class Letter::QueuesController < ApplicationController
end
# Update user tasks after marking letters as mailed
User::UpdateTasksJob.perform_now(current_user) if marked_count > 0
User::UpdateTasksJob.perform_later(current_user) if marked_count > 0
if failed_letters.any?
flash[:alert] = "Marked #{marked_count} letters as mailed, but failed to mark #{failed_letters.count} letters: #{failed_letters.join(", ")}"

View file

@ -132,7 +132,7 @@ class LettersController < ApplicationController
def mark_mailed
authorize @letter, :mark_mailed?
if @letter.mark_mailed!
User::UpdateTasksJob.perform_now(current_user)
User::UpdateTasksJob.perform_later(current_user)
redirect_to @letter, notice: "Letter has been marked as mailed."
else
redirect_to @letter, alert: "Could not mark letter as mailed: #{@letter.errors.full_messages.join(", ")}"

View file

@ -7,9 +7,10 @@ module Public
def show
@return_path = public_root_path
@letters_data = Rails.cache.fetch("map_data") do
# If cache is empty, run the job synchronously as a fallback
Public::UpdateMapDataJob.perform_now
@letters_data = Rails.cache.read("map_data")
if @letters_data.nil?
Public::UpdateMapDataJob.perform_later
@letters_data = []
end
end
end

View file

@ -11,12 +11,15 @@ class TasksController < ApplicationController
end
def refresh
User::UpdateTasksJob.perform_now(current_user)
User::UpdateTasksJob.perform_later(current_user)
redirect_to tasks_path
end
def find_tasks
@tasks = Rails.cache.read("user_tasks/#{current_user.id}")
@tasks ||= User::UpdateTasksJob.perform_now(current_user)
if @tasks.nil?
User::UpdateTasksJob.perform_later(current_user)
@tasks = []
end
end
end

View file

@ -1,6 +1,11 @@
class Public::UpdateMapDataJob < ApplicationJob
queue_as :default
good_job_control_concurrency_with(
total_limit: 1,
key: "update_map_data"
)
def perform
map_data = fetch_recent_letters_data
Rails.cache.write("map_data", map_data, expires_in: 1.hour)

View file

@ -65,7 +65,7 @@ class Batch < ApplicationRecord
event :mark_processed do
transitions from: :fields_mapped, to: :processed
after do
User::UpdateTasksJob.perform_now(user)
User::UpdateTasksJob.perform_later(user)
end
end
end