Move Controller::openOrCreateDirectChat to NeoChatConnection

This commit is contained in:
Tobias Fella
2023-10-31 09:16:59 +00:00
parent 69d378a17b
commit 33c5b418d2
5 changed files with 22 additions and 22 deletions

View File

@@ -382,20 +382,6 @@ void Controller::joinRoom(const QString &alias)
RoomManager::instance().joinRoom(m_connection, alias, QStringList{knownServer}); RoomManager::instance().joinRoom(m_connection, alias, QStringList{knownServer});
} }
void Controller::openOrCreateDirectChat(User *user)
{
const auto existing = activeConnection()->directChats();
if (existing.contains(user)) {
const auto &room = static_cast<NeoChatRoom *>(activeConnection()->room(existing.value(user)));
if (room) {
RoomManager::instance().enterRoom(room);
return;
}
}
activeConnection()->requestDirectChat(user);
}
QString Controller::formatByteSize(double size, int precision) const QString Controller::formatByteSize(double size, int precision) const
{ {
return QLocale().formattedDataSize(size, precision); return QLocale().formattedDataSize(size, precision);

View File

@@ -126,13 +126,6 @@ public:
*/ */
Q_INVOKABLE void joinRoom(const QString &alias); Q_INVOKABLE void joinRoom(const QString &alias);
/**
* @brief Join a direct chat with the given user.
*
* If a direct chat with the user doesn't exist one is created and then joined.
*/
Q_INVOKABLE void openOrCreateDirectChat(Quotient::User *user);
[[nodiscard]] bool supportSystemTray() const; [[nodiscard]] bool supportSystemTray() const;
/** /**

View File

@@ -220,4 +220,18 @@ void NeoChatConnection::createSpace(const QString &name, const QString &topic, c
}); });
} }
void NeoChatConnection::openOrCreateDirectChat(User *user)
{
const auto existing = directChats();
if (existing.contains(user)) {
const auto room = static_cast<NeoChatRoom *>(this->room(existing.value(user)));
if (room) {
RoomManager::instance().enterRoom(room);
return;
}
}
requestDirectChat(user);
}
#include "moc_neochatconnection.cpp" #include "moc_neochatconnection.cpp"

View File

@@ -61,6 +61,13 @@ public:
*/ */
Q_INVOKABLE void createSpace(const QString &name, const QString &topic, const QString &parent = {}, bool setChildParent = false); Q_INVOKABLE void createSpace(const QString &name, const QString &topic, const QString &parent = {}, bool setChildParent = false);
/**
* @brief Join a direct chat with the given user.
*
* If a direct chat with the user doesn't exist one is created and then joined.
*/
Q_INVOKABLE void openOrCreateDirectChat(Quotient::User *user);
Q_SIGNALS: Q_SIGNALS:
void labelChanged(); void labelChanged();
}; };

View File

@@ -190,7 +190,7 @@ Kirigami.Dialog {
text: i18n("Open a private chat") text: i18n("Open a private chat")
icon.name: "document-send" icon.name: "document-send"
onTriggered: { onTriggered: {
Controller.openOrCreateDirectChat(root.user.object); root.room.connection.openOrCreateDirectChat(root.user.object)
root.close() root.close()
} }
} }