| 
									
										
										
										
											2016-11-15 16:56:29 +01:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-02-24 12:57:29 +01:00
										 |  |  | class UnfollowService < BaseService | 
					
						
							|  |  |  |   # Unfollow and notify the remote user | 
					
						
							|  |  |  |   # @param [Account] source_account Where to unfollow from | 
					
						
							|  |  |  |   # @param [Account] target_account Which to unfollow | 
					
						
							|  |  |  |   def call(source_account, target_account) | 
					
						
							|  |  |  |     follow = source_account.unfollow!(target_account) | 
					
						
							| 
									
										
										
										
											2017-02-12 00:48:53 +01:00
										 |  |  |     NotificationWorker.perform_async(build_xml(follow), source_account.id, target_account.id) unless target_account.local? | 
					
						
							| 
									
										
										
										
											2017-01-23 21:29:34 +01:00
										 |  |  |     UnmergeWorker.perform_async(target_account.id, source_account.id) | 
					
						
							| 
									
										
										
										
											2016-02-24 12:57:29 +01:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-02-12 00:48:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def build_xml(follow) | 
					
						
							| 
									
										
										
										
											2017-02-25 03:34:37 +01:00
										 |  |  |     description = "#{follow.account.acct} is no longer following #{follow.target_account.acct}" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-12 00:48:53 +01:00
										 |  |  |     Nokogiri::XML::Builder.new do |xml| | 
					
						
							|  |  |  |       entry(xml, true) do | 
					
						
							| 
									
										
										
										
											2017-02-13 13:30:33 +01:00
										 |  |  |         unique_id xml, Time.now.utc, follow.id, 'Follow' | 
					
						
							| 
									
										
										
										
											2017-02-25 03:34:37 +01:00
										 |  |  |         title xml, description | 
					
						
							|  |  |  |         content xml, description | 
					
						
							| 
									
										
										
										
											2017-02-12 00:48:53 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         author(xml) do | 
					
						
							|  |  |  |           include_author xml, follow.account | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         object_type xml, :activity | 
					
						
							|  |  |  |         verb xml, :unfollow | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         target(xml) do | 
					
						
							|  |  |  |           include_author xml, follow.target_account | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end.to_xml | 
					
						
							|  |  |  |   end | 
					
						
							| 
									
										
										
										
											2016-02-24 12:57:29 +01:00
										 |  |  | end |