diff options
Diffstat (limited to 'Swift/Controllers/Chat')
-rw-r--r-- | Swift/Controllers/Chat/ChatsManager.cpp | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/Swift/Controllers/Chat/ChatsManager.cpp b/Swift/Controllers/Chat/ChatsManager.cpp index d9f80ba..190ca8b 100644 --- a/Swift/Controllers/Chat/ChatsManager.cpp +++ b/Swift/Controllers/Chat/ChatsManager.cpp @@ -1036,62 +1036,63 @@ void ChatsManager::handleWhiteboardSessionRequest(const JID& contact, bool sende chatController->activateChatWindow(); } void ChatsManager::handleWhiteboardStateChange(const JID& contact, const ChatWindow::WhiteboardSessionState state) { ChatController* chatController = getChatControllerOrCreate(contact); chatController->handleWhiteboardStateChange(state); chatController->activateChatWindow(); if (state == ChatWindow::WhiteboardAccepted) { boost::filesystem::path path; JID bareJID = contact.toBare(); if (avatarManager_) { path = avatarManager_->getAvatarPath(bareJID); } ChatListWindow::Chat chat(bareJID, nickResolver_->jidToNick(bareJID), "", 0, StatusShow::None, path, false); chatListWindow_->addWhiteboardSession(chat); } else { chatListWindow_->removeWhiteboardSession(contact.toBare()); } } void ChatsManager::handleRecentActivated(const ChatListWindow::Chat& chat) { if (chat.isMUC && !chat.impromptuJIDs.empty()) { typedef std::pair<std::string, JID> StringJIDPair; std::vector<JID> inviteJIDs; for (StringJIDPair pair : chat.impromptuJIDs) { inviteJIDs.push_back(pair.second); } uiEventStream_->send(std::make_shared<CreateImpromptuMUCUIEvent>(inviteJIDs, chat.jid, "")); } else if (chat.isMUC) { + bool isImpromptu = (!chat.inviteesNames.empty() || !chat.impromptuJIDs.empty()); /* FIXME: This means that recents requiring passwords will just flat-out not work */ - uiEventStream_->send(std::make_shared<JoinMUCUIEvent>(chat.jid, boost::optional<std::string>(), chat.nick)); + uiEventStream_->send(std::make_shared<JoinMUCUIEvent>(chat.jid, boost::optional<std::string>(), chat.nick, false, false, isImpromptu)); } else { uiEventStream_->send(std::make_shared<RequestChatUIEvent>(chat.jid)); } } void ChatsManager::handleLocalServiceFound(const JID& service, std::shared_ptr<DiscoInfo> info) { for (DiscoInfo::Identity identity : info->getIdentities()) { if ((identity.getCategory() == "directory" && identity.getType() == "chatroom") || (identity.getCategory() == "conference" && identity.getType() == "text")) { localMUCServiceJID_ = service; localMUCServiceFinderWalker_->endWalk(); SWIFT_LOG(debug) << "Use following MUC service for impromptu chats: " << localMUCServiceJID_ << std::endl; break; } } } void ChatsManager::handleLocalServiceWalkFinished() { bool impromptuMUCSupported = !localMUCServiceJID_.toString().empty(); for (JIDChatControllerPair controllerPair : chatControllers_) { controllerPair.second->setCanStartImpromptuChats(impromptuMUCSupported); } for (JIDMUCControllerPair controllerPair : mucControllers_) { controllerPair.second->setCanStartImpromptuChats(impromptuMUCSupported); } onImpromptuMUCServiceDiscovered(impromptuMUCSupported); } |