To accept the friend request
# File app/controllers/users/favorites_controller.rb, line 42 def accept @friend = ActsAsFriendable::Friendship.find(params[:user_id]) @friend.update(approved: true) FriendMailer.delay(queue: :mailer).friendship_request_status_email(@friend) respond_to do |format| format.js {render 'accept'} end end
List all the friends.
# File app/controllers/users/favorites_controller.rb, line 26 def index add_breadcrumb 'Favorites' @favorites = current_user.friends.includes(:profile_image) if params[:query].present? @favorites = @favorites.where("LOWER(name) Like :query OR LOWER(email) LIKE :query", query: "%#{params[:query]}%").where.not(email: current_user.email) end @favorites = @favorites.page(params[:page]).per(20) respond_to do |format| format.html format.json do render json: @favorites.as_json(only: [:id, :email], methods: [:name_with_email]) end end end
To mark as friend.
# File app/controllers/users/favorites_controller.rb, line 8 def mark current_user.mark_favorite(@user) pusher_data = {user: {id: @user.id, full_name: @user.full_name, type: @user.type, image: self.class.helpers.image_path(@user.image_url(:thumb)), common_group_ids: current_user.groups.where(id: @user.groups).pluck(:id)}} if @user.tutor? pusher_data[:user].merge!(in_person_session_url: new_tutor_tutoring_session_path(@user)) if @user.available_for_in_person? pusher_data[:user].merge!(video_session_url: new_video_session_path(session: {tutor_id: @user.id})) if @user.available_for_video? end pusher_data[:user].merge!(unfriend_url: unmark_user_favorites_path(@user.id)) if current_user.is_favorite_users?(@user) pusher_data[:user].merge!(friend_url: mark_user_favorites_path(@user.id)) if !current_user.is_favorite_users?(@user) end
To reject the friend request
# File app/controllers/users/favorites_controller.rb, line 52 def reject @friend = ActsAsFriendable::Friendship.find(params[:user_id]) @friend.update(approved: false) ActsAsTenant.current_tenant.pusher_configuration.client.trigger_async("private-user-#{@friend.user_id}", 'friendship-rejected', {id: @friend.friend_id, common_group_ids: current_user.groups.where(id: @friend.friend.groups).pluck(:id)}) current_user.unmark_favorite(@friend.user) FriendMailer.delay(queue: :mailer).friendship_request_status_email(@friend) respond_to do |format| format.js {render 'reject'} end end
To unfriend the friend.
# File app/controllers/users/favorites_controller.rb, line 20 def unmark current_user.unmark_favorite(@user) ActsAsTenant.current_tenant.pusher_configuration.client.trigger_async("private-user-#{current_user.id}", 'remove-from-favorite', {id: @user.id, name: @user.name, type: @user.type, image: self.class.helpers.image_path(@user.image_url(:thumb)), common_group_ids: current_user.groups.where(id: @user.groups).pluck(:id)}) end