Jid JabberResourceService::bestChatJid(const Chat &chat) const { if (!chat) return Jid{}; auto chatType = m_chatTypeManager->chatType(chat.type()); if (!chatType) return Jid{}; if (chatType->name() == "Contact") { Q_ASSERT(1 == chat.contacts().size()); return bestContactJid(chat.contacts().toContact()); } if (chatType->name() == "Room") { auto details = qobject_cast<ChatDetailsRoom *>(chat.details()); Q_ASSERT(details); return Jid::parse(details->room()); } return Jid{}; }
QString HistorySqlStorage::chatWhere(const Chat &chat) { if (!chat) return QLatin1String("false"); ChatDetails *details = chat.details(); if (!details) return QLatin1String("false"); ChatDetailsAggregate *aggregate = qobject_cast<ChatDetailsAggregate *>(details); if (!aggregate) return QString("chat = '%1'").arg(chat.uuid().toString()); QStringList uuids; foreach (const Chat &aggregatedChat, aggregate->chats()) uuids.append(QString("'%1'").arg(aggregatedChat.uuid().toString())); return QString("chat IN (%1)").arg(uuids.join(QLatin1String(", "))); }