diff options
author | Eugen Rochko <eugen@zeonfederated.com> | 2018-08-12 18:16:26 +0200 |
---|---|---|
committer | ThibG <thib@sitedethib.com> | 2018-08-13 18:17:20 +0200 |
commit | 434628d98f07d5b95dc04940ac499f107d1a5d12 (patch) | |
tree | 95cfa2960b3c58b0e2bddfb225edc306f4482978 /app/models | |
parent | 5f41bbd274bb771a712ee7d38df6d1ec47c26212 (diff) |
Expect relays to answer with accept/reject (#8179)
Diffstat (limited to 'app/models')
-rw-r--r-- | app/models/relay.rb | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/app/models/relay.rb b/app/models/relay.rb index 76143bb27..75cb060b2 100644 --- a/app/models/relay.rb +++ b/app/models/relay.rb @@ -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 |