Class: Slk::Models::Reaction
- Inherits:
-
Data
- Object
- Data
- Slk::Models::Reaction
- Defined in:
- lib/slk/models/reaction.rb
Instance Attribute Summary collapse
-
#count ⇒ Object
readonly
Returns the value of attribute count.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
-
#timestamps ⇒ Object
readonly
Returns the value of attribute timestamps.
-
#users ⇒ Object
readonly
Returns the value of attribute users.
Class Method Summary collapse
Instance Method Summary collapse
- #emoji_code ⇒ Object
-
#initialize(name:, count: 0, users: [], timestamps: nil) ⇒ Reaction
constructor
A new instance of Reaction.
- #timestamp_for(user_id) ⇒ Object
- #timestamps? ⇒ Boolean
- #to_s ⇒ Object
-
#with_timestamps(timestamp_map) ⇒ Object
Create a new Reaction with timestamps added.
Constructor Details
#initialize(name:, count: 0, users: [], timestamps: nil) ⇒ Reaction
Returns a new instance of Reaction.
15 16 17 18 19 20 21 22 23 24 25 |
# File 'lib/slk/models/reaction.rb', line 15 def initialize(name:, count: 0, users: [], timestamps: nil) count_val = count.to_i count_val = 0 if count_val.negative? # Normalize invalid negative counts super( name: name.to_s.freeze, count: count_val, users: users.freeze, timestamps: &.freeze ) end |
Instance Attribute Details
#count ⇒ Object (readonly)
Returns the value of attribute count
5 6 7 |
# File 'lib/slk/models/reaction.rb', line 5 def count @count end |
#name ⇒ Object (readonly)
Returns the value of attribute name
5 6 7 |
# File 'lib/slk/models/reaction.rb', line 5 def name @name end |
#timestamps ⇒ Object (readonly)
Returns the value of attribute timestamps
5 6 7 |
# File 'lib/slk/models/reaction.rb', line 5 def @timestamps end |
#users ⇒ Object (readonly)
Returns the value of attribute users
5 6 7 |
# File 'lib/slk/models/reaction.rb', line 5 def users @users end |
Class Method Details
.from_api(data) ⇒ Object
6 7 8 9 10 11 12 13 |
# File 'lib/slk/models/reaction.rb', line 6 def self.from_api(data) new( name: data['name'], count: data['count'] || 0, users: data['users'] || [], timestamps: nil # Will be populated by ReactionEnricher ) end |
Instance Method Details
#emoji_code ⇒ Object
45 46 47 |
# File 'lib/slk/models/reaction.rb', line 45 def emoji_code ":#{name}:" end |
#timestamp_for(user_id) ⇒ Object
41 42 43 |
# File 'lib/slk/models/reaction.rb', line 41 def (user_id) &.dig(user_id) end |
#timestamps? ⇒ Boolean
37 38 39 |
# File 'lib/slk/models/reaction.rb', line 37 def !.nil? && !.empty? end |
#to_s ⇒ Object
49 50 51 |
# File 'lib/slk/models/reaction.rb', line 49 def to_s "#{count} #{emoji_code}" end |