diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 89c637b13..c3b74a861 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -20,7 +20,7 @@ class ApplicationController < ActionController::Base @groups = current_user.groups @friends = current_user.friends @latest_status_message = StatusMessage.newest_for(current_user.person) - @group = params[:group] ? current_user.groups.first(:id => params[:group]) : current_user.groups.first + @group = params[:group] ? current_user.group_by_id(params[:group]) : current_user.groups.first end end diff --git a/app/controllers/dev_utilities_controller.rb b/app/controllers/dev_utilities_controller.rb index 0295e4114..a9711164e 100644 --- a/app/controllers/dev_utilities_controller.rb +++ b/app/controllers/dev_utilities_controller.rb @@ -39,7 +39,7 @@ def warzombie def zombiefriendaccept render :nothing => true Request.all.each{|r| - current_user.accept_friend_request(r.id, current_user.groups.first.id) + current_user.accept_and_respond(r.id, current_user.groups.first.id) } end diff --git a/app/controllers/people_controller.rb b/app/controllers/people_controller.rb index 686a81b88..16cb235b8 100644 --- a/app/controllers/people_controller.rb +++ b/app/controllers/people_controller.rb @@ -15,7 +15,7 @@ class PeopleController < ApplicationController end def destroy - current_user.unfriend(current_user.friends.first(params[:id])) + current_user.unfriend(current_user.friend_by_id(params[:id])) flash[:notice] = "unfriended person." redirect_to people_url end diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index 5865aacaf..4945436c3 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -8,7 +8,7 @@ class RequestsController < ApplicationController def destroy if params[:accept] - @friend = current_user.accept_friend_request( params[:id], current_user.groups.first.id) + @friend = current_user.accept_and_respond( params[:id], current_user.groups.first.id) flash[:notice] = "you are now friends" redirect_to root_url diff --git a/app/helpers/comments_helper.rb b/app/helpers/comments_helper.rb index a94d176ad..b1e4df9cd 100644 --- a/app/helpers/comments_helper.rb +++ b/app/helpers/comments_helper.rb @@ -1,9 +1,3 @@ module CommentsHelper - def target - - end - - def text - params[:comment][:text] - end + end diff --git a/app/helpers/requests_helper.rb b/app/helpers/requests_helper.rb index 478d9853b..16a50a886 100644 --- a/app/helpers/requests_helper.rb +++ b/app/helpers/requests_helper.rb @@ -29,7 +29,7 @@ module RequestsHelper puts request.host if identifier.include?(request.host) person = Person.by_webfinger identifier - action = :friend + action = (person == current_user.person ? :none : :friend) url = person.owner.receive_url else f = Redfinger.finger(identifier) diff --git a/app/models/comment.rb b/app/models/comment.rb index 0323b0d6a..3b574f28f 100644 --- a/app/models/comment.rb +++ b/app/models/comment.rb @@ -22,10 +22,12 @@ class Comment validates_presence_of :text def push_upstream + Rails.logger.info("GOIN UPSTREAM") push_to([post.person]) end def push_downstream + Rails.logger.info("SWIMMIN DOWNSTREAM") push_to(post.people_with_permissions) end diff --git a/app/models/person.rb b/app/models/person.rb index 50a3cc410..7e0c2d3bb 100644 --- a/app/models/person.rb +++ b/app/models/person.rb @@ -66,7 +66,7 @@ class Person raise "must comment on something!" unless options[:on] c = Comment.new(:person_id => self.id, :text => text, :post => options[:on]) if c.save - send_comment c + dispatch_comment c c.socket_to_uid owner.id if owner_id true else @@ -75,24 +75,12 @@ class Person false end - def send_comment( c ) - if self.owner.nil? - if c.post.person.owner.nil? - #puts "The commenter is not here, and neither is the poster" - elsif c.post.person.owner - #puts "The commenter is not here, and the poster is" - c.push_downstream - end - else - if owns? c.post - #puts "The commenter is here, and is the poster" - c.push_downstream - else - #puts "The commenter is here, and is not the poster" - c.push_upstream - end - end - + def dispatch_comment( c ) + if owns? c.post + push_downstream + elsif owns? c + c.push_upstream + end end ##profile def update_profile(params) @@ -115,6 +103,10 @@ class Person def self.by_webfinger( identifier ) Person.first(:email => identifier.gsub('acct:', '')) end + + def remote? + owner.nil? + end protected def clean_url diff --git a/app/models/user.rb b/app/models/user.rb index b086535b2..d20c48bdb 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -63,10 +63,16 @@ class User activate_friend(request.person, group_by_id(group_id)) request.reverse self - + request + end + + def dispatch_friend_acceptance(request) request.push_to_url(request.callback_url) - - request.destroy + request.destroy unless request.callback_url.include? url + end + + def accept_and_respond(friend_request_id, group_id) + dispatch_friend_acceptance(accept_friend_request(friend_request_id, group_id)) end def ignore_friend_request(friend_request_id) @@ -167,7 +173,8 @@ class User elsif object.verify_creator_signature == true Rails.logger.debug("Saving object: #{object}") object.save - object.socket_to_uid( id) if object.respond_to? :socket_to_uid + object.socket_to_uid( id) if (object.respond_to?(:socket_to_uid) && !self.owns?(object)) + object.person.dispatch_comment object if object.is_a?(Comment) end end diff --git a/db/seeds/tom.rb b/db/seeds/tom.rb index 6f3e84582..d3aa7289b 100644 --- a/db/seeds/tom.rb +++ b/db/seeds/tom.rb @@ -22,4 +22,5 @@ user2.person.save # friending users group = user.group(:name => "other dudes") request = user.send_friend_request_to(user2.receive_url, group.id) -user2.accept_friend_request request.id, user2.group(:name => "presidents").id +reversed_request = user2.accept_friend_request( request.id, user2.group(:name => "presidents").id ) +user.receive reversed_request.to_diaspora_xml