Revert "add participant_users to conversations"

This reverts commit 655558cb95.

Revert "MS DG; for real this time?"

This reverts commit f85a047f6f.

Revert "MS DG; actually fix the bug"

This reverts commit cde12ec232.

Revert "fix small commenting email bug #oops"

This reverts commit a552fc80c0.

Revert "dont ban diasporahq  stuff"

This reverts commit 2c12b94e67.

Revert "Merge branch 'participants'"

This reverts commit 7417801886, reversing
changes made to abd211ba72.
This commit is contained in:
danielgrippi 2011-11-05 17:42:52 -07:00
parent 74892b33da
commit c9f069d000
15 changed files with 22 additions and 73 deletions

View file

@ -59,7 +59,7 @@ class Comment < ActiveRecord::Base
end end
def notification_type(user, person) def notification_type(user, person)
if (self.post.author == user.person) && (self.author != user.person) if self.post.author == user.person
return Notifications::CommentOnPost return Notifications::CommentOnPost
elsif self.post.comments.where(:author_id => user.person.id) != [] && self.author_id != user.person.id elsif self.post.comments.where(:author_id => user.person.id) != [] && self.author_id != user.person.id
return Notifications::AlsoCommented return Notifications::AlsoCommented

View file

@ -36,19 +36,11 @@ class Conversation < ActiveRecord::Base
def participant_handles def participant_handles
self.participants.map{|p| p.diaspora_handle}.join(";") self.participants.map{|p| p.diaspora_handle}.join(";")
end end
def participant_handles= handles def participant_handles= handles
handles.split(';').each do |handle| handles.split(';').each do |handle|
self.participants << Webfinger.new(handle).fetch self.participants << Webfinger.new(handle).fetch
end end
end end
def participant_users
@participant_users ||= lambda do
user_ids = self.participants.map {|p| p.owner_id}.compact
User.where(:id => user_ids)
end.call
end
def last_author def last_author
self.messages.last.author if self.messages.size > 0 self.messages.last.author if self.messages.size > 0

View file

@ -22,8 +22,6 @@ module Jobs
def self.perform(user_id, encoded_object_xml, person_ids, dispatcher_class_as_string) def self.perform(user_id, encoded_object_xml, person_ids, dispatcher_class_as_string)
user = User.find(user_id) user = User.find(user_id)
#could be bad here
people = Person.where(:id => person_ids) people = Person.where(:id => person_ids)
dispatcher = dispatcher_class_as_string.constantize dispatcher = dispatcher_class_as_string.constantize

View file

@ -9,12 +9,17 @@ module Jobs
require File.join(Rails.root, 'app/models/notification') require File.join(Rails.root, 'app/models/notification')
def self.perform(user_ids, object_klass, object_id, person_id) def self.perform(user_ids, object_klass, object_id, person_id)
object = object_klass.constantize.find_by_id(object_id) object = object_klass.constantize.find_by_id(object_id)
users = object.participant_users
#hax
return if (object.author.diaspora_handle == 'diasporahq@joindiaspora.com' || (object.respond_to?(:relayable?) && object.parent.author.diaspora_handle == 'diasporahq@joindiaspora.com'))
#end hax
users = User.where(:id => user_ids)
person = Person.find_by_id(person_id) person = Person.find_by_id(person_id)
users.each do |user|
Notification.notify(user, object, person) users.each{|user| Notification.notify(user, object, person) }
end
end end
end end
end end

View file

@ -11,11 +11,7 @@ module Jobs
@queue = :receive @queue = :receive
def self.perform(object_class_string, object_id, recipient_user_ids) def self.perform(object_class_string, object_id, recipient_user_ids)
object = object_class_string.constantize.find(object_id) object = object_class_string.constantize.find(object_id)
#recipient user ids could be really bad
receiver = Postzord::Receiver::LocalBatch.new(object, recipient_user_ids) receiver = Postzord::Receiver::LocalBatch.new(object, recipient_user_ids)
receiver.perform! receiver.perform!
end end

View file

@ -1,7 +1,7 @@
# Copyright (c) 2010-2011, Diaspora Inc. This file is # Copyright (c) 2010-2011, Diaspora Inc. This file is
# licensed under the Affero General Public License version 3 or later. See # licensed under the Affero General Public License version 3 or later. See
# the COPYRIGHT file. # the COPYRIGHT file.
#
class Notification < ActiveRecord::Base class Notification < ActiveRecord::Base
require File.join(Rails.root, 'lib/diaspora/web_socket') require File.join(Rails.root, 'lib/diaspora/web_socket')
include Diaspora::Socketable include Diaspora::Socketable
@ -16,8 +16,6 @@ class Notification < ActiveRecord::Base
end end
def self.notify(recipient, target, actor) def self.notify(recipient, target, actor)
return false if recipient.person == actor #never notify someone if they are the actor, derp
if target.respond_to? :notification_type if target.respond_to? :notification_type
if note_type = target.notification_type(recipient, actor) if note_type = target.notification_type(recipient, actor)
if(target.is_a? Comment) || (target.is_a? Like) if(target.is_a? Comment) || (target.is_a? Like)

View file

@ -30,7 +30,6 @@ class Person < ActiveRecord::Base
has_many :posts, :foreign_key => :author_id, :dependent => :destroy # This person's own posts has_many :posts, :foreign_key => :author_id, :dependent => :destroy # This person's own posts
has_many :photos, :foreign_key => :author_id, :dependent => :destroy # This person's own photos has_many :photos, :foreign_key => :author_id, :dependent => :destroy # This person's own photos
has_many :comments, :foreign_key => :author_id, :dependent => :destroy # This person's own comments has_many :comments, :foreign_key => :author_id, :dependent => :destroy # This person's own comments
has_many :likes, :foreign_key => :author_id, :dependent => :destroy # This person's own likes
belongs_to :owner, :class_name => 'User' belongs_to :owner, :class_name => 'User'

View file

@ -46,14 +46,6 @@ module Diaspora
end end
end end
def particpants
self.parent.participants
end
def participant_users
self.parent.participant_users
end
def receive(user, person=nil) def receive(user, person=nil)
comment_or_like = self.class.where(:guid => self.guid).first || self comment_or_like = self.class.where(:guid => self.guid).first || self

View file

@ -107,28 +107,6 @@ module Diaspora
end end
end end
# @return [Array<Person>] The list of participants to this shareable
def participants
@participants ||= lambda do
share_type = self.class.base_class.to_s
people = []
if self.respond_to? :comments
people += Person.joins(:comments).where(:comments => {:commentable_id => self.id, :commentable_type => share_type}).all
end
if self.respond_to? :likes
people += Person.joins(:likes).where(:likes => {:target_id => self.id, :target_type => share_type}).all
end
people
end.call
end
def participant_users
@participant_users ||= lambda do
user_ids = participants.map{|x| x.owner_id}.compact
User.where(:id => user_ids)
end.call
end
protected protected

View file

@ -139,7 +139,15 @@ class Postzord::Dispatcher
# @param services [Array<User>] # @param services [Array<User>]
def notify_users(users) def notify_users(users)
return unless users.present? && @object.respond_to?(:persisted?) return unless users.present? && @object.respond_to?(:persisted?)
Resque.enqueue(Jobs::NotifyLocalUsers, users.map{|u| u.id}, @object.class.to_s, @object.id, @object.author.id)
#temp hax
unless object_is_related_to_diaspora_hq?
Resque.enqueue(Jobs::NotifyLocalUsers, users.map{|u| u.id}, @object.class.to_s, @object.id, @object.author.id)
end
end
def object_is_related_to_diaspora_hq?
(@object.author.diaspora_handle == 'diasporahq@joindiaspora.com' || (@object.respond_to?(:relayable?) && @object.parent.author.diaspora_handle == 'diasporahq@joindiaspora.com'))
end end
# @param services [Array<User>] # @param services [Array<User>]

View file

@ -9,7 +9,6 @@ class Postzord::Receiver::LocalBatch < Postzord::Receiver
def initialize(object, recipient_user_ids) def initialize(object, recipient_user_ids)
@object = object @object = object
@recipient_user_ids = recipient_user_ids @recipient_user_ids = recipient_user_ids
#this is a nightmare
@users = User.where(:id => @recipient_user_ids) @users = User.where(:id => @recipient_user_ids)
end end

View file

@ -117,4 +117,5 @@ class Stream::Multi < Stream::Base
def ids(query) def ids(query)
Post.connection.select_values(query.for_a_stream(max_time, order).select('posts.id').to_sql) Post.connection.select_values(query.for_a_stream(max_time, order).select('posts.id').to_sql)
end end
end end

View file

@ -36,12 +36,6 @@ describe Comment do
@comment.notification_type(alice, alice.person).should == Notifications::AlsoCommented @comment.notification_type(alice, alice.person).should == Notifications::AlsoCommented
end end
end end
it 'should not return if you are author of the object being commented on' do
p = Factory(:status_message, :author => bob.person)
c = bob.comment("dfs", :post => p)
c.notification_type(bob, bob.person).should be_false
end
end end
describe 'User#comment' do describe 'User#comment' do

View file

@ -11,7 +11,7 @@ describe Jobs::NotifyLocalUsers do
post = Factory :status_message post = Factory :status_message
StatusMessage.should_receive(:find_by_id).with(post.id).and_return(post) StatusMessage.should_receive(:find_by_id).with(post.id).and_return(post)
post.should_receive(:participant_users).and_return([alice, eve]) #User.should_receive(:where).and_return([alice, eve])
Notification.should_receive(:notify).with(instance_of(User), instance_of(StatusMessage), instance_of(Person)).twice Notification.should_receive(:notify).with(instance_of(User), instance_of(StatusMessage), instance_of(Person)).twice
Jobs::NotifyLocalUsers.perform([alice.id, eve.id], post.class.to_s, post.id, person.id) Jobs::NotifyLocalUsers.perform([alice.id, eve.id], post.class.to_s, post.id, person.id)

View file

@ -195,17 +195,6 @@ describe Post do
end end
end end
describe '#participants' do
it 'only returns the people that commented and liked the post' do
status = Factory(:status_message, :author => bob.person, :public => true)
alice.comment('too', :post => status)
eve.like(true, :target => status)
status.participants.map(&:id).should =~ [alice, eve].map{|x| x.person.id}
end
end
describe '#comments' do describe '#comments' do
it 'returns the comments of a post in created_at order' do it 'returns the comments of a post in created_at order' do
post = bob.post :status_message, :text => "hello", :to => 'all' post = bob.post :status_message, :text => "hello", :to => 'all'