Fix protocol spam on part/quit/disconnect
[quassel.git] / src / common / ircuser.cpp
index d7b65f0..94d404d 100644 (file)
@@ -291,16 +291,16 @@ void IrcUser::joinChannel(const QString& channelname)
     joinChannel(network()->newIrcChannel(channelname));
 }
 
-void IrcUser::partChannel(IrcChannel* channel)
+void IrcUser::partChannel(IrcChannel* channel, bool skip_sync)
 {
     if (_channels.contains(channel)) {
         _channels.remove(channel);
         disconnect(channel, nullptr, this, nullptr);
         channel->part(this);
         QString channelName = channel->name();
-        SYNC_OTHER(partChannel, ARG(channelName))
+        if (!skip_sync) SYNC_OTHER(partChannel, ARG(channelName))
         if (_channels.isEmpty() && !network()->isMe(this))
-            quit();
+            quit(skip_sync);
     }
 }
 
@@ -315,7 +315,7 @@ void IrcUser::partChannel(const QString& channelname)
     }
 }
 
-void IrcUser::quit()
+void IrcUser::quit(bool skip_sync)
 {
     QList<IrcChannel*> channels = _channels.values();
     _channels.clear();
@@ -324,7 +324,7 @@ void IrcUser::quit()
         channel->part(this);
     }
     network()->removeIrcUser(this);
-    SYNC(NO_ARG)
+    if (!skip_sync) SYNC(NO_ARG)
     emit quited();
 }