OSDN Git Service

Merge pull request #5849 from bke-drewb/feature/hide_no_ssh_key_message
[wvm/gitlab.git] / lib / event_filter.rb
1 class EventFilter
2   attr_accessor :params
3
4   class << self
5     def default_filter
6       %w{ push issues merge_requests team}
7     end
8
9     def push
10       'push'
11     end
12
13     def merged
14       'merged'
15     end
16
17     def comments
18       'comments'
19     end
20
21     def team
22       'team'
23     end
24   end
25
26   def initialize params
27     @params = if params
28                 params.dup
29               else
30                 []#EventFilter.default_filter
31               end
32   end
33
34   def apply_filter events
35     return events unless params.present?
36
37     filter = params.dup
38
39     actions = []
40     actions << Event::PUSHED if filter.include? 'push'
41     actions << Event::MERGED if filter.include? 'merged'
42
43     if filter.include? 'team'
44       actions << Event::JOINED
45       actions << Event::LEFT
46     end
47
48     actions << Event::COMMENTED if filter.include? 'comments'
49
50     events = events.where(action: actions)
51   end
52
53   def options key
54     filter = params.dup
55
56     if filter.include? key
57       filter.delete key
58     else
59       filter << key
60     end
61
62     filter
63   end
64
65   def active? key
66     params.include? key
67   end
68 end