summaryrefslogtreecommitdiff
path: root/app/models/concerns/merge_request_reviewer_state.rb
diff options
context:
space:
mode:
Diffstat (limited to 'app/models/concerns/merge_request_reviewer_state.rb')
-rw-r--r--app/models/concerns/merge_request_reviewer_state.rb25
1 files changed, 25 insertions, 0 deletions
diff --git a/app/models/concerns/merge_request_reviewer_state.rb b/app/models/concerns/merge_request_reviewer_state.rb
new file mode 100644
index 00000000000..216a3a0bd64
--- /dev/null
+++ b/app/models/concerns/merge_request_reviewer_state.rb
@@ -0,0 +1,25 @@
+# frozen_string_literal: true
+
+module MergeRequestReviewerState
+ extend ActiveSupport::Concern
+
+ included do
+ enum state: {
+ unreviewed: 0,
+ reviewed: 1,
+ attention_requested: 2
+ }
+
+ validates :state,
+ presence: true,
+ inclusion: { in: self.states.keys }
+
+ after_initialize :set_state, unless: :persisted?
+
+ def set_state
+ if Feature.enabled?(:mr_attention_requests, self.merge_request&.project, default_enabled: :yaml)
+ self.state = :attention_requested
+ end
+ end
+ end
+end