2025-05-15 15:33:01 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
|
|
|
|
|
class Trips::CalculateDistanceJob < ApplicationJob
|
|
|
|
|
queue_as :default
|
|
|
|
|
|
2025-05-19 13:00:34 -04:00
|
|
|
def perform(trip_id, distance_unit)
|
2025-05-15 15:33:01 -04:00
|
|
|
trip = Trip.find(trip_id)
|
|
|
|
|
|
|
|
|
|
trip.calculate_distance
|
|
|
|
|
trip.save!
|
|
|
|
|
|
2025-05-19 13:00:34 -04:00
|
|
|
broadcast_update(trip, distance_unit)
|
2025-05-15 15:33:01 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
private
|
|
|
|
|
|
2025-05-19 13:00:34 -04:00
|
|
|
def broadcast_update(trip, distance_unit)
|
2025-05-15 15:33:01 -04:00
|
|
|
Turbo::StreamsChannel.broadcast_update_to(
|
|
|
|
|
"trip_#{trip.id}",
|
|
|
|
|
target: "trip_distance",
|
|
|
|
|
partial: "trips/distance",
|
2025-05-19 13:00:34 -04:00
|
|
|
locals: { trip: trip, distance_unit: distance_unit }
|
2025-05-15 15:33:01 -04:00
|
|
|
)
|
|
|
|
|
end
|
|
|
|
|
end
|