8b73df0cf5
If the project is in a group, the `group.refresh_members_authorized_projects` is made non-blocking, and we call `current_user.refresh_authorized_projects` directly. Projects in a personal namespace are more difficult. Rather than passing the `blocking:` parameter through the entire `add_master` chain, have the `AuthorizedProjectsWorker` automatically inline authorizations for three IDs or less. Since the maximum number of IDs in this path is 2, that has the same effect.
15 lines
352 B
Ruby
15 lines
352 B
Ruby
class UserProjectAccessChangedService
|
|
def initialize(user_ids)
|
|
@user_ids = Array.wrap(user_ids)
|
|
end
|
|
|
|
def execute(blocking: true)
|
|
bulk_args = @user_ids.map { |id| [id] }
|
|
|
|
if blocking
|
|
AuthorizedProjectsWorker.bulk_perform_and_wait(bulk_args)
|
|
else
|
|
AuthorizedProjectsWorker.bulk_perform_async(bulk_args)
|
|
end
|
|
end
|
|
end
|