fix: refresh session list on rename via reply callback and signal

This commit is contained in:
Levi Neely 2026-07-08 19:27:31 +02:00
parent 3b42c9ee25
commit 5ad224dfae
2 changed files with 24 additions and 5 deletions

View File

@ -44,6 +44,8 @@ OllieDBusClient::OllieDBusClient(QObject *parent)
this, SLOT(onSessionCreated(QString)));
bus.connect(SERVICE, OBJ_PATH, IFACE, "SessionKilled",
this, SLOT(onSessionKilled(QString)));
bus.connect(SERVICE, OBJ_PATH, IFACE, "SessionRenamed",
this, SLOT(onSessionRenamed(QString,QString)));
bus.connect(SERVICE, OBJ_PATH, IFACE, "StateChanged",
this, SLOT(onStateChanged(QString,QString)));
bus.connect(SERVICE, OBJ_PATH, IFACE, "ChatUpdated",
@ -244,11 +246,18 @@ bool OllieDBusClient::killSession(const QString &sessionId)
bool OllieDBusClient::renameSession(const QString &sessionId, const QString &newName)
{
if (sessionId == m_activeSessionId) {
m_activeSessionId = newName;
emit activeSessionIdChanged();
}
m_iface->asyncCall("RenameSession", sessionId, newName);
QDBusPendingCall pending = m_iface->asyncCall("RenameSession", sessionId, newName);
auto *watcher = new QDBusPendingCallWatcher(pending, this);
connect(watcher, &QDBusPendingCallWatcher::finished, this, [this, sessionId, newName](QDBusPendingCallWatcher *w) {
w->deleteLater();
QDBusPendingReply<bool> reply = *w;
if (reply.isError() || !reply.value()) return;
if (m_activeSessionId == sessionId) {
m_activeSessionId = newName;
emit activeSessionIdChanged();
}
refreshSessions();
});
return true;
}
@ -288,6 +297,15 @@ void OllieDBusClient::onSessionKilled(const QString &session_id)
refreshSessions();
}
void OllieDBusClient::onSessionRenamed(const QString &old_id, const QString &new_id)
{
if (m_activeSessionId == old_id) {
m_activeSessionId = new_id;
emit activeSessionIdChanged();
}
refreshSessions();
}
void OllieDBusClient::onStateChanged(const QString &session_id, const QString &new_state)
{
if (session_id == m_activeSessionId) {

View File

@ -55,6 +55,7 @@ signals:
private slots:
void onSessionCreated(const QString &session_id);
void onSessionKilled(const QString &session_id);
void onSessionRenamed(const QString &old_id, const QString &new_id);
void onStateChanged(const QString &session_id, const QString &new_state);
void onChatUpdated(const QString &session_id, qlonglong offset, const QString &new_text);