summaryrefslogtreecommitdiff
path: root/lib/sidebars/your_work/menus/merge_requests_menu.rb
blob: 09c846662584cbbc73b779313851a98e7fd41414 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
# frozen_string_literal: true

module Sidebars
  module YourWork
    module Menus
      class MergeRequestsMenu < ::Sidebars::Menu
        include IssuablesHelper
        include MergeRequestsHelper

        override :link
        def link
          merge_requests_dashboard_path(assignee_username: @context.current_user.username)
        end

        override :title
        def title
          _('Merge requests')
        end

        override :sprite_icon
        def sprite_icon
          'merge-request'
        end

        override :configure_menu_items
        def configure_menu_items
          add_item(assigned_mrs_menu_item)
          add_item(reviewer_mrs_menu_item)

          true
        end

        override :render?
        def render?
          !!context.current_user
        end

        override :active_routes
        def active_routes
          { path: 'dashboard#merge_requests' }
        end

        override :has_pill?
        def has_pill?
          pill_count > 0
        end

        override :pill_count
        def pill_count
          user_merge_requests_counts[:total]
        end

        private

        def assigned_mrs_menu_item
          link = merge_requests_dashboard_path(assignee_username: context.current_user.username)

          ::Sidebars::MenuItem.new(
            title: _('Assigned'),
            link: link,
            active_routes: { page: link },
            has_pill: true,
            pill_count: user_merge_requests_counts[:assigned],
            item_id: :merge_requests_assigned
          )
        end

        def reviewer_mrs_menu_item
          link = merge_requests_dashboard_path(reviewer_username: context.current_user.username)

          ::Sidebars::MenuItem.new(
            title: _('Review requests'),
            link: link,
            active_routes: { page: link },
            has_pill: true,
            pill_count: user_merge_requests_counts[:review_requested],
            item_id: :merge_requests_to_review
          )
        end
      end
    end
  end
end