[419] in BarnOwl Developers

home help back first fref pref prev next nref lref last post

[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;
     }
 }
 


home help back first fref pref prev next nref lref last post