From 0542773bca804868c8e4b45fe08f6041cb1b5851 Mon Sep 17 00:00:00 2001 From: Eugen Rochko Date: Mon, 19 Dec 2016 09:12:00 +0100 Subject: [PATCH] Make unfavouriting async to prevent timeout errors from leaving orphaned records behind --- app/controllers/api/v1/statuses_controller.rb | 6 +++++- app/views/api/oembed/show.json.rabl | 2 +- app/workers/unfavourite_worker.rb | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) create mode 100644 app/workers/unfavourite_worker.rb diff --git a/app/controllers/api/v1/statuses_controller.rb b/app/controllers/api/v1/statuses_controller.rb index 8b7690850..453d003da 100644 --- a/app/controllers/api/v1/statuses_controller.rb +++ b/app/controllers/api/v1/statuses_controller.rb @@ -83,7 +83,11 @@ class Api::V1::StatusesController < ApiController end def unfavourite - @status = UnfavouriteService.new.call(current_user.account, Status.find(params[:id])).status.reload + @status = Status.find(params[:id]) + @favourited_map = { @status.id => false } + + UnfavouriteWorker.perform_async(current_user.account_id, @status.id) + render action: :show end diff --git a/app/views/api/oembed/show.json.rabl b/app/views/api/oembed/show.json.rabl index f33b70ee5..311c02dad 100644 --- a/app/views/api/oembed/show.json.rabl +++ b/app/views/api/oembed/show.json.rabl @@ -11,4 +11,4 @@ node(:provider_url) { root_url } node(:cache_age) { 86_400 } node(:html) { |entry| "" } node(:width) { @width } -node(:height) { nil } +node(:height) { @height } diff --git a/app/workers/unfavourite_worker.rb b/app/workers/unfavourite_worker.rb new file mode 100644 index 000000000..a14c82d6f --- /dev/null +++ b/app/workers/unfavourite_worker.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +class UnfavouriteWorker + include Sidekiq::Worker + + def perform(account_id, status_id) + UnfavouriteService.new.call(Account.find(account_id), Status.find(status_id)) + end +end