parity_timeline 0.3.2 → 0.3.4

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: 12ff062fb5f48769808d2edb009304c53afaeaa8
4
- data.tar.gz: 781075a55bf33f1aaafdb863289e67aae7ad8c39
3
+ metadata.gz: e85146f69c8fde0197e60c17e05915a0af4412cc
4
+ data.tar.gz: 7a677ed0ec60db4aa3ecdfccdf0278e07abace4d
5
5
  SHA512:
6
- metadata.gz: fa7367b09d7c6b4281f809bbb4351fc73317d9a304d2d3d40c5e3666aa4f80fae19dd252a22e31fcf4f70a0491705237fa17de3e62a2a8afcb9005404a2e2c27
7
- data.tar.gz: 3f49d6d5c12ef03a531b5133337dd81d7e8522c792b949f2d8a8642871c9eb08988d0f0a83b1702af57070538b2950697d3aae7a513b1dbadb3739b0145679d4
6
+ metadata.gz: 59a011912f306bbd1dc89be69bf41c9c2180a0b1fbfe1292196cd454bf34236997a7574e58e7d94332682706ebd257ae2dba23bb03fa27cc87f8cd5de5e08b1b
7
+ data.tar.gz: 305562d0439a61010de6217c2693bb84239e9c5988a181b30026d262d68a3527a8eb1f635af1a03574e246652acf00c3f34d02064186c100fd630f770a9ca2bc
@@ -9,12 +9,14 @@ module Timeline
9
9
  def track_timeline_activity(name, options={})
10
10
  @name = name
11
11
  @start_value = 0
12
- @limit_records = options.delete(:limit_records) || -1
12
+ @limit_records = (options[:limit_records] && options[:limit_records] > 30) ? options[:limit_records] : 30
13
+ @limit_days = (options[:limit_days] && options[:limit_days] > 30) ? options[:limit_days] : 30
13
14
  @actor = options.delete :actor
14
15
  @actor ||= :creator
15
16
  @object = options.delete :object
16
17
  @target = options.delete :target
17
18
  @followers = options.delete :followers
19
+ @friends = options.delete :friends
18
20
  @mentionable = options.delete :mentionable
19
21
 
20
22
  @fields_for = {}
@@ -46,6 +48,7 @@ module Timeline
46
48
  add_activity_by_user(activity_item[:actor][:id], activity_item)
47
49
  add_mentions(activity_item)
48
50
  add_activity_to_followers(activity_item) if @followers.any?
51
+ add_activity_to_friends(activity_item) if @friends.any?
49
52
  end
50
53
 
51
54
  def add_activity_by_user(user_id, activity_item)
@@ -56,10 +59,18 @@ module Timeline
56
59
  redis_add "user:id:#{user_id}:activity", activity_item
57
60
  end
58
61
 
62
+ def add_activity_to_users_friends(user_id, activity_item)
63
+ redis_add "user:id:#{user_id}:activity:friends", activity_item
64
+ end
65
+
59
66
  def add_activity_to_followers(activity_item)
60
67
  @followers.each { |follower| add_activity_to_user(follower.id, activity_item) }
61
68
  end
62
69
 
70
+ def add_activity_to_friends(activity_item)
71
+ @friends.each { |friend| add_activity_to_users_friends(friend, activity_item) }
72
+ end
73
+
63
74
  def add_mentions(activity_item)
64
75
  return unless @mentionable and @object.send(@mentionable)
65
76
  @object.send(@mentionable).scan(/@\w+/).each do |mention|
@@ -95,7 +106,33 @@ module Timeline
95
106
 
96
107
  def redis_add(list, activity_item)
97
108
  Timeline.redis.lpush list, Timeline.encode(activity_item)
98
- Timeline.redis.ltrim list , @start_value , @limit_records
109
+ trim_activities list
110
+ end
111
+
112
+ def trim_activities(list)
113
+ return if (Timeline.redis.llen list) < @limit_records
114
+ last_record = get_record(list, -1)
115
+ return if (last_record && last_record["created_at"]) > Time.now - @limit_days.days
116
+ trim_old_activities(list)
117
+ end
118
+
119
+ def get_record(list, index)
120
+ last_record = Timeline.redis.lindex list, index
121
+ last_record = Timeline.decode(last_record) if last_record
122
+ end
123
+
124
+ def trim_old_activities(list)
125
+ Timeline.redis.ltrim list , 0 , get_trim_index(list, (Timeline.redis.llen list) - 1)
126
+ end
127
+
128
+ def get_trim_index(list, index)
129
+ return @limit_records if index < @limit_records
130
+ record = get_record(list, index)
131
+ if record && (record["created_at"] < Time.now - @limit_days.days)
132
+ return get_trim_index(list, index - 5)
133
+ else
134
+ return index
135
+ end
99
136
  end
100
137
 
101
138
  def set_object(object)
@@ -21,9 +21,8 @@ module Timeline
21
21
 
22
22
  def add_activity_to_subscribed_user(followers, activity_item)
23
23
  followers.each do |follower|
24
- follower_id ? follower.respond_to?(:id) ? follower.id : follower
25
- add_to_redis "user:id:#{follower_id}:notification", activity_item
26
- trim_notification "user:id:#{follower_id}:notification"
24
+ add_to_redis "user:id:#{follower.id}:notification", activity_item
25
+ trim_notification "user:id:#{follower.id}:notification"
27
26
  end
28
27
  end
29
28
 
@@ -1,4 +1,8 @@
1
1
  1.upto(User.last.id).each do |u|
2
2
  list = "user:id:#{u}:notification"
3
- Timeline.redis.ltrim list, 0, 15
3
+ Timeline.redis.ltrim list, 0, 30
4
+ list = "user:id:#{u}:posts"
5
+ Timeline.redis.ltrim list, 0, 30
6
+ list = "user:id:#{u}:activity"
7
+ Timeline.redis.ltrim list, 0, 30
4
8
  end
@@ -1,3 +1,3 @@
1
1
  module Timeline
2
- VERSION = "0.3.2"
2
+ VERSION = "0.3.4"
3
3
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parity_timeline
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Clack
8
8
  - Shiva Kumar
9
- - Jimish Jpbanputra
9
+ - Jimish Jobanputra
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2015-05-11 00:00:00.000000000 Z
13
+ date: 2015-06-09 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activesupport