mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2026-09-27 17:58:47 +00:00
* android, desktop: open group member profile without waiting for the core Tapping a member avatar awaited apiGroupMemberInfo and apiGetGroupMemberCode before the profile modal was created. Both are single-row queries, 1-2 ms when the core is idle, but sendCmd is serialized against everything else the core is doing, so while it is busy - startup, a batch of incoming events, a long database operation - the tap produces nothing at all until the core drains. The modal is now opened first and the two values arrive in state the tap handler creates, so the profile opens at the speed of the UI. The card is shown from the member that is already known at the tap, preferring the model's copy once it is there, so the member no longer has to be written to the model before the modal can be shown. * plans: open member profile without waiting for the core * android, desktop: keep member profile rows in place while they load The security code and the connection stats arrive after the profile is shown, so "Verify security code" and the Servers section appeared under the already visible card and pushed the rows below them down. They are now rendered from the first frame in their final positions, disabled, and enabled in place when the data arrives - SectionItemView already drops the clickable modifier when disabled, so nothing moves. Only what can be decided from the member known at the tap is reserved: "Fix connection" is not, as it applies only while a ratchet needs syncing and a placeholder for it would disappear on nearly every open. * android, desktop: reserve the network status row with the servers The reserved Servers section had three rows where the loaded one has four, so everything below it - "Block member" - moved down by one row when the stats arrived. Network status looks like agent state that cannot be predicted before loading, but connSubStatus returns Just whenever the connection has receiving queues, and that is the same list that decides whether "Receiving via" is rendered. The two rows appear together, so the status row is now reserved with them. --------- Co-authored-by: Evgeny Poberezkin <evgeny@poberezkin.com>