Module: Gitlab::ColorModes

Defined in:
lib/gitlab/color_modes.rb

Overview

Module containing GitLab’s color mode definitions and helper methods for accessing them.

Defined Under Namespace

Classes: Mode

Constant Summary collapse

APPLICATION_DEFAULT =

Color mode ID used when no ‘default_color_mode` configuration setting is provided.

1
APPLICATION_DARK =
2
APPLICATION_SYSTEM =
3

Class Method Summary collapse

Class Method Details

.available_modesObject



15
16
17
18
19
20
21
# File 'lib/gitlab/color_modes.rb', line 15

def self.available_modes
  [
    Mode.new(APPLICATION_DEFAULT, s_('ColorMode|Light'), 'gl-light'),
    Mode.new(APPLICATION_DARK, s_('ColorMode|Dark (Experiment)'), 'gl-dark'),
    Mode.new(APPLICATION_SYSTEM, s_('ColorMode|Auto (Experiment)'), 'gl-system')
  ]
end

.by_id(id) ⇒ Object

Get a Mode by its ID

If the ID is invalid, returns the default Mode.

id - Integer ID

Returns a Mode



30
31
32
# File 'lib/gitlab/color_modes.rb', line 30

def self.by_id(id)
  available_modes.detect { |s| s.id == id } || default
end

.defaultObject

Get the default Mode

Returns a Mode



37
38
39
# File 'lib/gitlab/color_modes.rb', line 37

def self.default
  by_id(default_id)
end

.default_idObject



65
66
67
68
69
70
# File 'lib/gitlab/color_modes.rb', line 65

def self.default_id
  @default_id ||= begin
    id = Gitlab.config.gitlab['default_color_mode']&.to_i
    available_modes.detect { |s| s.id == id }&.id || APPLICATION_DEFAULT
  end
end

.each(&block) ⇒ Object

Iterate through each Mode

Yields the Mode object



44
45
46
# File 'lib/gitlab/color_modes.rb', line 44

def self.each(&block)
  available_modes.each(&block)
end

.for_user(user) ⇒ Object

Get the Mode for the specified user, or the default

user - User record

Returns a Mode



53
54
55
56
57
58
59
# File 'lib/gitlab/color_modes.rb', line 53

def self.for_user(user)
  if user
    by_id(user.color_mode_id)
  else
    default
  end
end

.valid_idsObject



61
62
63
# File 'lib/gitlab/color_modes.rb', line 61

def self.valid_ids
  available_modes.map(&:id)
end