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 +4 -4
- data/README.md +1 -3
- data/lib/twterm/repository/abstract_expirable_entity_repository.rb +8 -2
- data/lib/twterm/repository/status_repository.rb +22 -0
- data/lib/twterm/repository/user_repository.rb +4 -0
- data/lib/twterm/tab/base.rb +0 -7
- data/lib/twterm/tab/new/search.rb +0 -2
- data/lib/twterm/tab/statuses/base.rb +13 -1
- data/lib/twterm/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d44d4efd89253159a5b3999aab7c1600c455f446
|
4
|
+
data.tar.gz: 05db8e2c2a8d665dad0c256113ba479f9d471d36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9cf75c3584cf79a4028434df82525b17a7df990a7bada78ec925e140e5f3ff2f5ced14ab0f373d5f45accb2ae8f232abef31e797e39cb2beb08b7392f52d6634
|
7
|
+
data.tar.gz: b15698fad09a15ab42d11b03400883c5165bac3e290348f3b926145ef4bf7882a5e2f8734bd9bed50174a4d7b10dd6eba60e9fca955afd90813f0ae081af204b
|
data/README.md
CHANGED
@@ -19,8 +19,10 @@ module Twterm
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def find(id)
|
22
|
-
|
23
|
-
|
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
|
data/lib/twterm/tab/base.rb
CHANGED
@@ -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
|
-
|
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?
|
data/lib/twterm/version.rb
CHANGED
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
|
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-
|
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:
|
334
|
+
version: '0'
|
335
335
|
requirements: []
|
336
336
|
rubyforge_project:
|
337
337
|
rubygems_version: 2.6.11
|