diff options
Diffstat (limited to 'Swift/Controllers/Chat/ChatsManager.cpp')
-rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index 2ed7051..921cc6f 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -139,12 +139,18 @@ void ChatsManager::setServerDiscoInfo(boost::shared_ptr<DiscoInfo> info) { } } +/** + * This is to be called on connect/disconnect. + */ void ChatsManager::setEnabled(bool enabled) { foreach (JIDChatControllerPair controllerPair, chatControllers_) { controllerPair.second->setEnabled(enabled); } foreach (JIDMUCControllerPair controllerPair, mucControllers_) { controllerPair.second->setEnabled(enabled); + if (enabled) { + controllerPair.second->rejoin(); + } } } @@ -201,9 +207,9 @@ void ChatsManager::rebindControllerJID(const JID& from, const JID& to) { void ChatsManager::handleJoinMUCRequest(const JID &muc, const boost::optional<String>& nickMaybe) { std::map<JID, MUCController*>::iterator it = mucControllers_.find(muc); if (it != mucControllers_.end()) { - //FIXME: What's correct behaviour here? + it->second->rejoin(); } else { - String nick = nickMaybe ? nickMaybe.get() : "Swift user"; + String nick = nickMaybe ? nickMaybe.get() : jid_.getNode(); MUCController* controller = new MUCController(jid_, muc, nick, stanzaChannel_, presenceSender_, iqRouter_, chatWindowFactory_, presenceOracle_, avatarManager_, uiEventStream_, false, timerFactory_, eventController_); mucControllers_[muc] = controller; controller->setAvailableServerFeatures(serverDiscoInfo_); |