forked from cybrespace/mastodon
		
	Make unfavouriting async to prevent timeout errors from leaving orphaned records behind
This commit is contained in:
		
							parent
							
								
									6b67b55cee
								
							
						
					
					
						commit
						0542773bca
					
				
					 3 changed files with 15 additions and 2 deletions
				
			
		| 
						 | 
					@ -83,7 +83,11 @@ class Api::V1::StatusesController < ApiController
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  def unfavourite
 | 
					  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
 | 
					    render action: :show
 | 
				
			||||||
  end
 | 
					  end
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -11,4 +11,4 @@ node(:provider_url) { root_url }
 | 
				
			||||||
node(:cache_age) { 86_400 }
 | 
					node(:cache_age) { 86_400 }
 | 
				
			||||||
node(:html) { |entry| "<iframe src=\"#{embed_account_stream_entry_url(entry.account, entry)}\" style=\"width: 100%; overflow: hidden\" frameborder=\"0\" width=\"#{@width}\" height=\"#{@height}\" scrolling=\"no\"></iframe>" }
 | 
					node(:html) { |entry| "<iframe src=\"#{embed_account_stream_entry_url(entry.account, entry)}\" style=\"width: 100%; overflow: hidden\" frameborder=\"0\" width=\"#{@width}\" height=\"#{@height}\" scrolling=\"no\"></iframe>" }
 | 
				
			||||||
node(:width) { @width }
 | 
					node(:width) { @width }
 | 
				
			||||||
node(:height) { nil }
 | 
					node(:height) { @height }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
							
								
								
									
										9
									
								
								app/workers/unfavourite_worker.rb
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										9
									
								
								app/workers/unfavourite_worker.rb
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
					@ -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
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue