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.

3
APPLICATION_LIGHT =
1
APPLICATION_DARK =
2
APPLICATION_SYSTEM =
3

Class Method Summary collapse

Class Method Details

.available_modesObject



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

def self.available_modes
  [
    Mode.new(APPLICATION_LIGHT, s_('ColorMode|Light'), 'gl-light'),
    Mode.new(APPLICATION_DARK, s_('ColorMode|Dark'), 'gl-dark'),
    Mode.new(APPLICATION_SYSTEM, s_('ColorMode|Auto'), '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



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

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

.defaultObject

Get the default Mode

Returns a Mode



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

def self.default
  by_id(default_id)
end

.default_idObject



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

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



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

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



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

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

.valid_idsObject



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

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