Module: Twterm::Tab::Users::Base

Includes:
FilterableList, Base, Scrollable
Included in:
Followers, Friends
Defined in:
lib/twterm/tab/users/base.rb

Instance Attribute Summary collapse

Attributes included from Scrollable

#scroller

Attributes included from Base

#window

Instance Method Summary collapse

Methods included from Scrollable

#total_item_count

Methods included from FilterableList

#filter, #filter_query, #reset_filter

Methods included from Base

#==, #refresh, #resize

Instance Attribute Details

#user_idsObject (readonly)

Returns the value of attribute user_ids.



9
10
11
# File 'lib/twterm/tab/users/base.rb', line 9

def user_ids
  @user_ids
end

Instance Method Details

#closeObject



15
16
17
18
# File 'lib/twterm/tab/users/base.rb', line 15

def close
  @instance_keeper.kill
  super
end

#drawable_item_countObject



11
12
13
# File 'lib/twterm/tab/users/base.rb', line 11

def drawable_item_count
  (window.maxy - 6).div(3)
end

#fetchObject



20
# File 'lib/twterm/tab/users/base.rb', line 20

def fetch; end

#initializeObject



22
23
24
25
26
27
# File 'lib/twterm/tab/users/base.rb', line 22

def initialize
  super()
  @user_ids = []

  @instance_keeper = Scheduler.new(300) { items.each(&:touch!) }
end

#itemsObject



29
30
31
32
# File 'lib/twterm/tab/users/base.rb', line 29

def items
  users = user_ids.map { |id| User.find(id) }.reject(&:nil?)
  filter_query.empty? ? users : users.select { |user| user.matches?(filter_query) }
end

#respond_to_key(key) ⇒ Object



34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# File 'lib/twterm/tab/users/base.rb', line 34

def respond_to_key(key)
  return true if scroller.respond_to_key(key)

  case key
  when 10, ?U
    show_user
  when 18
    fetch
  when ?q
    reset_filter
  when ?/
    filter
  else
    return false
  end

  true
end

#titleObject



53
54
55
# File 'lib/twterm/tab/users/base.rb', line 53

def title
  'User list'
end