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:
authorGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 21:25:58 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2021-06-16 21:25:58 +0300
commita5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch)
treefb69158581673816a8cd895f9d352dcb3c678b1e /lib/gitlab/email
parentd16b2e8639e99961de6ddc93909f3bb5c1445ba1 (diff)
Add latest changes from gitlab-org/gitlab@14-0-stable-eev14.0.0-rc42
Diffstat (limited to 'lib/gitlab/email')
-rw-r--r--lib/gitlab/email/handler/reply_processing.rb2
-rw-r--r--lib/gitlab/email/handler/service_desk_handler.rb7
-rw-r--r--lib/gitlab/email/message/in_product_marketing.rb4
-rw-r--r--lib/gitlab/email/message/in_product_marketing/base.rb13
-rw-r--r--lib/gitlab/email/message/in_product_marketing/experience.rb80
-rw-r--r--lib/gitlab/email/receiver.rb2
6 files changed, 94 insertions, 14 deletions
diff --git a/lib/gitlab/email/handler/reply_processing.rb b/lib/gitlab/email/handler/reply_processing.rb
index 63334169c8e..fd3143488b1 100644
--- a/lib/gitlab/email/handler/reply_processing.rb
+++ b/lib/gitlab/email/handler/reply_processing.rb
@@ -84,6 +84,8 @@ module Gitlab
end
def valid_project_slug?(found_project)
+ return false unless found_project
+
project_slug == found_project.full_path_slug
end
diff --git a/lib/gitlab/email/handler/service_desk_handler.rb b/lib/gitlab/email/handler/service_desk_handler.rb
index cab3538a447..05daa08530e 100644
--- a/lib/gitlab/email/handler/service_desk_handler.rb
+++ b/lib/gitlab/email/handler/service_desk_handler.rb
@@ -65,10 +65,9 @@ module Gitlab
def project_from_key
return unless match = service_desk_key.match(PROJECT_KEY_PATTERN)
- project = Project.find_by_service_desk_project_key(match[:key])
- return unless valid_project_key?(project, match[:slug])
-
- project
+ Project.with_service_desk_key(match[:key]).find do |project|
+ valid_project_key?(project, match[:slug])
+ end
end
def valid_project_key?(project, slug)
diff --git a/lib/gitlab/email/message/in_product_marketing.rb b/lib/gitlab/email/message/in_product_marketing.rb
index d538238f26f..fb4315e74b2 100644
--- a/lib/gitlab/email/message/in_product_marketing.rb
+++ b/lib/gitlab/email/message/in_product_marketing.rb
@@ -6,10 +6,8 @@ module Gitlab
module InProductMarketing
UnknownTrackError = Class.new(StandardError)
- TRACKS = [:create, :verify, :team, :trial].freeze
-
def self.for(track)
- raise UnknownTrackError unless TRACKS.include?(track)
+ raise UnknownTrackError unless Namespaces::InProductMarketingEmailsService::TRACKS.key?(track)
"Gitlab::Email::Message::InProductMarketing::#{track.to_s.classify}".constantize
end
diff --git a/lib/gitlab/email/message/in_product_marketing/base.rb b/lib/gitlab/email/message/in_product_marketing/base.rb
index 6341a7c7596..89acc058a46 100644
--- a/lib/gitlab/email/message/in_product_marketing/base.rb
+++ b/lib/gitlab/email/message/in_product_marketing/base.rb
@@ -10,10 +10,11 @@ module Gitlab
attr_accessor :format
- def initialize(group:, series:, format: :html)
+ def initialize(group:, user:, series:, format: :html)
raise ArgumentError, "Only #{total_series} series available for this track." unless series.between?(0, total_series - 1)
@group = group
+ @user = user
@series = series
@format = format
end
@@ -103,11 +104,7 @@ module Gitlab
protected
- attr_reader :group, :series
-
- def total_series
- 3
- end
+ attr_reader :group, :user, :series
private
@@ -115,6 +112,10 @@ module Gitlab
self.class.name.demodulize.downcase.to_sym
end
+ def total_series
+ Namespaces::InProductMarketingEmailsService::TRACKS[track][:interval_days].size
+ end
+
def unsubscribe_com
[
s_('InProductMarketing|If you no longer wish to receive marketing emails from us,'),
diff --git a/lib/gitlab/email/message/in_product_marketing/experience.rb b/lib/gitlab/email/message/in_product_marketing/experience.rb
new file mode 100644
index 00000000000..4156a737517
--- /dev/null
+++ b/lib/gitlab/email/message/in_product_marketing/experience.rb
@@ -0,0 +1,80 @@
+# frozen_string_literal: true
+
+module Gitlab
+ module Email
+ module Message
+ module InProductMarketing
+ class Experience < Base
+ include Gitlab::Utils::StrongMemoize
+
+ EASE_SCORE_SURVEY_ID = 1
+
+ def subject_line
+ s_('InProductMarketing|Do you have a minute?')
+ end
+
+ def tagline
+ end
+
+ def title
+ s_('InProductMarketing|We want your GitLab experience to be great')
+ end
+
+ def subtitle
+ s_('InProductMarketing|Take this 1-question survey!')
+ end
+
+ def body_line1
+ s_('InProductMarketing|%{strong_start}Overall, how difficult or easy was it to get started with GitLab?%{strong_end}').html_safe % strong_options
+ end
+
+ def body_line2
+ s_('InProductMarketing|Click on the number below that corresponds with your answer — 1 being very difficult, 5 being very easy.')
+ end
+
+ def cta_text
+ end
+
+ def feedback_link(rating)
+ params = {
+ onboarding_progress: onboarding_progress,
+ response: rating,
+ show_invite_link: show_invite_link,
+ survey_id: EASE_SCORE_SURVEY_ID
+ }
+
+ "#{Gitlab::Saas.com_url}/-/survey_responses?#{params.to_query}"
+ end
+
+ def feedback_ratings(rating)
+ [
+ s_('InProductMarketing|Very difficult'),
+ s_('InProductMarketing|Difficult'),
+ s_('InProductMarketing|Neutral'),
+ s_('InProductMarketing|Easy'),
+ s_('InProductMarketing|Very easy')
+ ][rating - 1]
+ end
+
+ def feedback_thanks
+ s_('InProductMarketing|Feedback from users like you really improves our product. Thanks for your help!')
+ end
+
+ private
+
+ def onboarding_progress
+ strong_memoize(:onboarding_progress) do
+ group.onboarding_progress.number_of_completed_actions
+ end
+ end
+
+ def show_invite_link
+ strong_memoize(:show_invite_link) do
+ group.member_count > 1 && group.max_member_access_for_user(user) >= GroupMember::DEVELOPER && user.preferred_language == 'en'
+ end
+ end
+ end
+ end
+ end
+ end
+end
diff --git a/lib/gitlab/email/receiver.rb b/lib/gitlab/email/receiver.rb
index 71db8ab6067..8139a294269 100644
--- a/lib/gitlab/email/receiver.rb
+++ b/lib/gitlab/email/receiver.rb
@@ -20,7 +20,7 @@ module Gitlab
raise UnknownIncomingEmail unless handler
handler.execute.tap do
- Gitlab::Metrics.add_event(handler.metrics_event, handler.metrics_params)
+ Gitlab::Metrics::BackgroundTransaction.current&.add_event(handler.metrics_event, handler.metrics_params)
end
end