[419] in BarnOwl Developers
[D-O-H] r550 - trunk/owl/perl/lib/Net/XMPP
daemon@ATHENA.MIT.EDU (asedeno@MIT.EDU)
Thu Oct 29 18:05:57 2009
Resent-From: nelhage@mit.edu
Resent-To: barnowl-dev-mtg@charon.mit.edu
To: dirty-owl-hackers@mit.edu
From: asedeno@MIT.EDU
Reply-to: dirty-owl-hackers@MIT.EDU
Date: Tue, 23 Jan 2007 16:43:33 -0500 (EST)
Author: asedeno
Date: 2007-01-23 16:43:33 -0500 (Tue, 23 Jan 2007)
New Revision: 550
Modified:
trunk/owl/perl/lib/Net/XMPP/Roster.pm
Log:
Add better handling for changing groups in the roster.
Modified: trunk/owl/perl/lib/Net/XMPP/Roster.pm
===================================================================
--- trunk/owl/perl/lib/Net/XMPP/Roster.pm 2007-01-23 20:32:42 UTC (rev 549)
+++ trunk/owl/perl/lib/Net/XMPP/Roster.pm 2007-01-23 21:43:33 UTC (rev 550)
@@ -271,19 +271,27 @@
$jid = $jid->GetJID() if UNIVERSAL::isa($jid,"Net::XMPP::JID");
if (exists $self->{JIDS}->{$jid})
{
- foreach my $key (keys %item)
- {
- $self->{JIDS}->{$jid}->{$key} = $item{$key};
- }
+ foreach my $key (keys %item)
+ {
+ $self->{JIDS}->{$jid}->{$key} = $item{$key};
+ }
}
else
{
$self->{JIDS}->{$jid} = \%item;
+ }
+ foreach my $group (keys %{ $self->{GROUPS} })
+ {
+ # Clear user from old groups.
+ delete $self->{GROUPS}->{$group}->{$jid};
+ # Clean up empty groups.
+ delete $self->{GROUPS}->{$group} unless scalar keys %{ $self->{GROUPS}->{$group} };
}
+
foreach my $group (@{$item{groups}})
{
- $self->{GROUPS}->{$group}->{$jid} = 1;
+ $self->{GROUPS}->{$group}->{$jid} = 1;
}
}