Is now strictly about setting up asyncio/uvloop and providing the
functions for QML to interact with it and call backend coroutines.
The appdirs attribute is moved to Backend.
When a .js module is used, every single file that imports it creates
its own duplicated environment in memory for that module.
Instead, use a simple QtObject with all the functions, and declare it in
Window.qml so that it is available to all children everywhere in the
app.
- Fix the ListView not auto-scrolling like it should when message
delegates changed height, such as when images were loaded
- Fix messed up delegate positions overlapping each others when
movements happen
- Fix previous/nextItem binding broken due to imperative modification
- Fix "messageBodyWidth" binding loop
When a message image is clicked in an encrypted room, the full file will
be download (no GUI indication for now, just a print in terminal) and
opened when ready.
Before downloading, copying the image address via right click will put
the full image mxc:// URL in clipboard. After downloading, it will be
the local downloaded image path instead.
- Messages should now always be in the order they were sent in when
sending from multiple accounts to a same slow room
- Fixed dead lock that occured when sending a message
from account A, then from account B, then from account A, in a
room slow enough so that all of them would be in local echo transition
at the same time.
When selecting a random client for get_profile(), thumbnail(), or
download() requests, ignore those that aren't currently syncing.
Also warn if we still can't find a healthy client after 30s.