gui: fix session switch — emit signals after agent ID discovery
Signals were emitted before m_agentId was set, causing QML's onActiveSessionIdChanged handler to call readLog() with an empty agent path. Now: discover agent → emit signals → start streams.
This commit is contained in:
parent
1ceeeeb39c
commit
4f1c1f7222
|
|
@ -45,12 +45,14 @@ void Ollie9pClient::setActiveSessionId(const QString &id)
|
||||||
m_activeSessionId = id;
|
m_activeSessionId = id;
|
||||||
m_agentId.clear();
|
m_agentId.clear();
|
||||||
m_activeState = "idle";
|
m_activeState = "idle";
|
||||||
emit activeSessionIdChanged();
|
|
||||||
emit activeStateChanged();
|
|
||||||
|
|
||||||
if (id.isEmpty()) return;
|
if (id.isEmpty()) {
|
||||||
|
emit activeSessionIdChanged();
|
||||||
|
emit activeStateChanged();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Discover agent ID
|
// Discover agent ID BEFORE emitting signals
|
||||||
QByteArray out = run9p({"ls", "session/" + id + "/agent"});
|
QByteArray out = run9p({"ls", "session/" + id + "/agent"});
|
||||||
QString agents = QString::fromUtf8(out).trimmed();
|
QString agents = QString::fromUtf8(out).trimmed();
|
||||||
if (!agents.isEmpty()) {
|
if (!agents.isEmpty()) {
|
||||||
|
|
@ -59,6 +61,9 @@ void Ollie9pClient::setActiveSessionId(const QString &id)
|
||||||
m_agentId = "0";
|
m_agentId = "0";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
emit activeSessionIdChanged();
|
||||||
|
emit activeStateChanged();
|
||||||
|
|
||||||
startChatStream();
|
startChatStream();
|
||||||
startStateStream();
|
startStateStream();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Reference in New Issue