Class: Twterm::Tab::DirectMessage::ConversationList
Instance Attribute Summary
Attributes inherited from AbstractTab
#window
Instance Method Summary
collapse
Methods included from Subscriber
included, #subscribe, #unsubscribe
Methods included from Scrollable
#scroller, #total_item_count
Methods included from Loadable
#initially_loaded!, #initially_loaded?
Methods inherited from AbstractTab
#close, #find_or_fetch_list, #find_or_fetch_status, #find_or_fetch_user, #render
Constructor Details
Returns a new instance of ConversationList.
42
43
44
45
46
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 42
def initialize(app, client)
super(app, client)
subscribe(Event::DirectMessage::Fetched) { initially_loaded! }
end
|
Instance Method Details
#==(other) ⇒ Object
48
49
50
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 48
def ==(other)
other.is_a?(self.class)
end
|
#drawable_item_count ⇒ Object
17
18
19
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 17
def drawable_item_count
window.maxy.-(2).div(3)
end
|
#image ⇒ Object
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 21
def image
return Image.string(initially_loaded? ? 'No results found' : 'Loading...') if items.empty?
scroller.drawable_items.map.with_index(0) do |conversation, i|
cursor = Image.cursor(2, scroller.current_index?(i))
collocutor = app.user_repository.find(conversation.collocutor_id)
= [
ImageBuilder::UserNameImageBuilder.new(collocutor).build,
Image.string(conversation.updated_at.to_s).brackets,
].intersperse(Image.whitespace).reduce(Image.empty, :-)
body = Image.string(conversation.preview.split_by_width(window.maxx - 4).first)
cursor - Image.whitespace - ( | body)
end
.intersperse(Image.blank_line)
.reduce(Image.empty, :|)
end
|
#items ⇒ Object
52
53
54
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 52
def items
client.direct_message_conversations
end
|
#matches?(conversation, query) ⇒ Boolean
56
57
58
59
60
61
62
63
64
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 56
def matches?(conversation, query)
collocutor = app.user_repository.find(conversation.collocutor_id)
[
collocutor.name,
collocutor.screen_name,
conversation.preview
].any? { |x| x.downcase.include?(query.downcase) }
end
|
#respond_to_key(key) ⇒ Object
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 66
def respond_to_key(key)
return true if scroller.respond_to_key(key)
k = KeyMapper.instance
case key
when 10
open_conversation
when k[:status, :compose], k[:status, :reply]
conversation = current_item
collocutor = app.user_repository.find(conversation.collocutor_id)
app.direct_message_composer.compose(collocutor)
else
return false
end
true
end
|
#title ⇒ Object
85
86
87
|
# File 'lib/twterm/tab/direct_message/conversation_list.rb', line 85
def title
'Direct Messages'
end
|