File: diff_file_component.rb

package info (click to toggle)
gitlab 17.6.5-19
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 629,368 kB
  • sloc: ruby: 1,915,304; javascript: 557,307; sql: 60,639; xml: 6,509; sh: 4,567; makefile: 1,239; python: 406
file content (42 lines) | stat: -rw-r--r-- 1,256 bytes parent folder | download
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
# frozen_string_literal: true

module RapidDiffs
  class DiffFileComponent < ViewComponent::Base
    include TreeHelper

    def initialize(diff_file:, parallel_view: false)
      @diff_file = diff_file
      @parallel_view = parallel_view
    end

    def id
      @diff_file.file_identifier_hash
    end

    def server_data
      project = @diff_file.repository.project
      params = tree_join(@diff_file.content_sha, @diff_file.file_path)
      {
        viewer: viewer_component.viewer_name,
        blob_diff_path: project_blob_diff_path(project, params)
      }
    end

    def viewer_component
      # return Viewers::CollapsedComponent if collapsed?
      # return Viewers::NotDiffableComponent unless diffable?

      is_text = @diff_file.text_diff?
      return Viewers::Text::ParallelViewComponent if is_text && @parallel_view
      return Viewers::Text::InlineViewComponent if is_text
      return Viewers::NoPreviewComponent if @diff_file.content_changed?

      # return Viewers::AddedComponent if new_file?
      # return Viewers::DeletedComponent if deleted_file?
      # return Viewers::RenamedComponent if renamed_file?
      # return Viewers::ModeChangedComponent if mode_changed?

      Viewers::NoPreviewComponent
    end
  end
end