Commit Graph

331 Commits

Author SHA1 Message Date
miruka
7c213a5317 Verify/blacklist devices for all our accounts 2020-07-10 13:14:17 -04:00
miruka
b0e2533bb9 Auto-verify/blacklist accounts within same client 2020-07-10 13:14:17 -04:00
miruka
963b022f3d Reload member device list when they change 2020-07-10 13:14:17 -04:00
miruka
9b43bef935 Add profile/verification UI for room members 2020-07-10 13:14:17 -04:00
miruka
4ccb774411 nio_callbacks: HTML-escape unsafe event values 2020-07-10 13:14:17 -04:00
miruka
4752abf6e5 Add a batch set_fields method to Model 2020-07-10 13:14:17 -04:00
miruka
5476e00b9b Fix missing parentheses in marker update condition 2020-07-10 13:14:17 -04:00
miruka
b47d4d981f Implement session sign out (password auth only) 2020-07-10 13:14:17 -04:00
miruka
8a3d9affaa Fix signing out not cleaning up model data 2020-07-10 13:14:17 -04:00
miruka
d0c4022fa4 Fix plaintext reply source body formatting 2020-07-10 13:14:17 -04:00
vslg
3d4bfa7413 Do not use .keys() 2020-07-10 13:14:17 -04:00
vslg
d2229554a9 Do not replace existing session (#63) 2020-07-10 13:14:17 -04:00
miruka
0a2d274824 Add verified devices indicator to room header 2020-07-10 13:14:17 -04:00
miruka
90a7a3a6cf Add kineticScrollingMaxSpeed setting 2020-07-10 13:14:17 -04:00
miruka
9dc0688557 Render inline images/custom emotes
<img> tags that either have a width and height (needed for QML to render
correctly) or the data-mx-emote attribute (if they have no width/height,
we assume 32x32) will be rendered inline.

QML's support for img tags with remote src URLs seems buggy on Qt 5.15
especially, not working sometimes. We need to download and cache these
images (like done for matrix media events), and use the local path in
the img's src.
2020-07-10 13:14:17 -04:00
miruka
8a31f8a9d9 Fix responding to our own event sending wrong ID 2020-06-27 10:08:27 -04:00
miruka
b9f5ec4b72 Fix parsing user/room ID and alias with dashes
Properly highlight IDs and aliases where the server part contains a
dash, e.g. "@test:example-abc.org".
2020-06-27 06:20:09 -04:00
miruka
fedcc17c44 Correctly clear room local highlights 2020-06-26 16:26:15 -04:00
miruka
0c9474598c Bump version to v0.5.2 2020-06-26 07:06:56 -04:00
miruka
7f66ebb786 Re-add local highlights similar to 0.5.0 2020-06-26 05:59:16 -04:00
miruka
aa8dbce3a7 Re-add local unread "counter" similar to 0.5.0 2020-06-26 05:59:11 -04:00
miruka
edc73c6952 Implement blacklisting from verification key popup 2020-06-26 02:16:00 -04:00
miruka
bcbc356a98 Implement manual key verification popup 2020-06-26 02:09:59 -04:00
miruka
d35173adc3 Correctly handle & warn about key-less devices 2020-06-25 16:10:44 -04:00
miruka
51327d810b Implement device renaming 2020-06-25 12:11:11 -04:00
miruka
476888ca84 Fix guest access event text, always said "allowed" 2020-06-25 10:11:42 -04:00
miruka
da4a5ab5cd Rework HBox-based pages and account settings
- Refactor everything about HBox, and adapt all the pages and popups
  that used it

- Replace HTabContainer by HTabbedBox

- Make boxes swippable

- Make esc presses in boxes click the cancel button

- Make all boxes and popups scrollable when needed

- Replace generic apply button icons in popups

- Fix tab focus for error and invite popups

- Rework (still WIP) the account settings page:
  - Use the standard tabbed design of other pages
  - Ditch the horizontal profile layout, hacky and impossible to extend
  - Add real-time coloring for the display name field

- Implement a device list in account settings (Sessions, still WIP)
2020-06-25 08:49:27 -04:00
miruka
926f77fa91 Add MatrixClient.devices_info() method 2020-06-12 23:09:17 -04:00
miruka
451abfdf25 Support MIRAGE_CACHE_DIR env variable 2020-06-11 21:50:26 -04:00
miruka
e685b0a8b7 Prefer using own account to fetch own profile 2020-06-05 08:11:40 -04:00
miruka
f632b4e332 Bump version to v0.5.1 2020-06-05 06:26:44 -04:00
miruka
b81dea9bc2 Fix KeyError when forgetting a room 2020-06-05 01:39:17 -04:00
miruka
43468c25e3 Update account unread count when forgetting room 2020-06-05 01:16:27 -04:00
miruka
7f72373afe Implement editing & saving room settings 2020-06-03 04:52:33 -04:00
miruka
a6529b040c Fix handling topics containing \n, \t or <text> 2020-06-02 22:03:22 -04:00
miruka
76f0c5626f Separate window urgency hint setting for mentions 2020-06-02 21:42:16 -04:00
miruka
ccd2308427 Fix new added account's order 2020-06-02 21:11:04 -04:00
miruka
241c16932f Immediatly update cached profile after changing it 2020-06-02 21:09:21 -04:00
miruka
5bf1a90242 Separate MatrixClient function to get our profile
Side-effect: don't endlessly retry anymore when getting the profile
fails for some reason
2020-06-02 20:40:44 -04:00
miruka
283d2235dc Don't wait for server to zero unread counters 2020-06-01 18:59:49 -04:00
miruka
835d1c486f Add markRoomReadMsecDelay setting 2020-06-01 18:57:17 -04:00
miruka
f686b96511 Cross-client unread counters & send read receipts 2020-06-01 09:25:09 -04:00
miruka
d2300bf663 Update account total notif/highlight calculation 2020-05-31 19:41:05 -04:00
miruka
3791a08eea Terminology: room mention count → highlight count 2020-05-31 19:13:19 -04:00
miruka
dce3328037 Use new nio server-backed room unread counts 2020-05-31 19:06:25 -04:00
miruka
7b5aa8ffe1 Store room member read markers in model 2020-05-31 00:38:48 -04:00
miruka
160ce2643e Add type hints for all NioCallbacks methods 2020-05-31 00:11:56 -04:00
miruka
ca7a47bc19 Register nio callbacks for any class in nio.events 2020-05-30 23:39:07 -04:00
miruka
b399de6776 Remove account collapse bug workaround
Unable to reproduce the bug where collapsing an account with lots of
rooms corrupts the ListView, did updating to Qt 5.14.2 do something?

With the workaround removed, the 0.2s delay when removing batch of
ListView items (e.g. when filtering) is gone.
2020-05-30 23:08:21 -04:00
miruka
de894ab4bb Protect proxy/filter models with write_lock 2020-05-30 23:08:21 -04:00
miruka
877290fc00 Handle 502 errors when inviting bad user to room 2020-05-30 23:08:21 -04:00
miruka
60fa027c2e Lock models when trying to decrypt events
Trying to deep-copy can result in pickling errors (#50),
write-lock the models instead to avoid "dictionary changed size during
iteration" issues.
2020-05-28 14:16:43 -04:00
miruka
c0118c4e28 Rename Model._write_lock → Model.write_lock 2020-05-28 14:13:14 -04:00
miruka
855672481f Improve some python documentation and add an intro 2020-05-22 17:27:57 -04:00
miruka
c8f3a4937c Fix potential exceptions on AllRooms model __init__
Calling super().__init__ may result in source model items being added,
which needs the self.account and self._collapsed attributes to
already exist.
2020-05-22 16:47:15 -04:00
miruka
562e1431b9 Fix adding account when none were previously saved 2020-05-22 08:48:58 -04:00
miruka
b3b12014ee Workaround collapsing large account ListView bug 2020-05-22 07:31:00 -04:00
miruka
3d40f762ce Don't strip <mx-reply> tags 2020-05-22 02:11:21 -04:00
miruka
6c7335e5db Add keybind to open links in messages
Ctrl+O by default.
Opens externally all links in selecteds, focused or the last
message that has links.
Can't open files (media events) yet.
2020-05-22 00:10:45 -04:00
miruka
bbd845c040 Use kwargs when calling nio.AsyncClient.upload() 2020-05-21 20:52:42 -04:00
miruka
921f75827d Use pdb if remote_pdb isn't installed 2020-05-21 20:50:43 -04:00
miruka
fb975fad71 Remove unused Backend.await_model_item() 2020-05-21 20:46:08 -04:00
miruka
8c9b5267e9 Update and add missing new docstrings 2020-05-21 20:45:15 -04:00
miruka
35e6c1c7eb Make sure to register room on ignored events 2020-05-21 14:37:48 -04:00
miruka
58dd63a850 Traceback if getting profile/server config fails 2020-05-21 14:14:27 -04:00
miruka
b30ce33494 Fix default media_mime for media events 2020-05-21 01:05:31 -04:00
miruka
96e61f15ce Set a more useful minimum size for main pane
144px min for a pane that's still useful.
Also set `collapseSidePanesUnderWindowWidth` config option to `450`
instead of `400` by default now.
2020-05-21 01:04:24 -04:00
miruka
07701ae880 Remove uvloop support, causes issues 2020-05-20 23:56:19 -04:00
miruka
e128471628 Merge branch 'dev' of https://github.com/mirukana/mirage into dev 2020-05-20 23:40:41 -04:00
vslg
6f68f35810 Fix goal is disabling kinetic scrolling 2020-05-20 23:03:36 -03:00
vslg
f72544e3d0 Improve trackpad fix
- Add it to remaining components
- Do not use Timer, as flickDeceleration from
  Flickable is more performant
- Add a setting option for it: useTrackpadFix
2020-05-20 21:09:34 -03:00
miruka
4a91b3d09d Hide unknown events by default (reaction spam) 2020-05-20 11:49:25 -04:00
miruka
42b62377ab Fix past member events affecting actual room state 2020-05-20 09:05:36 -04:00
miruka
7719df0135 Fix message mention link regex
Also stop trying to autolink strings like "$messageId:example.org" in message
text, matrix.tpo message links need a room ID to make sense.
2020-05-20 07:54:40 -04:00
miruka
87fa18fbcd Fix missing event text in plaintext reply fallback 2020-05-20 07:09:24 -04:00
miruka
d1d7bffc8f Add replyToFocusedOrLastMessage keybind (ctrl+Q) 2020-05-20 06:51:26 -04:00
miruka
66f9a17111 No need for origin_*body Event keys
Also fixes lack of original message text when
replying to non-message events.
2020-05-20 06:38:25 -04:00
miruka
fb35a6ec14 Implement replying to event in backend 2020-05-20 06:19:13 -04:00
miruka
63af4be1e2 Defer fetching user profiles for events
Previously, events for which the sender, target (state_key) or remover
was missing from the room members would have their profile fetched
from network when registering the event into models.

This could cause very slow past events loading times for rooms, since
the event registering function (which contained the profile retrieval
directives) is run sequentially event-by-event.

Missing profiles are now lazy-loaded when events come into the
user's view in the QML timeline.
2020-05-20 03:42:40 -04:00
miruka
bc5549195b Improve HTMLProcessor performance (mentions)
- Try to autolink usernames only for outgoing messages
- Improve and add some missing docstrings

Fixes the very slow loading/python "freezing" for rooms with a huge
number of members.
2020-05-20 00:59:30 -04:00
miruka
ef9b880152 Register room members only when needed 2020-05-17 15:29:23 -04:00
miruka
f23a83b0d5 NioCallbacks: add self.models/user_id aliases 2020-05-17 13:57:09 -04:00
miruka
a1b485c039 Add ownMessagesOnLeftAboveWidth setting
Replaces the theme eventList.ownEventsOnRightUnderWidth property.
Can be set to -1 to always keep our own messages on the right.
2020-05-16 14:37:45 -04:00
miruka
60ad7416d9 Add maxMessageCharactersPerLine setting
Can be set to -1 for no maximum width.
2020-05-16 14:37:34 -04:00
miruka
ddf7e724fd Set a loop_sleep_time for sync_forever()
https://github.com/poljar/matrix-nio/pull/132#pullrequestreview-412701098
"If not [set] the client will sync without any sleep between syncs.
This will cause a lot of load on the homeserver and the client."
2020-05-15 20:56:23 -04:00
miruka
dfd7d509a4 Fix item losing its parent model when filtered out 2020-05-15 20:56:23 -04:00
miruka
bbb74b7b90 Remove nio <0.11 asdict workaround
Mirage 0.5.0 requires nio 0.11+
2020-05-15 20:56:23 -04:00
miruka
e006e14b05 Bump version to v0.5.0 2020-05-15 20:56:23 -04:00
miruka
9b5b3a9f06 Support a order key for accounts in config 2020-05-15 20:56:23 -04:00
miruka
fd3fe06d15 Add keybinds to go to account at specific indice 2020-05-15 20:56:23 -04:00
miruka
6f1f82f82d Change unfocus/deselect & debug message keybinds
unfocus/deselect → ctrl+D, because escape conflicts with any text field
that must handle escape

debug message → ctrl+shift+D instead of ctrl+D
2020-05-15 20:56:23 -04:00
miruka
bbb00dd8a0 Let escape presses work properly inside HDrawer
Also add escape to clear member filter when focusing the field, and
clearMemberFilterOnEscape setting.
2020-05-15 20:56:23 -04:00
miruka
d444c800b9 Remove unused showEveryRoom keybind 2020-05-15 20:56:23 -04:00
miruka
974478f576 Add keybinds for previous/next unread/mention room 2020-05-15 20:56:23 -04:00
miruka
eff203032c Python implementation of account collapsing 2020-05-15 20:56:23 -04:00
miruka
4d3c26abd4 Gather both Accounts and Rooms in all_rooms model 2020-05-15 20:56:23 -04:00
miruka
19243ec5a6 Fix serialize_value_for_qml handling of class type 2020-05-15 20:56:23 -04:00
miruka
97fdc214dd No need for special model attributes in Backend 2020-05-15 20:56:23 -04:00
miruka
f4dca1c2c9 Fix SyncId type hint & remove debug prints 2020-05-15 20:56:23 -04:00
miruka
37a9332aed Python filtered models for room members 2020-05-15 20:56:23 -04:00