Expect relays to answer with accept/reject (#8179)
This commit is contained in:
		
					parent
					
						
							
								2aeeffc3ec
							
						
					
				
			
			
				commit
				
					
						39e361a56d
					
				
			
		
					 5 changed files with 57 additions and 7 deletions
				
			
		|  | @ -5,10 +5,10 @@ | |||
| # | ||||
| #  id                 :bigint(8)        not null, primary key | ||||
| #  inbox_url          :string           default(""), not null | ||||
| #  enabled            :boolean          default(FALSE), not null | ||||
| #  follow_activity_id :string | ||||
| #  created_at         :datetime         not null | ||||
| #  updated_at         :datetime         not null | ||||
| #  state              :integer          default("idle"), not null | ||||
| # | ||||
| 
 | ||||
| class Relay < ApplicationRecord | ||||
|  | @ -16,24 +16,28 @@ class Relay < ApplicationRecord | |||
| 
 | ||||
|   validates :inbox_url, presence: true, uniqueness: true, url: true, if: :will_save_change_to_inbox_url? | ||||
| 
 | ||||
|   scope :enabled, -> { where(enabled: true) } | ||||
|   enum state: [:idle, :pending, :accepted, :rejected] | ||||
| 
 | ||||
|   scope :enabled, -> { accepted } | ||||
| 
 | ||||
|   before_destroy :ensure_disabled | ||||
| 
 | ||||
|   alias enabled? accepted? | ||||
| 
 | ||||
|   def enable! | ||||
|     activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil) | ||||
|     payload     = Oj.dump(follow_activity(activity_id)) | ||||
| 
 | ||||
|     update!(state: :pending, follow_activity_id: activity_id) | ||||
|     ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url) | ||||
|     update(enabled: true, follow_activity_id: activity_id) | ||||
|   end | ||||
| 
 | ||||
|   def disable! | ||||
|     activity_id = ActivityPub::TagManager.instance.generate_uri_for(nil) | ||||
|     payload     = Oj.dump(unfollow_activity(activity_id)) | ||||
| 
 | ||||
|     update!(state: :idle, follow_activity_id: nil) | ||||
|     ActivityPub::DeliveryWorker.perform_async(payload, some_local_account.id, inbox_url) | ||||
|     update(enabled: false, follow_activity_id: nil) | ||||
|   end | ||||
| 
 | ||||
|   private | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue