Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app/services/projects/record_target_platforms_service.rb')
-rw-r--r--app/services/projects/record_target_platforms_service.rb34
1 files changed, 29 insertions, 5 deletions
diff --git a/app/services/projects/record_target_platforms_service.rb b/app/services/projects/record_target_platforms_service.rb
index 224e16f53b3..664e72e9785 100644
--- a/app/services/projects/record_target_platforms_service.rb
+++ b/app/services/projects/record_target_platforms_service.rb
@@ -4,26 +4,50 @@ module Projects
class RecordTargetPlatformsService < BaseService
include Gitlab::Utils::StrongMemoize
+ def initialize(project, detector_service)
+ @project = project
+ @detector_service = detector_service
+ end
+
def execute
record_target_platforms
end
private
+ attr_reader :project, :detector_service
+
def target_platforms
strong_memoize(:target_platforms) do
- AppleTargetPlatformDetectorService.new(project).execute
+ Array(detector_service.new(project).execute)
end
end
def record_target_platforms
return unless target_platforms.present?
- setting = ::ProjectSetting.find_or_initialize_by(project: project) # rubocop:disable CodeReuse/ActiveRecord
- setting.target_platforms = target_platforms
- setting.save
+ project_setting.target_platforms = target_platforms
+ project_setting.save
+
+ send_build_ios_app_guide_email
+
+ project_setting.target_platforms
+ end
+
+ def project_setting
+ @project_setting ||= ::ProjectSetting.find_or_initialize_by(project: project) # rubocop:disable CodeReuse/ActiveRecord
+ end
+
+ def experiment_candidate?
+ experiment(:build_ios_app_guide_email, project: project).run
+ end
+
+ def send_build_ios_app_guide_email
+ return unless target_platforms.include? :ios
+ return unless experiment_candidate?
- setting.target_platforms
+ campaign = Users::InProductMarketingEmail::BUILD_IOS_APP_GUIDE
+ Projects::InProductMarketingCampaignEmailsService.new(project, campaign).execute
end
end
end