33 lines
669 B
Ruby
33 lines
669 B
Ruby
# frozen_string_literal: true
|
|
|
|
module Gitlab
|
|
module Graphql
|
|
module ConnectionRedaction
|
|
class RedactionState
|
|
attr_reader :redactor
|
|
attr_reader :redacted_nodes
|
|
|
|
def redactor=(redactor)
|
|
@redactor = redactor
|
|
@redacted_nodes = nil
|
|
end
|
|
|
|
def redacted(&block)
|
|
@redacted_nodes ||= redactor.present? ? redactor.redact(yield) : yield
|
|
end
|
|
end
|
|
|
|
delegate :redactor=, to: :redaction_state
|
|
|
|
def nodes
|
|
redaction_state.redacted { super.to_a }
|
|
end
|
|
|
|
private
|
|
|
|
def redaction_state
|
|
@redaction_state ||= RedactionState.new
|
|
end
|
|
end
|
|
end
|
|
end
|