Class: Twterm::DirectMessage::Conversation

Inherits:
Object
  • Object
show all
Includes:
Utils
Defined in:
lib/twterm/direct_message.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Utils

check_type

Constructor Details

#initialize(collocutor) ⇒ Conversation

Returns a new instance of Conversation.



48
49
50
51
52
53
# File 'lib/twterm/direct_message.rb', line 48

def initialize(collocutor)
  check_type User, collocutor

  @collocutor = collocutor
  @messages = []
end

Instance Attribute Details

#collocutorObject (readonly)

Returns the value of attribute collocutor.



46
47
48
# File 'lib/twterm/direct_message.rb', line 46

def collocutor
  @collocutor
end

#messagesObject (readonly)

Returns the value of attribute messages.



46
47
48
# File 'lib/twterm/direct_message.rb', line 46

def messages
  @messages
end

Instance Method Details

#<<(message) ⇒ Object



55
56
57
58
59
60
# File 'lib/twterm/direct_message.rb', line 55

def <<(message)
  @messages << message if messages.find { |m| m == message }.nil?
  @messages.sort_by!(&:created_at).reverse!

  self
end

#matches?(q) ⇒ Boolean

Returns:

  • (Boolean)


62
63
64
65
66
67
68
# File 'lib/twterm/direct_message.rb', line 62

def matches?(q)
  [
    collocutor.screen_name,
    collocutor.name,
    preview
  ].map(&:downcase).any? { |x| x.include?(q.downcase) }
end

#previewObject



70
71
72
# File 'lib/twterm/direct_message.rb', line 70

def preview
  messages.sort_by(&:created_at).last.text.gsub("\n", ' ')
end

#updated_atObject



74
75
76
77
78
79
# File 'lib/twterm/direct_message.rb', line 74

def updated_at
  updated_at = @messages.map(&:created_at).max

  format = Time.now - updated_at < 86_400 ? '%H:%M:%S' : '%Y-%m-%d %H:%M:%S'
  updated_at.strftime(format)
end