mirror of
https://github.com/discourse/discourse.git
synced 2025-02-25 18:55:32 -06:00
FIX: defer actions in a static method
This avoids capturing a huge closure and passing to defer
This commit is contained in:
parent
d3b4f24ced
commit
5a6d1ee257
@ -783,8 +783,8 @@ class TopicsController < ApplicationController
|
||||
user_id = (current_user.id if current_user)
|
||||
track_visit = should_track_visit_to_topic?
|
||||
|
||||
Scheduler::Defer.later "Track Link" do
|
||||
IncomingLink.add(
|
||||
if !request.format.json?
|
||||
hash = {
|
||||
referer: request.referer || flash[:referer],
|
||||
host: request.host,
|
||||
current_user: current_user,
|
||||
@ -792,14 +792,26 @@ class TopicsController < ApplicationController
|
||||
post_number: params[:post_number],
|
||||
username: request['u'],
|
||||
ip_address: request.remote_ip
|
||||
)
|
||||
end unless request.format.json?
|
||||
}
|
||||
# defer this way so we do not capture the whole controller
|
||||
# in the closure
|
||||
TopicsController.defer_add_incoming_link(hash)
|
||||
end
|
||||
|
||||
TopicsController.defer_track_visit(topic_id, ip, user_id, track_visit)
|
||||
end
|
||||
|
||||
def self.defer_track_visit(topic_id, ip, user_id, track_visit)
|
||||
Scheduler::Defer.later "Track Visit" do
|
||||
TopicViewItem.add(topic_id, ip, user_id)
|
||||
TopicUser.track_visit!(topic_id, user_id) if track_visit
|
||||
end
|
||||
end
|
||||
|
||||
def self.defer_add_incoming_link(hash)
|
||||
Scheduler::Defer.later "Track Link" do
|
||||
IncomingLink.add(hash)
|
||||
end
|
||||
end
|
||||
|
||||
def should_track_visit_to_topic?
|
||||
|
Loading…
Reference in New Issue
Block a user