twterm 2.0.0.beta4 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '00415181902d737f2283de4a54152889cffc54ab'
4
- data.tar.gz: '009bd013a8832bc161b1e3613b6a00bea98df2a7'
3
+ metadata.gz: d44d4efd89253159a5b3999aab7c1600c455f446
4
+ data.tar.gz: 05db8e2c2a8d665dad0c256113ba479f9d471d36
5
5
  SHA512:
6
- metadata.gz: '066976acf5219459f6c018153d97745c7138a98a1928061f780cc29520943e30afd5e2505a9d2f39eb018be6e1287e4b84b70ff5a6b39534b64bcc2ccc50b6fa'
7
- data.tar.gz: 956676d43c5ee57370ad7ed17520b83789bb71b1bf2e96d20700d5604be7879d833d52004936a8b31b6612717aa970e460a74185be239d3c1aee36f11328babf
6
+ metadata.gz: 9cf75c3584cf79a4028434df82525b17a7df990a7bada78ec925e140e5f3ff2f5ced14ab0f373d5f45accb2ae8f232abef31e797e39cb2beb08b7392f52d6634
7
+ data.tar.gz: b15698fad09a15ab42d11b03400883c5165bac3e290348f3b926145ef4bf7882a5e2f8734bd9bed50174a4d7b10dd6eba60e9fca955afd90813f0ae081af204b
data/README.md CHANGED
@@ -2,9 +2,7 @@
2
2
 
3
3
  A full-featured TUI Twitter client
4
4
 
5
- ## Screenshot
6
-
7
- ![screenshot](http://twterm.ryota-ka.me/screenshot.png)
5
+ ![screencast](http://twterm.ryota-ka.me/screencast.gif)
8
6
 
9
7
  ## Requirements
10
8
 
@@ -19,8 +19,10 @@ module Twterm
19
19
  end
20
20
 
21
21
  def find(id)
22
- touch(id)
23
- super
22
+ instance = super
23
+ touch(id) if !instance.nil? && should_keep?(instance)
24
+
25
+ instance
24
26
  end
25
27
 
26
28
  def expire(threshold)
@@ -38,6 +40,10 @@ module Twterm
38
40
  raise NotImplementedError, '`garbage_collection_event_class` must be implemented'
39
41
  end
40
42
 
43
+ def should_keep?(instance)
44
+ raise NotImplementedError, '`should_keep?` method must be implemented'
45
+ end
46
+
41
47
  def touch(id)
42
48
  @touched_at[id] = Time.now
43
49
  end
@@ -31,6 +31,20 @@ module Twterm
31
31
  repository.values.select { |s| s.in_reply_to_status_id == id }
32
32
  end
33
33
 
34
+ def expire(threshold)
35
+ now = Time.now
36
+ ids = repository
37
+ .to_a
38
+ .sort_by { |_, status| status.created_at }
39
+ .reverse
40
+ .drop(keep_minimum)
41
+ .select { |id, _| !@touched_at[id] || @touched_at[id] + threshold < now }
42
+
43
+ ids.each { |id| publish(garbage_collection_event_class.new(id)) }
44
+
45
+ repository.delete_if { |id, _| ids.include?(id) }
46
+ end
47
+
34
48
  def ids
35
49
  repository.keys
36
50
  end
@@ -41,6 +55,14 @@ module Twterm
41
55
  Event::StatusGarbageCollected
42
56
  end
43
57
 
58
+ def keep_minimum
59
+ 1000
60
+ end
61
+
62
+ def should_keep?(status)
63
+ Time.now - status.created_at > 86400
64
+ end
65
+
44
66
  def type
45
67
  Status
46
68
  end
@@ -19,6 +19,10 @@ module Twterm
19
19
  Event::UserGarbageCollected
20
20
  end
21
21
 
22
+ def should_keep?(_)
23
+ true
24
+ end
25
+
22
26
  def type
23
27
  User
24
28
  end
@@ -107,13 +107,6 @@ module Twterm
107
107
  )
108
108
  end
109
109
 
110
- def reload
111
- fetch.then do |statuses|
112
- statuses.each { |s| append(s) }
113
- sort
114
- end
115
- end
116
-
117
110
  def resize(event)
118
111
  window.resize(stdscr.maxy - 5, stdscr.maxx)
119
112
  window.move(3, 0)
@@ -110,8 +110,6 @@ module Twterm
110
110
  end
111
111
 
112
112
  def update_saved_search
113
- return unless @@queries.empty?
114
-
115
113
  client.saved_search.then do |searches|
116
114
  @@queries = searches.map(&:query)
117
115
  initially_loaded!
@@ -32,6 +32,7 @@ module Twterm
32
32
 
33
33
  def delete(status_id)
34
34
  app.status_repository.delete(status_id)
35
+ @status_ids.delete(status_id)
35
36
  render
36
37
  end
37
38
 
@@ -188,7 +189,7 @@ module Twterm
188
189
  end
189
190
 
190
191
  def total_item_count
191
- search_query.empty? ? @status_ids.count : statuses.count
192
+ statuses.count
192
193
  end
193
194
 
194
195
  private
@@ -235,11 +236,22 @@ module Twterm
235
236
  .reduce(Image.empty, :|)
236
237
  end
237
238
 
239
+ def reload
240
+ fetch.then do |statuses|
241
+ statuses.each { |s| append(s) }
242
+ sort
243
+ end
244
+ end
245
+
238
246
  def sort
239
247
  return if items.empty? || scroller.current_item.nil?
240
248
 
241
249
  formerly_selected_status_id = scroller.current_item.id
242
250
 
251
+ repo = app.status_repository
252
+
253
+ @status_ids.sort_by! { |status_id| repo.find(status_id).created_at }.reverse!
254
+
243
255
  unless formerly_selected_status_id.nil?
244
256
  new_index = @status_ids.index(formerly_selected_status_id)
245
257
  scroller.move_to(new_index) unless new_index.nil?
@@ -1,3 +1,3 @@
1
1
  module Twterm
2
- VERSION = '2.0.0.beta4'
2
+ VERSION = '2.0.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: twterm
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.0.beta4
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryota Kameoka
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-09-01 00:00:00.000000000 Z
11
+ date: 2017-09-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: curses
@@ -329,9 +329,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
329
329
  version: 2.1.0
330
330
  required_rubygems_version: !ruby/object:Gem::Requirement
331
331
  requirements:
332
- - - ">"
332
+ - - ">="
333
333
  - !ruby/object:Gem::Version
334
- version: 1.3.1
334
+ version: '0'
335
335
  requirements: []
336
336
  rubyforge_project:
337
337
  rubygems_version: 2.6.11