Improve reliability of restoring the last space and room (again)
I found that 50% of the time, NeoChat won't restore the last space but instead get stuck at Home. Even worse, it will overwrite Home's last opened room with the one from the space - resulting in really buggy behavior. The reason why this happens is partly due to the space hierarchy cache (I think) but that's not the real problem in my opinion. During setCurrentSpace, we needlessly update the last space & room config despite us being the ones already reading it. In addition to that I also refactored this code a bit to be more consolidated and readable.
This commit is contained in:
@@ -340,6 +340,11 @@ Q_SIGNALS:
|
||||
|
||||
void currentSpaceChanged();
|
||||
|
||||
protected:
|
||||
bool m_dontUpdateLastRoom = false; // Don't set directly, use LastRoomBlocker.
|
||||
|
||||
friend class LastRoomBlocker;
|
||||
|
||||
private:
|
||||
bool m_isMobile = false;
|
||||
|
||||
@@ -385,8 +390,13 @@ private:
|
||||
*/
|
||||
QString findSpaceIdForCurrentRoom() const;
|
||||
|
||||
// Space ID, "DM", or empty string
|
||||
void setCurrentSpace(const QString &spaceId, bool setRoom = true);
|
||||
/**
|
||||
* @brief Sets the current space.
|
||||
*
|
||||
* @param spaceId The ID of the space, "DM" for direct messages or an empty string for Home.
|
||||
* @param goToLastUsedRoom If true, we will navigate to the last opened room in this space.
|
||||
*/
|
||||
void setCurrentSpace(const QString &spaceId, bool goToLastUsedRoom = true);
|
||||
|
||||
/**
|
||||
* @brief Resolve a user URI.
|
||||
|
||||
Reference in New Issue
Block a user