twterm 2.5.0 → 2.9.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +62 -0
  3. data/.gitignore +1 -0
  4. data/Makefile +18 -0
  5. data/README.md +30 -4
  6. data/bin/twterm +1 -3
  7. data/default.nix +21 -0
  8. data/gemset.nix +5130 -0
  9. data/lib/twterm/app.rb +0 -18
  10. data/lib/twterm/client.rb +1 -6
  11. data/lib/twterm/color_manager.rb +8 -9
  12. data/lib/twterm/image.rb +26 -0
  13. data/lib/twterm/image/underlined.rb +31 -0
  14. data/lib/twterm/image_builder/user_name_image_builder.rb +1 -0
  15. data/lib/twterm/key_mapper.rb +6 -8
  16. data/lib/twterm/key_mapper/abstract_key_mapper.rb +2 -2
  17. data/lib/twterm/list.rb +36 -1
  18. data/lib/twterm/message_window.rb +4 -5
  19. data/lib/twterm/persistable_configuration_proxy.rb +6 -6
  20. data/lib/twterm/preferences.rb +8 -1
  21. data/lib/twterm/rest_client.rb +0 -33
  22. data/lib/twterm/screen.rb +54 -14
  23. data/lib/twterm/search_query_window.rb +4 -5
  24. data/lib/twterm/status.rb +10 -0
  25. data/lib/twterm/tab/abstract_tab.rb +33 -8
  26. data/lib/twterm/tab/new/index.rb +0 -10
  27. data/lib/twterm/tab/new/list.rb +3 -3
  28. data/lib/twterm/tab/new/search.rb +2 -2
  29. data/lib/twterm/tab/new/user.rb +2 -2
  30. data/lib/twterm/tab/preferences/control.rb +77 -0
  31. data/lib/twterm/tab/preferences/index.rb +6 -0
  32. data/lib/twterm/tab/status_tab.rb +10 -0
  33. data/lib/twterm/tab/statuses/abstract_statuses_tab.rb +4 -4
  34. data/lib/twterm/tab/statuses/home.rb +0 -3
  35. data/lib/twterm/tab/statuses/mentions.rb +1 -0
  36. data/lib/twterm/tab/user_tab.rb +0 -9
  37. data/lib/twterm/tab_manager.rb +77 -5
  38. data/lib/twterm/tweetbox.rb +2 -3
  39. data/lib/twterm/user.rb +1 -0
  40. data/lib/twterm/version.rb +1 -1
  41. data/nix/Gemfile +3 -0
  42. data/nix/Gemfile.lock +70 -0
  43. data/nix/gemset.nix +283 -0
  44. data/shell.nix +40 -0
  45. data/twterm.gemspec +13 -13
  46. metadata +42 -44
  47. data/.travis.yml +0 -12
  48. data/lib/twterm/direct_message.rb +0 -60
  49. data/lib/twterm/direct_message_composer.rb +0 -80
  50. data/lib/twterm/direct_message_manager.rb +0 -51
  51. data/lib/twterm/event/direct_message/fetched.rb +0 -10
  52. data/lib/twterm/event/notification/direct_message.rb +0 -30
  53. data/lib/twterm/event/status/timeline.rb +0 -10
  54. data/lib/twterm/repository/direct_message_repository.rb +0 -14
  55. data/lib/twterm/streaming_client.rb +0 -146
  56. data/lib/twterm/tab/direct_message/conversation.rb +0 -104
  57. data/lib/twterm/tab/direct_message/conversation_list.rb +0 -100
@@ -1,100 +0,0 @@
1
- require 'twterm/direct_message_composer'
2
- require 'twterm/event/direct_message/fetched'
3
- require 'twterm/image_builder/user_name_image_builder'
4
- require 'twterm/subscriber'
5
- require 'twterm/tab/abstract_tab'
6
- require 'twterm/tab/loadable'
7
- require 'twterm/tab/direct_message/conversation'
8
-
9
- module Twterm
10
- module Tab
11
- module DirectMessage
12
- class ConversationList < AbstractTab
13
- include Loadable
14
- include Searchable
15
- include Subscriber
16
-
17
- def drawable_item_count
18
- window.maxy.-(2).div(3)
19
- end
20
-
21
- def image
22
- return Image.string(initially_loaded? ? 'No results found' : 'Loading...') if items.empty?
23
-
24
- scroller.drawable_items.map.with_index(0) do |conversation, i|
25
- cursor = Image.cursor(2, scroller.current_index?(i))
26
-
27
- collocutor = app.user_repository.find(conversation.collocutor_id)
28
-
29
- header = [
30
- ImageBuilder::UserNameImageBuilder.new(collocutor).build,
31
- Image.string(conversation.updated_at.to_s).brackets,
32
- ].intersperse(Image.whitespace).reduce(Image.empty, :-)
33
-
34
- body = Image.string(conversation.preview.split_by_width(window.maxx - 4).first)
35
-
36
- cursor - Image.whitespace - (header | body)
37
- end
38
- .intersperse(Image.blank_line)
39
- .reduce(Image.empty, :|)
40
- end
41
-
42
- def initialize(app, client)
43
- super(app, client)
44
-
45
- subscribe(Event::DirectMessage::Fetched) { initially_loaded! }
46
- end
47
-
48
- def ==(other)
49
- other.is_a?(self.class)
50
- end
51
-
52
- def items
53
- client.direct_message_conversations
54
- end
55
-
56
- def matches?(conversation, query)
57
- collocutor = app.user_repository.find(conversation.collocutor_id)
58
-
59
- [
60
- collocutor.name,
61
- collocutor.screen_name,
62
- conversation.preview
63
- ].any? { |x| x.downcase.include?(query.downcase) }
64
- end
65
-
66
- def respond_to_key(key)
67
- return true if scroller.respond_to_key(key)
68
-
69
- k = KeyMapper.instance
70
-
71
- case key
72
- when 10
73
- open_conversation
74
- when k[:status, :compose], k[:status, :reply]
75
- conversation = current_item
76
- collocutor = app.user_repository.find(conversation.collocutor_id)
77
- app.direct_message_composer.compose(collocutor)
78
- else
79
- return false
80
- end
81
-
82
- true
83
- end
84
-
85
- def title
86
- 'Direct Messages'
87
- end
88
-
89
- private
90
-
91
- def open_conversation
92
- conversation = scroller.current_item
93
-
94
- tab = Tab::DirectMessage::Conversation.new(app, client, conversation)
95
- app.tab_manager.add_and_show(tab)
96
- end
97
- end
98
- end
99
- end
100
- end