rescuing 500 on friending someone that was already friends

This commit is contained in:
Raphael 2010-08-23 17:05:24 -07:00
parent ed99532a83
commit e05956bddd
2 changed files with 24 additions and 20 deletions

View file

@ -38,18 +38,22 @@ 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])
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

View file

@ -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)