twterm 2.0.0.beta4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
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