diff --git a/lib/assigner.rb b/lib/assigner.rb index cbbb977..8e37978 100644 --- a/lib/assigner.rb +++ b/lib/assigner.rb @@ -461,10 +461,13 @@ class ::Assigner def invite_group(group) return if topic.topic_allowed_groups.exists?(group_id: group.id) - return if topic.all_allowed_users - .joins("RIGHT JOIN group_users ON group_users.user_id = users.id") - .where("group_users.group_id = ? AND users.id IS NULL", group.id) - .empty? # all group members can already see the topic + if topic + .all_allowed_users + .joins("RIGHT JOIN group_users ON group_users.user_id = users.id") + .where("group_users.group_id = ? AND users.id IS NULL", group.id) + .empty? + return # all group members can already see the topic + end guardian.ensure_can_invite_group_to_private_message!(group, topic) topic.invite_group(@assigned_by, group) diff --git a/spec/lib/assigner_spec.rb b/spec/lib/assigner_spec.rb index 965de7e..534ca1f 100644 --- a/spec/lib/assigner_spec.rb +++ b/spec/lib/assigner_spec.rb @@ -747,13 +747,14 @@ RSpec.describe Assigner do it "doesn't invite group if all members have access to the PM already" do user1, user2, user3 = 3.times.collect { Fabricate(:user) } - group1, group2, group3 = 3.times.collect do - Fabricate( - :group, - assignable_level: Group::ALIAS_LEVELS[:only_admins], - messageable_level: Group::ALIAS_LEVELS[:only_admins], - ) - end + group1, group2, group3 = + 3.times.collect do + Fabricate( + :group, + assignable_level: Group::ALIAS_LEVELS[:only_admins], + messageable_level: Group::ALIAS_LEVELS[:only_admins], + ) + end group1.add(user1) group1.add(user3) group2.add(user2)