Class: TurboChat::ChatMembership
- Inherits:
-
ApplicationRecord
- Object
- ActiveRecord::Base
- ApplicationRecord
- TurboChat::ChatMembership
- Defined in:
- app/models/turbo_chat/chat_membership.rb
Class Method Summary collapse
Instance Method Summary collapse
- #accept_invitation! ⇒ Object
- #active? ⇒ Boolean
- #effective_role_definition ⇒ Object
- #effective_role_key ⇒ Object
- #effective_role_name ⇒ Object
- #effective_role_permissions ⇒ Object
- #effective_role_rank ⇒ Object
- #pending? ⇒ Boolean
- #role_key ⇒ Object
- #role_key=(value) ⇒ Object
Class Method Details
.invitation_tracking_supported? ⇒ Boolean
27 28 29 30 31 |
# File 'app/models/turbo_chat/chat_membership.rb', line 27 def invitation_tracking_supported? column_names.include?("invitation_accepted") rescue ActiveRecord::StatementInvalid, ActiveRecord::NoDatabaseError false end |
Instance Method Details
#accept_invitation! ⇒ Object
42 43 44 45 46 |
# File 'app/models/turbo_chat/chat_membership.rb', line 42 def accept_invitation! update_attributes = { muted: false, timed_out_until: nil } update_attributes[:invitation_accepted] = true if self.class.invitation_tracking_supported? update!(update_attributes) end |
#active? ⇒ Boolean
34 35 36 |
# File 'app/models/turbo_chat/chat_membership.rb', line 34 def active? removed_at.nil? && (!self.class.invitation_tracking_supported? || invitation_accepted?) end |
#effective_role_definition ⇒ Object
72 73 74 |
# File 'app/models/turbo_chat/chat_membership.rb', line 72 def effective_role_definition TurboChat.configuration.role_definition(effective_role_key) end |
#effective_role_key ⇒ Object
68 69 70 |
# File 'app/models/turbo_chat/chat_membership.rb', line 68 def effective_role_key role_key.to_s end |
#effective_role_name ⇒ Object
76 77 78 |
# File 'app/models/turbo_chat/chat_membership.rb', line 76 def effective_role_name effective_role_definition&.dig(:name).presence || effective_role_key.humanize end |
#effective_role_permissions ⇒ Object
84 85 86 |
# File 'app/models/turbo_chat/chat_membership.rb', line 84 def Array(effective_role_definition&.dig(:permissions)).map(&:to_sym) end |
#effective_role_rank ⇒ Object
80 81 82 |
# File 'app/models/turbo_chat/chat_membership.rb', line 80 def effective_role_rank effective_role_definition&.dig(:rank).to_i end |
#pending? ⇒ Boolean
38 39 40 |
# File 'app/models/turbo_chat/chat_membership.rb', line 38 def pending? removed_at.nil? && self.class.invitation_tracking_supported? && !invitation_accepted? end |
#role_key ⇒ Object
48 49 50 |
# File 'app/models/turbo_chat/chat_membership.rb', line 48 def role_key custom_role_key.presence || role end |
#role_key=(value) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/models/turbo_chat/chat_membership.rb', line 52 def role_key=(value) normalized = normalize_role_key_value(value) if normalized.blank? self.custom_role_key = nil return end if self.class.roles.key?(normalized) self.role = normalized self.custom_role_key = nil else self.role = :member if role.blank? self.custom_role_key = normalized end end |