Commit graph

279 commits

Author SHA1 Message Date
Nicolas Werner
110fef5c68
Request keys when opening a room for the first time 2021-08-14 02:41:34 +02:00
Nicolas Werner
13633c7644
Ensure device signatures always get verified on device update 2021-08-14 02:06:48 +02:00
Nicolas Werner
9bad584931
Show verification status in memberlist 2021-08-13 23:58:26 +02:00
Nicolas Werner
18ea01e198
Show if there are unverified devices in a room
Also fixes some issues where nested transactions will poison the
verification cache.
2021-08-13 23:19:54 +02:00
Nicolas Werner
dbea031a86
Fix potential crash when trying to read room info too early 2021-08-11 00:21:24 +02:00
Nicolas Werner
71290e208d
Enable insecure fallback for secret storage 2021-08-08 18:57:38 +02:00
Nicolas Werner
ad57a336dc
Breaking: Change secret names and fix bug when storing secrets 2021-08-08 18:38:05 +02:00
Nicolas Werner
b73bd2859c
Protect against replay attacks 2021-08-07 23:54:35 +02:00
Nicolas Werner
e5a6b2b6ef
Allow creating new packs 2021-08-06 04:31:53 +02:00
Nicolas Werner
a57a15a2e0
Basic sticker pack editor 2021-08-06 04:31:53 +02:00
Nicolas Werner
25e7a985b8
Add option to only send encrypted messages to verified devices
fixes #636
2021-08-01 00:59:46 +02:00
Nicolas Werner
760f675792
Ensure the encrypted rooms db is always created 2021-07-31 17:59:03 +02:00
Nicolas Werner
570d00b000
Fix crash when storing secrets
Nested QEventLoops are scary. Ultimately we shouldn't use them, but I
have no better solution right now.

fixes #656
2021-07-25 17:07:10 +02:00
Nicolas Werner
eafbab6ae1
Add menu to enable or disable stickers globally 2021-07-23 17:43:17 +02:00
Nicolas Werner
56b44a85b5
Fix unused state key when iterating room stickers 2021-07-19 03:29:48 +02:00
Nicolas Werner
9d5ba4f681
Move sticker parsing and enable room stickers 2021-07-19 03:02:30 +02:00
Nicolas Werner
8a1666bc88
Basic sticker support 2021-07-19 01:28:07 +02:00
Nicolas Werner
3f0aa13cb6
Share historical keys
We share all keys with our devices and ones created by us to other
users.
2021-07-17 02:14:44 +02:00
Nicolas Werner
9fadd14871
Store megolm session data in separate database 2021-07-17 01:27:37 +02:00
Nicolas Werner
d81e3f94e7
Try to fix crash in setCurrentIndex
fixes #607
2021-07-13 02:45:03 +02:00
Nicolas Werner
b064eb34aa
Fix lint 2021-07-10 16:14:24 +02:00
Nicolas Werner
c755d54243
Remove db bottleneck by caching ro txn for 100 requests 2021-07-10 16:12:38 +02:00
Nicolas Werner
f23fd5f822
Fix a few embarrassing bugs with device list updates 2021-07-06 11:39:29 +02:00
Nicolas Werner
5b016cbc68
Remove dead code to calculate last message 2021-07-01 12:45:47 +02:00
Nicolas Werner
884fb74d2d
Add a basic 'Space page' 2021-06-25 11:34:19 +02:00
Nicolas Werner
6bfa6c4c79
Allow filtering by space 2021-06-25 11:34:18 +02:00
Nicolas Werner
12ce7686ce
Show some spaces in the community sidebar 2021-06-25 11:34:17 +02:00
Alexander Bantyev
9f798e76ed
Allow editing unsent messages
As of 0db4d71ec2 (Prevent edits of
unsent messages), messages that are edits of (or replies to) unsent
messages were not allowed. This change was made because otherwise
the edits were discarded due to use of txnid rather than mxid in the
"m.relates_to" object. Remove this restriction and fix the issue by
replacing txnid with mxid in all related events when the message is
sent (and we obtain mxid from the server).
2021-06-18 16:38:55 +03:00
Nicolas Werner
e6878ee298
Don't read avatarUrl from local profile, if no global avatar is set 2021-06-12 16:05:45 +02:00
Nicolas Werner
d8c0d4874b
Render community items 2021-06-11 13:12:43 +02:00
Nicolas Werner
c290b0747f
Reenable invites 2021-05-24 14:04:07 +02:00
Nicolas Werner
f2bc184550
Fix device list not showing up and UserProfile blocking the window 2021-05-22 14:31:38 +02:00
Nicolas Werner
567fe81ad7
Basic header and footer of room list 2021-05-15 13:05:55 +02:00
Nicolas Werner
2df4c532ed
Add TOFU (Trust On First Use) mode to encryption 2021-05-07 17:01:57 +02:00
Nicolas Werner
0d0709ccd3
Show verification status next to messages 2021-05-07 17:01:57 +02:00
Nicolas Werner
1936749ff5
Fix keys not being reshared to the same devices, that already got them, if the message got lost 2021-04-20 19:52:23 +02:00
Nicolas Werner
20c1ca2aae
Fix a a session with a higher minimum index being able to overwrite an older one 2021-04-20 14:19:07 +02:00
Nicolas Werner
1b0af04cc8
Prevent warning on empty user requests 2021-04-18 21:53:36 +02:00
Nicolas Werner
8108d98fa7
Store state events with state keys 2021-04-13 14:36:37 +02:00
Nicolas Werner
c8a547630b
Fix a weird edge case with persisted empty event ids
No idea, how that happened and where it came from
2021-04-08 12:56:31 +02:00
Nicolas Werner
e5d75c814b
Clean up notification code a bit 2021-03-17 19:18:07 +01:00
Nicolas Werner
86766b739d
Store all state events 2021-03-15 17:11:02 +01:00
Nicolas Werner
569ea5b5f4
Rotate session keys properly 2021-03-15 16:24:01 +01:00
Nicolas Werner
6ad4065de4
Fix a few db access crashes 2021-03-12 17:14:18 +01:00
DeepBlueV7.X
56c44d0454
Merge pull request #505 from Nheko-Reborn/license-headers
License headers
2021-03-05 01:04:36 +00:00
Joseph Donofry
4b12b53133
Fix linting 2021-03-04 19:11:08 -05:00
Nicolas Werner
a6f0d2ea7d
Update license headers 2021-03-05 01:04:07 +01:00
Joseph Donofry
87bf761dc2
Properly format matrix errors in spdlog statements 2021-03-04 18:56:25 -05:00
Nicolas Werner
d28a620f42
Add comment to mark db keys as such 2021-03-03 00:08:33 +01:00
Nicolas Werner
1b0abe97f9
Update to new lmdbxx version 2021-03-03 00:01:17 +01:00
Nicolas Werner
1f373479b8
Fix unaligned reads 2021-02-25 15:15:59 +01:00
Nicolas Werner
6d678a108f Use fully read marker and fix stuck read marker with edits 2021-02-10 02:37:47 +01:00
Nicolas Werner
bdb6e6b79e Fix stuck notifications because of edits
Does not fix the read status yet, for that we need to compare read
receipts for all events after the last visible event.
2021-02-10 01:03:20 +01:00
Nicolas Werner
d6504812c7 Render edits 2021-02-09 20:22:02 +01:00
Nicolas Werner
2e77a1554f Switch to new relations format 2021-02-09 20:22:02 +01:00
Nicolas Werner
0b5269bfc0 Reload the timeline after key import 2021-01-25 17:06:27 +01:00
Nicolas Werner
6313ecb7d4 Treat empty secrets as no secret 2021-01-25 15:28:35 +01:00
rnhmjoj
0e628290af
Write database to the DataLocation 2021-01-24 00:40:19 +01:00
Nicolas Werner
1c98426536 Fix tags 2021-01-22 03:18:36 +01:00
Nicolas Werner
5105d2cb96 Fix crash when persisting null relations 2021-01-19 14:21:04 +01:00
Nicolas Werner
2a19783f99 Fix timeline becoming corrupted on backfill
Fixes #273
2021-01-12 00:02:18 +01:00
Nicolas Werner
39f9b7d90a Handle matrix scheme
Link opening only works on Linux for now.

See https://github.com/matrix-org/matrix-doc/pull/2312
2021-01-10 22:41:56 +01:00
Nicolas Werner
3a41bb9fff Fix typing notifications flickering sometimes 2021-01-05 22:38:21 +01:00
Nicolas Werner
391b1b3285 Fix #359
Actually store the login details under the selected profile
2020-12-27 22:56:54 +01:00
Nicolas Werner
525b319a94 lint 2020-12-25 19:20:25 +01:00
DeepBlueV7.X
ea5f6ca0f4
Merge pull request #358 from Nheko-Reborn/windows-fixes
Windows fixes
2020-12-25 05:59:18 +01:00
Nicolas Werner
904cafcd39 lint 2020-12-25 04:11:47 +01:00
Loren Burkholder
af52ceb387 Remove unused variable 2020-12-24 21:16:46 -05:00
LorenDB
53f45bdb1c Switch profile code to a more flexible method
This introduces a new version of SingleApplication as well.
2020-12-24 21:16:46 -05:00
Nicolas Werner
01e38d12ed Fix some compiler warnings 2020-12-25 00:08:06 +00:00
Nicolas Werner
15d8eb2b8b Update deps for keychain 2020-12-18 03:53:57 +01:00
Nicolas Werner
7b46aa2a6e Store secrets in keychain 2020-12-16 22:10:09 +01:00
Nicolas Werner
65a4c85ed4 Don't sync db on every sync
This fixes some lag, when Nheko is running, which could affect Nheko and
even other applications by excessively calling fsync. This should be
fine, since all filesystems seem to guarantee order and in most cases,
the modified pages are still written. In the worst case we should only
lose the last /sync results or similar.
2020-12-13 01:29:35 +01:00
Nicolas Werner
2ce129e6b6 Properly share and rotate sessions on member and device changes 2020-11-30 01:54:53 +01:00
Nicolas Werner
2290ebcf78 Remove outbound session storage 2020-11-30 01:54:53 +01:00
Nicolas Werner
c24f9a22a5 Load sessions lazily from db 2020-11-30 01:54:53 +01:00
Nicolas Werner
90cae987fd Bump max dbs 2020-11-26 00:19:09 +01:00
Nicolas Werner
c31b9e2793 Fix race when reading members from db 2020-11-25 23:54:25 +01:00
Nicolas Werner
7cda502edd Add some db logging and clean up avatar urls a bit 2020-11-25 23:54:25 +01:00
Nicolas Werner
bc93f24a22 Remove redundant user search suggestion code 2020-11-25 19:05:12 +01:00
Nicolas Werner
70f35de449 Don't pass around empty timeline 2020-10-28 13:06:28 +01:00
Nicolas Werner
12fff7408e Optimize build 2020-10-27 17:45:28 +01:00
Nicolas Werner
3d7bb22df4 Fix login 2020-10-24 18:07:14 +02:00
Nicolas Werner
4797b9fa96 Fix infinite pagination properly now. 2020-10-23 19:42:23 +02:00
Nicolas Werner
66445c507c Trade CPU usage for 30MB of members in RAM 2020-10-22 20:49:15 +02:00
Nicolas Werner
aa9b453f81 Store timestamp with olm sessions 2020-10-20 13:46:05 +02:00
Nicolas Werner
62d0bdbb77 Fix small typo in robustness logic 2020-10-13 00:14:28 +02:00
Joseph Donofry
31c6857f19
Add some try...catch logic around read-only databases so nheko won't crash if the db doesn't exist 2020-10-09 12:32:21 -04:00
Nicolas Werner
56ba7de501 Fix unused variable warnings on old compilers 2020-10-08 18:49:35 +02:00
Nicolas Werner
cd43147b77 Implement signature upload for own master key 2020-10-08 16:17:38 +02:00
Nicolas Werner
7b6fab3373 Calculate verification status from cross-signing sigs and update dynamically 2020-10-08 00:20:12 +02:00
Nicolas Werner
2a79cd2b6b Don't fail on missing key for a device and /rotate-megolm-session command 2020-10-03 18:38:28 +02:00
Nicolas Werner
600df6d2ec Fix fetching inexistent batch tokens 2020-10-02 16:39:20 +02:00
Nicolas Werner
94690ebd4c Clean up verification and key cache a bit 2020-10-02 01:14:42 +02:00
Nicolas Werner
4802c34009 Merge remote-tracking branch 'origin/master' into cross-signing 2020-09-24 21:36:43 +02:00
Nicolas Werner
54db9c89ed Simplify outbound session setup
Don't send inbound session to self and claim and send all keys at once.
2020-09-20 23:07:02 +02:00
Nicolas Werner
c5f93efcd3 Actually use room account data 2020-09-16 23:49:17 +02:00
CH Chethan Reddy
8eb74daf76 Split qml part of Device Verification 2020-09-14 17:27:49 +05:30
Nicolas Werner
c4e4938d35 Save account data and allow hiding events via account data 2020-09-08 16:21:55 +02:00
Chethan2k1
e8eeb480d5 Fix Wrong Emojis Issue in Room Verification 2020-09-04 12:02:24 +05:30
CH Chethan Reddy
b174bd9380 Merge remote-tracking branch 'upstream/master' into device-verification 2020-08-30 22:27:14 +05:30
Nicolas Werner
3df4bde032 Add some log messages, that migrations are in progress 2020-08-25 23:12:01 +02:00
Nicolas Werner
9f79b85579 Speedup db a bit, but loose some crash resiliency
The loss in durability shouldn't matter, if we can just receive the same
events again after a restart
2020-08-25 23:05:31 +02:00
CH Chethan Reddy
1d299951b6 Cache Fix 2020-08-24 13:58:00 +05:30
Nicolas Werner
7f7108161e Hide CallCandidates again in new store 2020-08-17 23:30:36 +02:00
Nicolas Werner
de7ec4d2b3 Merge remote-tracking branch 'origin/master' into new-event-store
Conflicts:
	CMakeLists.txt
	io.github.NhekoReborn.Nheko.json
	src/Cache.cpp
	src/timeline/TimelineModel.cpp
	src/timeline/TimelineModel.h
	src/timeline/TimelineViewManager.cpp
2020-08-17 20:40:33 +02:00
Nicolas Werner
14a0aac748 Add /clear-timeline command 2020-08-09 23:36:47 +02:00
CH Chethan Reddy
1fcd768f88 Adding Room Key Verification Stuff 2020-07-30 22:10:27 +05:30
CH Chethan Reddy
a2979c2df1 Updating keys of outdated encrypted users 2020-07-30 22:10:27 +05:30
CH Chethan Reddy
ac1fbbb69f Some issue with UserProfile 2020-07-30 22:10:27 +05:30
CH Chethan Reddy
6fae36abc4 [WIP] Add Caching for users 2020-07-30 22:10:27 +05:30
Nicolas Werner
7f3d97517f Fix double free by closing cursor at the right time 2020-07-30 18:13:19 +02:00
Nicolas Werner
720bb164f7 Fix migration (hopefully) 2020-07-26 19:04:36 +02:00
Nicolas Werner
b294430fe5 Return to redacted messages instead of just storing the redaction 2020-07-25 19:38:27 +02:00
Nicolas Werner
f23d733cff Fix room joins 2020-07-20 18:25:22 +02:00
Nicolas Werner
6f2bc908ba Fix reaction display 2020-07-19 12:22:54 +02:00
Nicolas Werner
d467568a65 Close cursor we don't need and where we overwrite the contents 2020-07-18 22:59:03 +02:00
Nicolas Werner
56ea89aa11 Reenable sending messages 2020-07-18 17:43:49 +02:00
Nicolas Werner
9ae7d0dce3 Readd pagination and fix redactions 2020-07-13 00:08:58 +02:00
trilene
7a206441c8 Support voice calls 2020-07-10 19:19:48 -04:00
Nicolas Werner
3421728898 Fetch missing events 2020-07-10 01:37:55 +02:00
Nicolas Werner
530c531c4b WIP: Event Store split out 2020-07-09 23:15:22 +02:00
Nicolas Werner
0da1a6d5fc Add relations and order without hidden events to db 2020-07-08 02:02:14 +02:00
Nicolas Werner
82eff09062 Fetch event from db and use string_view where possible 2020-07-06 03:43:14 +02:00
Nicolas Werner
c79205c26a Use new timeline cache structure 2020-07-05 05:31:15 +02:00
Nicolas Werner
79a29953dd Persist event order 2020-07-04 02:09:12 +02:00
Nicolas Werner
233b3c06ce Store events in room specific db 2020-07-03 02:40:48 +02:00
Nicolas Werner
96f4169be9 Show presence and set custom status messages 2020-06-08 01:59:05 +02:00
Nicolas Werner
9eddcfc42f Remove some redundant functions 2020-05-30 16:38:11 +02:00
Nicolas Werner
7de1fc62e8 Tag rooms via context menu 2020-05-18 04:23:36 +02:00
Nicolas Werner
000ab4853a Translation updates 2020-05-10 01:38:40 +02:00
Nicolas Werner
a942ae9b93 Fix messages being immediately read again 2020-05-06 19:21:31 +02:00
Nicolas Werner
692c6119b4 Fix joined rooms dropping to the bottom at first 2020-05-05 19:08:59 +02:00
Nicolas Werner
a8b22e49c3 Fix self counting as read message 2020-05-04 00:57:40 +02:00
Nicolas Werner
d6685e8d61 Add delete pending_receipts migration 2020-05-02 17:24:45 +02:00
Nicolas Werner
dad2de7ba2 Add support for db migrations 2020-05-02 16:44:50 +02:00
Nicolas Werner
e6fcccc8bd Don't store pending receipts in cache
We don't get notified for every message. Sometimes we only get a read
receipt for the newest message, which means old read receipts accumulate
in the database. This least to some considerable CPU overhead, when
checking if the timeline should be notified for new read receipts.
Instead just always notify, since that has far less overhead in the
worst case and doesn't need complicated cache cleanup.

The old pending_receipts db is not removed for now. It should still have
minimal storage overhead and we don't have a good mechanism for cache
format upgrades atm.
2020-04-30 22:42:56 +02:00
Nicolas Werner
2022775dd0 Clear notifications when event is read 2020-04-11 01:09:47 +02:00
Nicolas Werner
95272ce4ab Try to fix avatars not updating after deletion 2020-03-22 20:43:45 +01:00
Adasauce
309461dcba
total + first member shows as one too many room members
i was confused when a room with me and two friends showed as "user1" and
3 others.
2020-03-02 21:30:19 -04:00
Nicolas Werner
b80697b072 Fix encrypted messages being pinned to the bottom after read marker fix 2020-02-28 19:29:43 +01:00
Nicolas Werner
1eb2869fa8 Fix stuck unread messages by storing state events in the db
This may increase the db size by a factor of 1000 in the worst case and
it will need some fixes, when we decide to not show some events in the
timeline, but it should work for now.
2020-02-24 01:07:25 +01:00
Nicolas Werner
62b962cb44 Improve read status handling in room list
Only consider the room as unread, if there is a message in the room and
only consider message and sticker events as messages.

fixes #65
2020-02-23 22:48:54 +01:00
Nicolas Werner
6bdc75d073 Reset user colors on theme change (in qml timeline) 2020-02-20 20:51:07 +01:00
DeepBlueV7.X
275d4dfed9
Fix integer overflow of cachesize on windows 2020-02-05 15:35:04 +01:00
Nicolas Werner
bd3b6aefb4 Remove even more headers 2020-01-31 16:36:58 +01:00
Nicolas Werner
127fb9370b Remove metatypes from headers 2020-01-31 16:08:30 +01:00
DeepBlueV7.X
0d6a65af07 Try to lower map size
Maybe this fixes the 1mb map size in my windows test environment?
2020-01-17 01:25:43 +01:00
Nicolas Werner
3bbd034781 Fix transitive dependencies on iostream 2019-12-23 05:22:03 +01:00
Nicolas Werner
79f967da8c Reduce Cache.h includes further via one forward declaration 2019-12-15 03:34:37 +01:00