Class: Legion::Gaia::NotificationGate::PresenceEvaluator
- Inherits:
-
Object
- Object
- Legion::Gaia::NotificationGate::PresenceEvaluator
- Defined in:
- lib/legion/gaia/notification_gate/presence_evaluator.rb
Constant Summary collapse
- PRESENCE_THRESHOLDS =
{ 'Available' => :ambient, 'Busy' => :urgent, 'Away' => :urgent, 'BeRightBack' => :urgent, 'DoNotDisturb' => :critical, 'Offline' => :critical }.freeze
- PRIORITY_ORDER =
{ critical: 4, urgent: 3, normal: 2, low: 1, ambient: 0 }.freeze
Instance Attribute Summary collapse
-
#activity ⇒ Object
readonly
Returns the value of attribute activity.
-
#availability ⇒ Object
readonly
Returns the value of attribute availability.
-
#updated_at ⇒ Object
readonly
Returns the value of attribute updated_at.
Instance Method Summary collapse
- #delivery_allowed?(priority: :normal) ⇒ Boolean
-
#initialize ⇒ PresenceEvaluator
constructor
A new instance of PresenceEvaluator.
- #stale?(max_age: 120) ⇒ Boolean
- #update(availability:, activity: nil) ⇒ Object
Constructor Details
#initialize ⇒ PresenceEvaluator
Returns a new instance of PresenceEvaluator.
20 21 22 23 24 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 20 def initialize @availability = nil @activity = nil @updated_at = nil end |
Instance Attribute Details
#activity ⇒ Object (readonly)
Returns the value of attribute activity.
18 19 20 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 18 def activity @activity end |
#availability ⇒ Object (readonly)
Returns the value of attribute availability.
18 19 20 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 18 def availability @availability end |
#updated_at ⇒ Object (readonly)
Returns the value of attribute updated_at.
18 19 20 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 18 def updated_at @updated_at end |
Instance Method Details
#delivery_allowed?(priority: :normal) ⇒ Boolean
32 33 34 35 36 37 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 32 def delivery_allowed?(priority: :normal) return true unless @availability min_priority = PRESENCE_THRESHOLDS[@availability] || :ambient priority_rank(priority) >= priority_rank(min_priority) end |
#stale?(max_age: 120) ⇒ Boolean
39 40 41 42 43 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 39 def stale?(max_age: 120) return true unless @updated_at (Time.now.utc - @updated_at) > max_age end |
#update(availability:, activity: nil) ⇒ Object
26 27 28 29 30 |
# File 'lib/legion/gaia/notification_gate/presence_evaluator.rb', line 26 def update(availability:, activity: nil) @availability = availability @activity = activity @updated_at = Time.now.utc end |