From e05956bdddd2c0e3e7691165d8485d20e1a6322d Mon Sep 17 00:00:00 2001 From: Raphael Date: Mon, 23 Aug 2010 17:05:24 -0700 Subject: [PATCH] rescuing 500 on friending someone that was already friends --- app/controllers/requests_controller.rb | 18 +++++++++++------- app/models/user.rb | 26 +++++++++++++------------- 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/app/controllers/requests_controller.rb b/app/controllers/requests_controller.rb index 77f433121..76148e148 100644 --- a/app/controllers/requests_controller.rb +++ b/app/controllers/requests_controller.rb @@ -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 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)