Example #1
0
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{};
}
Example #2
0
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(", ")));
}