| 
									
										
										
										
											2017-02-11 02:12:05 +01:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class RejectFollowService < BaseService | 
					
						
							| 
									
										
										
										
											2019-06-04 23:11:18 +02:00
										 |  |  |   include Payloadable | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-02-11 02:12:05 +01:00
										 |  |  |   def call(source_account, target_account) | 
					
						
							|  |  |  |     follow_request = FollowRequest.find_by!(account: source_account, target_account: target_account) | 
					
						
							|  |  |  |     follow_request.reject! | 
					
						
							| 
									
										
										
										
											2019-07-06 23:26:16 +02:00
										 |  |  |     create_notification(follow_request) if !source_account.local? && source_account.activitypub? | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  |     follow_request | 
					
						
							| 
									
										
										
										
											2017-02-12 00:48:53 +01:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   private | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  |   def create_notification(follow_request) | 
					
						
							| 
									
										
										
										
											2019-07-06 23:26:16 +02:00
										 |  |  |     ActivityPub::DeliveryWorker.perform_async(build_json(follow_request), follow_request.target_account_id, follow_request.account.inbox_url) | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def build_json(follow_request) | 
					
						
							| 
									
										
										
										
											2019-06-04 23:11:18 +02:00
										 |  |  |     Oj.dump(serialize_payload(follow_request, ActivityPub::RejectFollowSerializer)) | 
					
						
							| 
									
										
										
										
											2017-08-13 00:44:41 +02:00
										 |  |  |   end | 
					
						
							| 
									
										
										
										
											2017-02-11 02:12:05 +01:00
										 |  |  | end |