Class: Twterm::DirectMessageManager

Inherits:
Object
  • Object
show all
Includes:
Publisher, Utils
Defined in:
lib/twterm/direct_message_manager.rb

Instance Method Summary collapse

Methods included from Publisher

#publish

Methods included from Utils

check_type

Constructor Details

#initialize(client) ⇒ DirectMessageManager

Returns a new instance of DirectMessageManager.



13
14
15
16
17
18
19
20
21
22
# File 'lib/twterm/direct_message_manager.rb', line 13

def initialize(client)
  check_type Client, client

  @client = client
  @conversations = {}

  fetch

  Scheduler.new(300) { fetch }
end

Instance Method Details

#add(collocutor_id, message) ⇒ Object



24
25
26
27
28
29
# File 'lib/twterm/direct_message_manager.rb', line 24

def add(collocutor_id, message)
  check_type DirectMessage, message

  @conversations[collocutor_id] ||= DirectMessage::Conversation.new(collocutor_id)
  @conversations[collocutor_id] << message
end

#conversationsObject



43
44
45
# File 'lib/twterm/direct_message_manager.rb', line 43

def conversations
  @conversations.values
end

#fetchObject



31
32
33
34
35
36
37
38
39
40
41
# File 'lib/twterm/direct_message_manager.rb', line 31

def fetch
  client.direct_messages_received.then do |messages|
    messages.each { |m| add(m.sender_id, m) }
    publish(Event::DirectMessage::Fetched.new)
  end

  client.direct_messages_sent.then do |messages|
    messages.each { |m| add(m.recipient_id, m) }
    publish(Event::DirectMessage::Fetched.new)
  end
end