diff --git a/src/conversationmodel.cpp b/src/conversationmodel.cpp index 22fa6936bda12b955a3ec77023be2036848f5229..65747f04d98e7d412a6d40d69f6f7bf012fba974 100644 --- a/src/conversationmodel.cpp +++ b/src/conversationmodel.cpp @@ -1923,17 +1923,6 @@ ConversationModelPimpl::initConversations() conv.push_back(storage::beginConversationWithPeer(db, c.second.profileInfo.uri)); } addConversationWith(conv[0], c.first); - if (!c.second.conversationId.isEmpty()) { - // it is a swarm conversation. - try { - auto& conversation = getConversationForUid(conv[0]).get(); - conversation.mode = conversation::Mode::ONE_TO_ONE; - conversation.needsSyncing = true; - Q_EMIT linked.needsSyncingSet(conversation.uid); - } catch (...) { - continue; - } - } auto convIdx = indexOf(conv[0]); @@ -2521,8 +2510,9 @@ ConversationModelPimpl::slotContactAdded(const QString& contactUri) auto& conversation = getConversationForPeerUri(contactUri).get(); // swarm conversation we update when receive conversation ready signal. if (conversation.isSwarm()) { - QStringList swarms = ConfigurationManager::instance().getConversations(linked.owner.id); - bool needsSyncing = swarms.indexOf(conversation.uid) == -1; + MapStringString details = ConfigurationManager::instance() + .conversationInfos(linked.owner.id, conversation.uid); + bool needsSyncing = details["syncing"] == "true"; if (conversation.needsSyncing != needsSyncing) { conversation.isRequest = false; Q_EMIT linked.dataChanged(indexOf(conversation.uid)); @@ -2770,7 +2760,10 @@ ConversationModelPimpl::addSwarmConversation(const QString& convId) } catch (...) { } } - conversation.needsSyncing = false; + if (details["syncing"] == "true") { + conversation.needsSyncing = true; + Q_EMIT linked.needsSyncingSet(conversation.uid); + } emplaceBackConversation(std::move(conversation)); auto id = ConfigurationManager::instance().loadConversationMessages(linked.owner.id, convId,