Class: Slk::Services::PresetStore
- Inherits:
-
Object
- Object
- Slk::Services::PresetStore
- 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
-
#on_warning ⇒ Object
Returns the value of attribute on_warning.
Instance Method Summary collapse
- #add(preset) ⇒ Object
- #all ⇒ Object
- #exists?(name) ⇒ Boolean
- #get(name) ⇒ Object
-
#initialize(paths: nil) ⇒ PresetStore
constructor
A new instance of PresetStore.
- #names ⇒ Object
-
#remove(name) ⇒ Object
rubocop:disable Naming/PredicateMethod.
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_warning ⇒ Object
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 |
#all ⇒ Object
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
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 |
#names ⇒ Object
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 |