Class: Chatrix::User
- Inherits:
-
Object
- Object
- Chatrix::User
- Includes:
- Wisper::Publisher
- Defined in:
- lib/chatrix/user.rb
Overview
Describes a user.
Instance Attribute Summary collapse
-
#avatar ⇒ String?
readonly
This user's avatar URL, if one has been set.
-
#displayname ⇒ String?
readonly
The display name of this user, if one has been set.
-
#id ⇒ String
readonly
The user ID of this user.
Instance Method Summary collapse
-
#initialize(id) ⇒ User
constructor
Initializes a new User instance.
-
#member?(room) ⇒ Boolean
Checks if this user is a member of the specified room.
-
#power_in(room) ⇒ Fixnum
Get this user's power level in a room.
-
#process_invite(room, sender, event) ⇒ Object
Process an invite to a room.
-
#process_member_event(room, event) ⇒ Object
Process a member event.
-
#process_power_level(room, level) ⇒ Object
Process a power level update in a room.
-
#to_s ⇒ String
Converts this User object to a string representation of it.
-
#update(data) ⇒ Object
private
Updates metadata for this user.
-
#update_avatar(url) ⇒ Object
private
Sets a new avatar URL for this user.
-
#update_displayname(name) ⇒ Object
private
Sets a new display name for this user.
Constructor Details
#initialize(id) ⇒ User
Initializes a new User instance.
25 26 27 28 29 30 |
# File 'lib/chatrix/user.rb', line 25 def initialize(id) @id = id # room_id => membership @memberships = {} end |
Instance Attribute Details
#avatar ⇒ String? (readonly)
Returns This user's avatar URL, if one has been set.
21 22 23 |
# File 'lib/chatrix/user.rb', line 21 def avatar @avatar end |
#displayname ⇒ String? (readonly)
Returns The display name of this user, if one has been set.
18 19 20 |
# File 'lib/chatrix/user.rb', line 18 def displayname @displayname end |
#id ⇒ String (readonly)
Returns The user ID of this user.
14 15 16 |
# File 'lib/chatrix/user.rb', line 14 def id @id end |
Instance Method Details
#member?(room) ⇒ Boolean
Checks if this user is a member of the specified room.
45 46 47 |
# File 'lib/chatrix/user.rb', line 45 def member?(room) @memberships.key?(room) && @memberships[room][:type] == :join end |
#power_in(room) ⇒ Fixnum
Get this user's power level in a room.
36 37 38 39 |
# File 'lib/chatrix/user.rb', line 36 def power_in(room) return 0 unless @memberships.key? room @memberships[room][:power] || 0 end |
#process_invite(room, sender, event) ⇒ Object
Process an invite to a room.
83 84 85 86 87 88 89 |
# File 'lib/chatrix/user.rb', line 83 def process_invite(room, sender, event) # Return early if we're already part of this room membership = (@memberships[room] ||= {}) return if membership[:type] == :join process_member_event room, event broadcast(:invited, self, room, sender) end |
#process_member_event(room, event) ⇒ Object
Process a member event.
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/chatrix/user.rb', line 53 def process_member_event(room, event) membership = (@memberships[room] ||= {}) type = event['content']['membership'].to_sym # Only update the membership status if we are currently not in the room # or if the new state is that we have left. if membership[:type] != :join || type == :leave membership[:type] = type broadcast(:membership, self, room, membership) end update(event['content']) Events.processed event end |
#process_power_level(room, level) ⇒ Object
Process a power level update in a room.
73 74 75 76 77 |
# File 'lib/chatrix/user.rb', line 73 def process_power_level(room, level) membership = (@memberships[room] ||= {}) membership[:power] = level broadcast(:power_level, self, room, level) end |
#to_s ⇒ String
Converts this User object to a string representation of it.
94 95 96 |
# File 'lib/chatrix/user.rb', line 94 def to_s @id end |
#update(data) ⇒ Object (private)
Updates metadata for this user.
102 103 104 105 |
# File 'lib/chatrix/user.rb', line 102 def update(data) update_avatar(data['avatar_url']) if data.key? 'avatar_url' update_displayname(data['displayname']) if data.key? 'displayname' end |
#update_avatar(url) ⇒ Object (private)
Sets a new avatar URL for this user.
109 110 111 112 |
# File 'lib/chatrix/user.rb', line 109 def update_avatar(url) @avatar = url broadcast(:avatar, self, @avatar) end |
#update_displayname(name) ⇒ Object (private)
Sets a new display name for this user.
116 117 118 119 |
# File 'lib/chatrix/user.rb', line 116 def update_displayname(name) @displayname = name broadcast(:displayname, self, @displayname) end |