diff --git a/include/ChatPage.h b/include/ChatPage.h index 799f7a2ed099ce0412ef0f5a85b011196629fcd7..b6c431e40325d9ead1db436c6692049c45491d80 100644 --- a/include/ChatPage.h +++ b/include/ChatPage.h @@ -88,6 +88,7 @@ signals: void syncUI(const mtx::responses::Rooms &rooms); void continueSync(const QString &next_batch); void syncRoomlist(const std::map<QString, RoomInfo> &updates); + void syncTopBar(const std::map<QString, RoomInfo> &updates); private slots: void showUnreadMessageNotification(int count); diff --git a/src/ChatPage.cc b/src/ChatPage.cc index 6040dc66c86f258446a015f4b1b36f44ca2f75a9..9ae860fb8bf6c49e8e35c0dd23aa836820e92602 100644 --- a/src/ChatPage.cc +++ b/src/ChatPage.cc @@ -440,6 +440,11 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent) http::client()->getNotifications(); }); connect(this, &ChatPage::syncRoomlist, room_list_, &RoomList::sync); + connect( + this, &ChatPage::syncTopBar, this, [this](const std::map<QString, RoomInfo> &updates) { + if (updates.find(currentRoom()) != updates.end()) + changeTopRoomInfo(currentRoom()); + }); instance_ = this; @@ -532,7 +537,12 @@ ChatPage::syncCompleted(const mtx::responses::Sync &response) try { cache::client()->saveState(res); emit syncUI(res.rooms); - emit syncRoomlist(cache::client()->roomUpdates(res)); + + auto updates = cache::client()->roomUpdates(res); + + emit syncTopBar(updates); + emit syncRoomlist(updates); + } catch (const lmdb::error &e) { std::cout << "save cache error:" << e.what() << '\n'; // TODO: retry sync.