Class: ActsAsMessageable::Message

Inherits:
ActiveRecord::Base
  • Object
show all
Extended by:
T::Sig
Includes:
Scopes, Ancestry::InstanceMethods
Defined in:
lib/acts_as_messageable/message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(*args, **kwargs) ⇒ Message

Returns a new instance of Message.



24
25
26
27
28
29
# File 'lib/acts_as_messageable/message.rb', line 24

def initialize(*args, **kwargs)
  @removed = T.let(false, T.nilable(T::Boolean))
  @restored = T.let(false, T.nilable(T::Boolean))

  super
end

Instance Attribute Details

#removedObject

Returns the value of attribute removed.



19
20
21
# File 'lib/acts_as_messageable/message.rb', line 19

def removed
  @removed
end

#restoredObject

Returns the value of attribute restored.



19
20
21
# File 'lib/acts_as_messageable/message.rb', line 19

def restored
  @restored
end

Instance Method Details

#closeObject Also known as: mark_as_unread, unread



59
60
61
# File 'lib/acts_as_messageable/message.rb', line 59

def close
  update!(opened_at: nil, opened: false)
end

#conversationObject



92
93
94
# File 'lib/acts_as_messageable/message.rb', line 92

def conversation
  root.subtree
end

#deleteObject



99
100
101
# File 'lib/acts_as_messageable/message.rb', line 99

def delete
  self.removed = true
end

#fromObject



67
68
69
# File 'lib/acts_as_messageable/message.rb', line 67

def from
  sent_messageable
end

#openObject Also known as: mark_as_read, read



49
50
51
# File 'lib/acts_as_messageable/message.rb', line 49

def open
  update!(opened_at: Time.current, opened: true)
end

#open?Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/acts_as_messageable/message.rb', line 35

def open?
  opened?
end

#opened?Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/acts_as_messageable/message.rb', line 42

def opened?
  opened_at.present? || super
end

#participant?(user) ⇒ Boolean

Returns:

  • (Boolean)


86
87
88
# File 'lib/acts_as_messageable/message.rb', line 86

def participant?(user)
  user.class.group_messages || (to == user) || (from == user)
end

#peopleObject



128
129
130
# File 'lib/acts_as_messageable/message.rb', line 128

def people
  conversation.map(&:from).uniq
end

#real_receiver(user) ⇒ Object



79
80
81
# File 'lib/acts_as_messageable/message.rb', line 79

def real_receiver(user)
  user == from ? to : from
end

#reply(*args) ⇒ Object

rubocop:disable Style/ArgumentsForwarding



121
122
123
# File 'lib/acts_as_messageable/message.rb', line 121

def reply(*args) # rubocop:disable Style/ArgumentsForwarding
  T.unsafe(to).reply_to(self, *args) # rubocop:disable Style/ArgumentsForwarding
end

#restoreObject



106
107
108
# File 'lib/acts_as_messageable/message.rb', line 106

def restore
  self.restored = true
end

#toObject



72
73
74
# File 'lib/acts_as_messageable/message.rb', line 72

def to
  received_messageable
end