diff options
author | Dennis Collinson <dennis.collective@gmail.com> | 2012-02-09 06:24:40 +0400 |
---|---|---|
committer | Dennis Collinson <dennis.collective@gmail.com> | 2012-02-10 07:01:00 +0400 |
commit | 9e1816dc12186b0957873856cffcb1f4ea68aabc (patch) | |
tree | b5b3b0d7160c01d87a25fd24e1ce9808eeb1213f /app/models/like.rb | |
parent | 1c314c9540b9617e8860dda512d67928fbc26e64 (diff) |
Participations are a federated, relayable model :)
Diffstat (limited to 'app/models/like.rb')
-rw-r--r-- | app/models/like.rb | 51 |
1 files changed, 8 insertions, 43 deletions
diff --git a/app/models/like.rb b/app/models/like.rb index 5466bddd1..07dc4e2ea 100644 --- a/app/models/like.rb +++ b/app/models/like.rb @@ -2,14 +2,16 @@ # licensed under the Affero General Public License version 3 or later. See # the COPYRIGHT file. -class Like < ActiveRecord::Base - include ROXML +class Like < FederatedRelayable + after_create do + self.parent.update_likes_counter + end - include Diaspora::Webhooks - include Diaspora::Guid + after_destroy do + self.parent.update_likes_counter + end - xml_attr :target_type - include Diaspora::Relayable + xml_attr :positive # NOTE API V1 to be extracted acts_as_api @@ -20,43 +22,6 @@ class Like < ActiveRecord::Base t.add :created_at end - xml_attr :positive - xml_attr :diaspora_handle - - belongs_to :target, :polymorphic => true - belongs_to :author, :class_name => 'Person' - - validates_uniqueness_of :target_id, :scope => [:target_type, :author_id] - validates :parent, :presence => true #should be in relayable (pending on fixing Message) - - after_create do - self.parent.update_likes_counter - end - - after_destroy do - self.parent.update_likes_counter - end - - def diaspora_handle - self.author.diaspora_handle - end - - def diaspora_handle= nh - self.author = Webfinger.new(nh).fetch - end - - def parent_class - self.target_type.constantize - end - - def parent - self.target - end - - def parent= parent - self.target = parent - end - def notification_type(user, person) #TODO(dan) need to have a notification for likes on comments, until then, return nil return nil if self.target_type == "Comment" |