diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index 77f433121..c639de66c 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -38,18 +38,23 @@ class RequestsController < ApplicationController redirect_to current_user.group_by_id(params[:request][:group_id]) return end + Rails.logger.debug("Sending request: #{rel_hash}") - @request = current_user.send_request(rel_hash, params[:request][:group_id]) + + begin + @request = current_user.send_request(rel_hash, params[:request][:group_id]) + rescue Exception => e + raise e unless e.message.include? "already friends" + flash[:notice] = "You are already friends with #{params[:request][:destination_url]}!" + redirect_to current_user.group_by_id(params[:request][:group_id]) + return + end if @request flash[:notice] = "a friend request was sent to #{@request.destination_url}" - redirect_to requests_url + redirect_to current_user.group_by_id(params[:request][:group_id]) else - if url.include? '@' - flash[:error] = "no diaspora seed found with this email!" - else - flash[:error] = "you have already friended this person" - end + flash[:error] = "Something went horribly wrong..." redirect_to current_user.group_by_id(params[:request][:group_id]) end end diff --git a/app/models/user.rb b/app/models/user.rb index 3ed7d5d67..6ecf2cf0c 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -124,22 +124,22 @@ class User ######### Friend Requesting ########### def send_friend_request_to(friend_url, group_id) - unless self.friends.detect{ |x| x.receive_url == friend_url} - request = Request.instantiate(:to => friend_url, :from => self.person, :into => group_id) - if request.save - self.pending_requests << request - self.save + raise "You are already friends with that person!" if self.friends.detect{ |x| x.receive_url == friend_url} + request = Request.instantiate(:to => friend_url, :from => self.person, :into => group_id) + if request.save + self.pending_requests << request + self.save - group = self.group_by_id(group_id) + group = self.group_by_id(group_id) - group.requests << request - group.save - - request.push_to_url friend_url - end - request + group.requests << request + group.save + + request.push_to_url friend_url end - end + request + end + def accept_friend_request(friend_request_id, group_id) request = Request.find_by_id(friend_request_id)