aboutsummaryrefslogtreecommitdiff
path: root/lib/mauve/people_list.rb
diff options
context:
space:
mode:
authorPatrick J Cherry <patrick@bytemark.co.uk>2012-05-08 11:55:19 +0100
committerPatrick J Cherry <patrick@bytemark.co.uk>2012-05-08 11:55:19 +0100
commit409e88059e43d1a9c0df43a1df466c56e1dd9cbb (patch)
tree1313848bedfb1f1511cc3c099157ca3762318f85 /lib/mauve/people_list.rb
parent8e6d4162ed7ca52598abf78f10317be0d77518a9 (diff)
Fixed up PeopleList#resolve_notifications to check for recursion, and only
return notify clauses that refer to people.
Diffstat (limited to 'lib/mauve/people_list.rb')
-rw-r--r--lib/mauve/people_list.rb28
1 files changed, 20 insertions, 8 deletions
diff --git a/lib/mauve/people_list.rb b/lib/mauve/people_list.rb
index e6c6c36..8178635 100644
--- a/lib/mauve/people_list.rb
+++ b/lib/mauve/people_list.rb
@@ -78,16 +78,28 @@ module Mauve
l
end
- def resolve_notifications(default_every=nil, default_during=nil, at = nil)
- self.people(at).collect do |person|
- if self.notifications.empty?
- person.resolve_notifications(default_every, default_during, at)
+ def resolve_notifications(default_every=nil, default_during=nil, at = nil, lists_seen=[])
+ #
+ # Add our username to the list of lists seen.
+ #
+ lists_seen << self.username
+
+ self.people(at).collect do |person_or_people_list|
+ #
+ # Make sure we don't parse the same people list twice
+ #
+ next if lists_seen.include?(person_or_people_list.username)
+
+ if self.notifications.empty?
+ person_or_people_list.resolve_notifications(default_every, default_during, at, lists_seen)
else
self.notifications.collect do |notification|
- this_notification = Notification.new(person)
- this_notification.every = default_every || notification.every
- this_notification.during = default_during || notification.during
- this_notification
+ person_or_people_list.resolve_notifications(
+ default_every || notification.every,
+ default_during || notification.during,
+ at,
+ lists_seen
+ )
end
end
end.flatten.compact