diff options
Diffstat (limited to 'app')
-rw-r--r-- | app/controllers/projects_controller.rb | 2 | ||||
-rw-r--r-- | app/models/concerns/mentionable.rb | 9 | ||||
-rw-r--r-- | app/services/projects/participants_service.rb | 11 |
3 files changed, 15 insertions, 7 deletions
diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index ebe48265c63..462ab3d4749 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -102,7 +102,7 @@ class ProjectsController < ApplicationController note_type = params['type'] note_id = params['type_id'] autocomplete = ::Projects::AutocompleteService.new(@project) - participants = ::Projects::ParticipantsService.new(@project).execute(note_type, note_id) + participants = ::Projects::ParticipantsService.new(@project, current_user).execute(note_type, note_id) @suggestions = { emojis: autocomplete_emojis, diff --git a/app/models/concerns/mentionable.rb b/app/models/concerns/mentionable.rb index 66f83b932d4..d640728519a 100644 --- a/app/models/concerns/mentionable.rb +++ b/app/models/concerns/mentionable.rb @@ -51,9 +51,12 @@ module Mentionable identifier = match.delete "@" if identifier == "all" users.push(*project.team.members.flatten) - else - id = User.find_by(username: identifier).try(:id) - users << User.find(id) unless id.blank? + elsif namespace = Namespace.find_by(path: identifier) + if namespace.type == "Group" + users.push(*namespace.users) + else + users << namespace.owner + end end end users.uniq diff --git a/app/services/projects/participants_service.rb b/app/services/projects/participants_service.rb index e3b33de8d02..0be50fed7cc 100644 --- a/app/services/projects/participants_service.rb +++ b/app/services/projects/participants_service.rb @@ -1,7 +1,8 @@ module Projects class ParticipantsService < BaseService - def initialize(project) - @project = project + def initialize(project, user) + @project = project + @user = user end def execute(note_type, note_id) @@ -12,7 +13,7 @@ module Projects [] end team_members = sorted(@project.team.members) - participants = all_members + team_members + participating + participants = all_members + groups + team_members + participating participants.uniq end @@ -37,6 +38,10 @@ module Projects users.uniq.to_a.compact.sort_by(&:username).map { |user| { username: user.username, name: user.name } } end + def groups + @user.authorized_groups.sort_by(&:path).map { |group| { username: group.path, name: group.name } } + end + def all_members [{ username: "all", name: "Project and Group Members" }] end |