diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2021-06-16 21:25:58 +0300 |
commit | a5f4bba440d7f9ea47046a0a561d49adf0a1e6d4 (patch) | |
tree | fb69158581673816a8cd895f9d352dcb3c678b1e /lib/gitlab/email | |
parent | d16b2e8639e99961de6ddc93909f3bb5c1445ba1 (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.rb | 2 | ||||
-rw-r--r-- | lib/gitlab/email/handler/service_desk_handler.rb | 7 | ||||
-rw-r--r-- | lib/gitlab/email/message/in_product_marketing.rb | 4 | ||||
-rw-r--r-- | lib/gitlab/email/message/in_product_marketing/base.rb | 13 | ||||
-rw-r--r-- | lib/gitlab/email/message/in_product_marketing/experience.rb | 80 | ||||
-rw-r--r-- | lib/gitlab/email/receiver.rb | 2 |
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 |