Summary
This PR addresses inconsistencies between SharedSpaceManager and WindowStackManager when handling the “Jump to location” action in different contexts. Currently, clicking “Jump to location” from the friends panel (managed by SharedSpaceManager) hides and shows UI elements differently than clicking the same option from a friend’s passport (managed by WindowStackManager). As a result, we’ve been forced to introduce a workaround to ensure the chat window is shown correctly in one scenario but not the other.
#4317
Problem
We constantly face inconsistent behaviour with the Shared Space Manager, which we try to trick, bend and patch with local success at best.
SharedSpaceManager is poorly designed and consists of disconnected, hardcoded, unruled pieces.
There is no design behind the whole system, nor is it impossible to infer behavior from the code. It's painful to debug and find where a real issue is.
We keep building on top of that with no clear expectations. Like introducing a second layer ChatMainSharedAreaController which groups Chat and VoiceChat.
Solution
Gather requirements.
Write down the rules.
Develop the design first: it should be clear, fairly simple, extensible, and easy to follow. Avoid fragmentation and logic scattering.
Summary
This PR addresses inconsistencies between SharedSpaceManager and WindowStackManager when handling the “Jump to location” action in different contexts. Currently, clicking “Jump to location” from the friends panel (managed by SharedSpaceManager) hides and shows UI elements differently than clicking the same option from a friend’s passport (managed by WindowStackManager). As a result, we’ve been forced to introduce a workaround to ensure the chat window is shown correctly in one scenario but not the other.
#4317
Problem
We constantly face inconsistent behaviour with the Shared Space Manager, which we try to trick, bend and patch with local success at best.
SharedSpaceManageris poorly designed and consists of disconnected, hardcoded, unruled pieces.There is no design behind the whole system, nor is it impossible to infer behavior from the code. It's painful to debug and find where a real issue is.
We keep building on top of that with no clear expectations. Like introducing a second layer
ChatMainSharedAreaControllerwhich groupsChatandVoiceChat.Solution
Gather requirements.
Write down the rules.
Develop the design first: it should be clear, fairly simple, extensible, and easy to follow. Avoid fragmentation and logic scattering.