about summary refs log tree commit diff
path: root/app
diff options
context:
space:
mode:
authorThibG <thib@sitedethib.com>2019-03-04 22:51:23 +0100
committerEugen Rochko <eugen@zeonfederated.com>2019-03-04 22:51:23 +0100
commit833ffce2df68ae3b673e230fcb273da5d8c4681f (patch)
treef06854fd6b50c62897d9c25a9b50c21d93c894dd /app
parent7a25bb858a2a7f3662d2ad2a8cba9ac7ea141aca (diff)
Store remote votes URI (#10158)
* Store remote votes URI

* Add spec for accepting remote votes

* Make poll vote id generation work the same way as follows
Diffstat (limited to 'app')
-rw-r--r--app/lib/activitypub/activity/create.rb2
-rw-r--r--app/models/poll_vote.rb3
-rw-r--r--app/serializers/activitypub/vote_serializer.rb2
3 files changed, 5 insertions, 2 deletions
diff --git a/app/lib/activitypub/activity/create.rb b/app/lib/activitypub/activity/create.rb
index fc4c45692..07ef16bf3 100644
--- a/app/lib/activitypub/activity/create.rb
+++ b/app/lib/activitypub/activity/create.rb
@@ -241,7 +241,7 @@ class ActivityPub::Activity::Create < ActivityPub::Activity
 
   def poll_vote?
     return false if replied_to_status.nil? || replied_to_status.poll.nil? || !replied_to_status.local? || !replied_to_status.poll.options.include?(@object['name'])
-    replied_to_status.poll.votes.create!(account: @account, choice: replied_to_status.poll.options.index(@object['name']))
+    replied_to_status.poll.votes.create!(account: @account, choice: replied_to_status.poll.options.index(@object['name']), uri: @object['id'])
   end
 
   def resolve_thread(status)
diff --git a/app/models/poll_vote.rb b/app/models/poll_vote.rb
index 57781d616..aec678968 100644
--- a/app/models/poll_vote.rb
+++ b/app/models/poll_vote.rb
@@ -9,6 +9,7 @@
 #  choice     :integer          default(0), not null
 #  created_at :datetime         not null
 #  updated_at :datetime         not null
+#  uri        :string
 #
 
 class PollVote < ApplicationRecord
@@ -20,6 +21,8 @@ class PollVote < ApplicationRecord
 
   after_create_commit :increment_counter_cache
 
+  delegate :local?, to: :account
+
   private
 
   def increment_counter_cache
diff --git a/app/serializers/activitypub/vote_serializer.rb b/app/serializers/activitypub/vote_serializer.rb
index 655d04d22..248190404 100644
--- a/app/serializers/activitypub/vote_serializer.rb
+++ b/app/serializers/activitypub/vote_serializer.rb
@@ -6,7 +6,7 @@ class ActivityPub::VoteSerializer < ActiveModel::Serializer
                :in_reply_to, :to
 
     def id
-      [ActivityPub::TagManager.instance.uri_for(object.account), '#votes/', object.id].join
+      ActivityPub::TagManager.instance.uri_for(object) || [ActivityPub::TagManager.instance.uri_for(object.account), '#votes/', object.id].join
     end
 
     def type