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



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, message) ⇒ Object



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

def add(collocutor, message)
  check_type User, collocutor
  check_type DirectMessage, message

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

#conversationsObject



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

def conversations
  @conversations.values
end

#fetchObject



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

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

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