Commit Graph

383 Commits

Author SHA1 Message Date
miruka
8ab4ce8ad7 Bump version to v0.6.1 2020-08-21 12:10:22 -04:00
miruka
339341da68 Disable new scrollbar auto-show behavior for now
There are still some usability issues to fix with it
2020-08-21 12:10:18 -04:00
miruka
e0e92152d0 Fix infinite account spinner when logging in twice 2020-08-21 05:33:57 -04:00
miruka
063f9d2b1d Only mention tab-completed usernames 2020-08-21 01:21:51 -04:00
miruka
5ba669444d Add basic user autocompletion UI 2020-08-21 01:21:10 -04:00
miruka
f648807730 Remove unused Device model item 2020-08-21 01:19:18 -04:00
miruka
21fbe7a96b Show scrollbars for a few seconds at first
Lets the user know that there's content to scroll.
2020-08-21 01:19:18 -04:00
miruka
11def5c99f Mozilla server is now in anchel.nl public list 2020-08-21 01:19:17 -04:00
miruka
05f2c20924 Remove leftover pdb call in MatrixClient._send() 2020-08-21 01:18:44 -04:00
miruka
4760ccac5e Filter servers also by their name 2020-08-19 06:37:26 -04:00
miruka
ab390704eb Use homeserver URL field also as a filter field 2020-08-19 04:39:50 -04:00
miruka
16970d5e56 Auto-detect homeserver scheme:// 2020-08-19 02:14:46 -04:00
miruka
2fa8b2c5f9 Add a public server list to the initial login page 2020-08-19 01:13:34 -04:00
miruka
09ae0d7776 Server discovery: no need to recreate a client 2020-07-30 22:59:24 -04:00
miruka
758edd8a6a Upload sync filter & use filter ID for syncs
rather than passing an entire filter dict for every single syncs.
This shortens the request URL and prevents troubles with some servers
that have an absurdly low max URL length (e.g. halogen.city).
2020-07-30 22:53:43 -04:00
miruka
03f9ec94ff Fix autolinking user IDs including ; or < 2020-07-29 02:00:49 -04:00
miruka
d127ad978c Correctly handle initial sync member events
Previously, member events in initial syncs (unless user had "hide member
events" and "hide profile events" set to false in their config) were
completely discarded with the help of a sync filter, instead of simply
being hidden like events loaded from room backfilling.

This was done due to the common case of rooms getting only
userconfig-ignored/hidden events on startup (especially with the
low number of initial events requested for lazy initial sync),
and thus having nothing to show as "last message" in
the room list (room delegate subtitles).

Other problems resulted from this, like missing join/leave events
when the config was set to hide profile events but not other
member events, and the "Members not synced" (#54) in encrypted room
with recent discarded member events.

The discarding filter is no longer used. Instead, if a room in the room
list has no visible "last message" and is currently visible to the user,
messages will be lazily fetched until we find something adequate or the
room goes out of view.
2020-07-27 03:59:41 -04:00
miruka
f1f24f5121 Don't log "unknown member event" warnings
These just mean we haven't noticed any change in a profile event, and
haven't been of any use.
2020-07-27 02:43:11 -04:00
miruka
6d8980bcb3 Use nio's new restore_login() method 2020-07-27 00:15:52 -04:00
miruka
e611f89fe3 Fix/update Backend._do_login() docstring 2020-07-26 23:40:15 -04:00
miruka
ddee50f28a Show a shorter URL to open for SSO
Show "http://127.0.0.1:port", which will automatically redirect to the
long ugly homeserver's URL.
2020-07-26 20:40:55 -04:00
miruka
157ea2ffb2 Add support for SSO authentication 2020-07-26 20:34:06 -04:00
miruka
d7907db547 Ask for server URL before showing sign in box
Contact the server's .well-known API before anything to get
available login flows instead of blindly assuming it will be
m.login.password, and to get the server's real URL instead of
requiring users to remember that e.g. it's "chat.privacytools.io"
and not just "privacytools.io" despite user IDs making it look like so.

The server field will also now remember the last accepted URL.
2020-07-24 02:36:24 -04:00
miruka
b94d1e8168 Fix possible race condition when writing user file
While a user file write operation #1 was queued in the _write_loop,
it was possible meanwhile for another function to read the file
(the current old version on disk), add some data to it,
add submit the write (operation #2).
The modifications from operatio #1 were then completly lost at best.
2020-07-24 01:01:37 -04:00
miruka
3a7ad5859f qml_bridge: remove old signal code 2020-07-24 00:22:51 -04:00
miruka
d00b29f076 Add media.openExternallyOnClick setting
Makes clicking on image open them externally and middle-clicking open
them in the mirage image viewer, the reverse of the default behavior.
2020-07-22 00:14:15 -04:00
miruka
0088fadddd Compress images in a separate process
Compression with Pillow can take long, especially with large
clipboard PNG images.
Doing this in a separate process prevents the async event loop from
getting blocked, and allows multiple compression operations to run in
parallel.
2020-07-21 23:35:16 -04:00
miruka
286b7a951a Disable optim. when recompressing clipboard PNG
Far too slow for big (10MB+) PNG
2020-07-21 23:09:07 -04:00
miruka
1c218c82ec Ignore reply header links for keyboard open binds
Don't open the multiple links contained in the "In reply to <user>"
text of fallback replies when using keyboard shortcuts to open
links/media.
2020-07-21 22:46:05 -04:00
miruka
8c1d7a868e Catch 403 error when getting offline user presence
It's possible to get a MatrixForbidden error when trying to retrieve a
offline room member's presence, if that member actually left the room
but the server hasn't yet sent the update.
2020-07-21 21:02:28 -04:00
miruka
3435dbc2f8 Add copyFilesLocalPath keybind 2020-07-20 23:28:07 -04:00
miruka
99017adc1d Model item events: add a media_http_url field 2020-07-20 23:09:28 -04:00
miruka
55e22ea948 Add openMessagesLinksOrFilesExternally keybind
This required us to set the media downloaded local path on events
entirely from python instead of simply lazy-fetching them when needed
from QML, due to pyotherside's async nature and files that must be open
in a certain order.
2020-07-20 23:07:52 -04:00
miruka
acd02a67a0 Add image viewer keybinds 2020-07-20 21:34:00 -04:00
miruka
a8e1ece1ea Add buttons to image viewer 2020-07-20 19:39:31 -04:00
miruka
e62d99c3cc Stricter requirements to consider a client healthy
A healthy client must not only have a sync task running, but also have
finished its initial sync and have been succesful in its last sync
attempt.

The previous weak requirement caused this issue:
Have two clients, one on a failing server, and try to fetch a media,
thumbnail or profile: since these functions don't need auth, any
healthy client is picked to do the request, but the previous
requirement made it possible to pick the failing client.
2020-07-20 16:03:46 -04:00
miruka
30ce271ebc Real "copy URL" & "copy path" context menu entries
Replace the poorly implemented 2-in-1 "copy address" media event
menu option with:

- Copy <mediaType> address: visible for non-encrypted media, always
  copies the http URL

- Copy local path: always visible for already downloaded media, even if
  they were downloaded before mirage was started
2020-07-20 00:22:12 -04:00
miruka
8a73e65254 Rename openMessagesLinks keybind (...OrFiles) 2020-07-19 20:17:52 -04:00
miruka
e2c6f0e64c Don't cancel upload if server max size is unknown 2020-07-19 16:24:16 -04:00
miruka
6b1a5a46e6 Fix upload for servers not returning max size 2020-07-19 15:37:05 -04:00
miruka
7595c522c4 Fix image upload without thumbnail 2020-07-19 15:34:06 -04:00
miruka
26fe8c4a09 Include decryption dicts in m.image local echoes
Fixes local echoes for images resulting in 404s, related to the
retry fix in the previous commit.
2020-07-19 15:00:23 -04:00
miruka
f1055ce5b9 Fix loading m.image events in encrypted rooms
Fix bug introduced in 11fb32:

When loading an encrypted thumbnail, QML lacks the decryption dict for
half a second at first.

When calling python like this, python calls the wrong matrix API
for fetching the encrypted thumbnail, and the added retry code
would be forever stuck.

The retry code has been moved to QML, and now works for all HImage.
2020-07-19 14:49:41 -04:00
miruka
11fb32bff6 Retry downloading media if they fail with 404/500+
Trying to fetch a media right after it was uploaded can sometimes lead
to a  404
2020-07-18 22:26:23 -04:00
miruka
1b5a09c052 Move Presence class to its own python file
It's not a ModelItem
2020-07-18 18:33:57 -04:00
miruka
692c78f398 Optimize presence-related model item field changes 2020-07-18 18:19:56 -04:00
miruka
4b215f7ddb Bump version to v0.6.0 2020-07-17 08:10:57 -04:00
vslg
9b9cbcb23c Fix unable to unset status_msg from other clients 2020-07-17 08:09:52 -04:00
miruka
46fa68e9ca Reduce "termined" logging when closing app 2020-07-17 07:31:24 -04:00
miruka
d6e904ca4c Fix indentation for some backend.py lines 2020-07-17 01:30:51 -04:00