Class: Slk::Services::PresetStore

Inherits:
Object
  • Object
show all
Defined in:
lib/slk/services/preset_store.rb

Overview

Manages saved status presets in JSON format

Constant Summary collapse

DEFAULT_PRESETS =
{
  'meeting' => {
    'text' => 'In a meeting',
    'emoji' => ':calendar:',
    'duration' => '1h',
    'presence' => '',
    'dnd' => ''
  },
  'lunch' => {
    'text' => 'Lunch',
    'emoji' => ':knife_fork_plate:',
    'duration' => '1h',
    'presence' => 'away',
    'dnd' => ''
  },
  'focus' => {
    'text' => 'Focus time',
    'emoji' => ':headphones:',
    'duration' => '2h',
    'presence' => '',
    'dnd' => '2h'
  },
  'brb' => {
    'text' => 'Be right back',
    'emoji' => ':brb:',
    'duration' => '15m',
    'presence' => 'away',
    'dnd' => ''
  },
  'clear' => {
    'text' => '',
    'emoji' => '',
    'duration' => '0',
    'presence' => 'auto',
    'dnd' => 'off'
  }
}.freeze

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(paths: nil) ⇒ PresetStore

Returns a new instance of PresetStore.



47
48
49
50
51
# File 'lib/slk/services/preset_store.rb', line 47

def initialize(paths: nil)
  @paths = paths || Support::XdgPaths.new
  @on_warning = nil
  ensure_default_presets
end

Instance Attribute Details

#on_warningObject

Returns the value of attribute on_warning.



45
46
47
# File 'lib/slk/services/preset_store.rb', line 45

def on_warning
  @on_warning
end

Instance Method Details

#add(preset) ⇒ Object



72
73
74
75
76
# File 'lib/slk/services/preset_store.rb', line 72

def add(preset)
  presets = load_presets
  presets[preset.name] = preset.to_h
  save_presets(presets)
end

#allObject



60
61
62
# File 'lib/slk/services/preset_store.rb', line 60

def all
  load_presets.map { |name, data| Models::Preset.from_hash(name, data) }
end

#exists?(name) ⇒ Boolean

Returns:

  • (Boolean)


68
69
70
# File 'lib/slk/services/preset_store.rb', line 68

def exists?(name)
  load_presets.key?(name)
end

#get(name) ⇒ Object



53
54
55
56
57
58
# File 'lib/slk/services/preset_store.rb', line 53

def get(name)
  data = load_presets[name]
  return nil unless data

  Models::Preset.from_hash(name, data)
end

#namesObject



64
65
66
# File 'lib/slk/services/preset_store.rb', line 64

def names
  load_presets.keys
end

#remove(name) ⇒ Object

rubocop:disable Naming/PredicateMethod



78
79
80
81
82
83
# File 'lib/slk/services/preset_store.rb', line 78

def remove(name) # rubocop:disable Naming/PredicateMethod
  presets = load_presets
  removed = presets.delete(name)
  save_presets(presets) if removed
  !removed.nil?
end