Skip to content

Commit 88ca94a

Browse files
committed
Fix bug: Leaving / Joining Teams
1 parent 317e1f6 commit 88ca94a

File tree

3 files changed

+13
-28
lines changed

3 files changed

+13
-28
lines changed

app/controllers/members_controller.rb

Lines changed: 9 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
class MembersController < ApplicationController
2+
before_action :set_team
23

34
def destroy
4-
@user = User.find(params[:id])
5-
return head(:forbidden) unless signed_in? && (team.admin?(current_user) || current_user == @user)
6-
team.remove_member(@user)
7-
record_event("removed team") if !Team.where(id: team.id.to_s).exists?
5+
self_removal = current_user.id == params[:id]
6+
return head(:forbidden) unless signed_in? && (team.admin?(current_user) || self_removal)
7+
team.members.find_by_user_id!(params[:id]).destroy
88

9-
if @user == current_user
10-
flash[:notice] = "Ok, we've removed you from #{team.name}."
9+
if self_removal
10+
flash[:notice] = "Ok, You have left : #{team.name}."
1111
record_event("removed themselves from team")
12-
return redirect_to(teams_url)
12+
redirect_to(teams_url)
1313
else
1414
record_event("removed user from team")
1515
respond_to do |format|
@@ -21,14 +21,7 @@ def destroy
2121

2222
private
2323

24-
def team
25-
@team ||= Team.find(params[:team_id])
26-
end
27-
28-
def is_email_address?(value)
29-
m = Mail::Address.new(value)
30-
r = m.domain && m.address == value
31-
t = m.__send__(:tree)
32-
r &&= (t.domain.dot_atom_text.elements.size > 1)
24+
def set_team
25+
@team = Team.find(params[:team_id])
3326
end
3427
end

app/controllers/teams_controller.rb

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,7 @@ def accept
176176

177177
@team = Team.find(accept_params[:id])
178178
if accept_params[:r] && @team.has_user_with_referral_token?(accept_params[:r])
179-
@team.add_member(current_user)
179+
@team.add_member(current_user, 'active')
180180
current_user.update_attribute(:referred_by, accept_params[:r]) if current_user.referred_by.nil?
181181
flash[:notice] = "Welcome to team #{@team.name}"
182182
record_event("accepted team invite")
@@ -284,7 +284,6 @@ def page_based_on_rank(rank)
284284
end
285285

286286
def job_public_ids
287-
Opportunity
288287
Rails.cache.fetch('all-jobs-public-ids', :expires_in => 1.hour) { Opportunity.group('team_id, created_at, public_id').pluck(:public_id) }
289288
end
290289

app/models/team.rb

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -471,22 +471,15 @@ def sorted_members
471471
@sorted_members = members.order('score_cache DESC')
472472
end
473473

474-
def add_member(user)
475-
Rails.logger.warn("Called #{self.class.name}#add_member(#{user.inspect}")
476-
477-
member = members.select { |m| m.user_id == user.id }.first
478-
return member if member
479-
474+
def add_member(user, state='pending')
480475
member = members.create(user_id: user.id)
481-
save!
476+
member.update_attribute(:state, state)
482477
member
483478
end
484479
alias_method :add_user, :add_member
485480

486481
def remove_member(user)
487-
return nil unless member = members.select { |m| m.user_id == user.id }
488-
members.destroy(member)
489-
save!
482+
members.destroy_all(user_id: user.id)
490483
end
491484

492485
attr_accessor :skip_validations

0 commit comments

Comments
 (0)