Commit Graph

209 Commits

Author SHA1 Message Date
Christian Pauly 9c1f79359e refactor: Replace all logic regarding sortOrder
The current implementation of sortOrder can be made way more easier now
by just keeping the sortOrder of the list
and the timelineFragments in the hiveStore. This needed a huge
change but mostly removes a lot of code which can be done
way more easy now. This also needed some rewriting of the setState logic and changes to
the prevEvent calculation. This solution should also be more stable.
More information:
https://www.reddit.com/r/fluffychat/comments/pfnlhq/the_sort_order_of_matrix_timelines/
2021-09-02 07:13:38 +00:00
Sorunome efb5842959
fix: Implement dummy transactions for hive
That way some concurrency bugs might be fixed, such as if two sync
requests are processed at the same time. That can e.g. happen if you
request history while a sync request is already being processed.
2021-09-01 19:11:46 +02:00
Nicolas Werner 8b46fa3fc2 fix: room account data key/type returned encoded
We uri encode all hive keys. But in some cases we never decode them.
This leads to fun issues like SSSS being unreadable after restart.

fixes https://gitlab.com/famedly/company/frontend/famedlysdk/-/issues/179
2021-09-01 16:37:51 +00:00
Christian Pauly 62694248b9 refactor: Make UIA Request null safe 2021-08-30 09:26:34 +02:00
Christian Pauly 2589206851 refactor: Null safe QueuedToDeviceEvent and fix CamelCase filename 2021-08-30 09:20:17 +02:00
Christian Pauly 1fd40dd186 refactor: Make database null safe 2021-08-30 09:20:17 +02:00
Christian Pauly d75b27a0cd refactor: Ignore import_of_legacy_library_into_null_safe 2021-08-30 09:20:17 +02:00
Jayesh Nirve 42614bdfbd
Merge branch 'main' of gitlab.com:famedly/company/frontend/famedlysdk into td/fix-lastevent-preview 2021-08-26 02:42:36 +05:30
Lukas Lihotzki 9087f08775 chore: mxc url in Uri 2021-08-23 11:05:47 +02:00
Jayesh Nirve 164a95ea29 clean stuff up? 2021-08-23 07:34:57 +00:00
Jayesh Nirve c4c1c676da fix null check 2021-08-23 07:34:57 +00:00
Jayesh Nirve 572402980c fix null check 2021-08-23 07:34:57 +00:00
Jayesh Nirve 38235415eb fix: lastEvent in room preview now crespects edits order 2021-08-23 07:34:57 +00:00
Christian Pauly 9b7474e2f2 refactor: Update to dart 2.12 and opt out in all files
This also adds some missing license headers, I have detected while
using license header search&replace to add the
null safety opt out
2021-08-18 08:09:39 +02:00
Christian Pauly 86041513f8 refactor: Remove deprecated moor database
We have used some data models which were only used in moor in the tests.
I needed to rewrite them in the original data as well.
Also now the "fake database" on native is the same like on web now with hive.
2021-08-17 10:11:59 +02:00
Marcus f91f662c75 chore: update to matrix_sdk_lite 0.4.1 2021-08-05 12:10:45 +00:00
Lukas Lihotzki 46b2f8898e fix: use TryGet.optional 2021-07-26 15:33:36 +02:00
Christian Pauly e86fd7cc07 refactor: Restructure states box and use dedicated members hive box
More description about this here: https://gitlab.com/famedly/company/frontend/frontend-issue-inbox/-/issues/40
2021-07-10 08:38:38 +00:00
Christian Pauly aeb808b5dc fix: Dont migrate from version null
If the currentVersion of the database is null then the database has never been used yet.
Therefore we store the current version and do not call the migrate method.
2021-07-10 08:38:38 +00:00
Sorunome 4735d2d0a8
fix: Sending of the to_device key
With the switch to hive a regression of sending the to_device key was
introduced: When popping elements .deleteAt(), so deleting at the index,
was used, instead of .delete(), so deleting of the key. As the new events
pushed onto the queue used hives auto increment key, a .delete() is
appropriate here.
2021-07-09 19:43:48 +02:00
Christian Pauly 7c0dd5d8fd fix: Broken nested accountData content maps
If you call BasicEvent.fromJson the given content is copied first
which recursively makes sure
that the Map is from type
Map<String,dynamic>.
Using just the constructor doesnt have this which can lead that nested Maps in
the content is InternallinkedHashMap and
therefore lead to type errors.
2021-07-06 08:11:30 +02:00
Christian Pauly 96d28a1b76 feat: Implement migration for hive schema versions 2021-06-20 10:31:17 +02:00
Christian Pauly a7ffe4835d feat: Also migrate inbound group sessions
For users who do not use the chat backup this could be useful.
2021-06-19 11:03:52 +02:00
Christian Pauly 4dc62f6150 fix: Make sure hive keys only contain valid characters
There are some matrix IDs like room IDs which contain for example emojis.
This is valid from the spec and some people hack their Synapse to have this.
2021-06-19 10:51:17 +02:00
Christian Pauly c0c7f68bf3 chore: Rename to matrix 2021-06-18 09:58:25 +02:00
Christian Pauly 38d81d6093 fix: Migrate missing device keys
Currently we only migrate the client and SSSSCache but this leads to the
problem that we are no longer self signed after the migration.
We need to migrate all device keys too.
This also abstracts the migration code in a method. init() is too large already...
2021-06-18 09:16:12 +02:00
Christian Pauly 14ee16fe16 feat: Implement new Hive Database
The hive database now implements the whole API except for storing files which
should be better done by the flutter_cache_manager package inside of the
flutter app. All tests already run with Hive now but the Moor database is still
tested too. We needed to change some wait jobs in the tests because the Hive
database is not 100% in memory for the tests like Moor.
For now both database implementations are equal and the developer can pick
which one to use but we plan to get rid of Moor in the future.
2021-06-16 08:43:33 +02:00
Christian Pauly c387b33e9f refactor: Make support for file storing optional in database API 2021-06-01 15:27:18 +02:00
Christian Pauly 26261ecd5e feat: Add fromJson method for Room
This also included to move the room summary to a dedicated object inside
of the Room object because so it is easier to convert this to and from json.
2021-06-01 12:54:16 +02:00
Christian Pauly c3d47b16c6 CI: Use correct image 2021-05-25 10:46:34 +02:00
Christian Pauly c66e35c16c refactor: Create a clean database API 2021-05-20 07:36:03 +00:00
Lukas Lihotzki ac9df588d1 chore: recreate database.g.dart 2021-04-12 14:49:03 +02:00
Lukas Lihotzki 08043c06f4 refactor: high-level loops 2021-04-01 12:51:45 +02:00
Christian Pauly 0ceb2b26df refactor: Constants names 2021-03-30 12:43:50 +02:00
Sorunome c76dc0daa2
chore: Reduce needed database accessess 2021-03-09 18:28:58 +01:00
Krille Fear 44ca96e544 refactor: Update pedantic
This enforces to NOT use curly braces in Strings where not needed
and not await non-future variables.
2021-03-09 17:28:04 +00:00
Christian Pauly c9d3c327f6 refactor: Deprecate eventType in EventUpdate 2021-02-26 13:06:02 +01:00
Christian Pauly 72a7bc1637 feat: Implement upload sync filters 2021-02-18 14:03:58 +01:00
Sorunome d373a06aa2
fix: Add to_device queue to prevent olm session corruptions 2021-02-08 14:57:19 +01:00
Sorunome a35266f1e4
feat: Replay last sent olm message on olm session recovery from other device 2021-01-20 12:50:52 +01:00
Christian Pauly 9ffecd845a chore: Update license header 2021-01-04 10:34:50 +01:00
Christian Pauly e450a09fb5 refactor: External matrix api 2021-01-04 10:26:29 +01:00
Sorunome add19c73a0
fix: Load multiple olm sessions from the database at once for increased performance 2020-12-30 12:52:54 +01:00
Sorunome 6723c01a31
feat: Lazy-send room keys, chunked and sorted by importance 2020-12-29 14:46:36 +01:00
Marcus Hoffmann 54fc29f203 clear cache fix 2020-12-22 17:34:50 +01:00
Sorunome df1c249011
feat: Auto-Share megolm sessions with other users we know for a fact are allowed to see said message 2020-12-21 14:41:44 +01:00
Christian Pauly 3d6dbc9dc3 chore: Implement logoutput 2020-12-21 09:35:36 +01:00
Christian Pauly 57286d4c28 feat: Use logger package 2020-12-19 12:04:25 +00:00
Sorunome 49f0679fbf feat: Add bootstrapping 2020-12-10 08:13:24 +00:00
Christian Pauly bec1761172 refactor: content parsing 2020-11-30 15:34:46 +01:00
Sorunome c509144987
fix: Fetching history sometimes re-sorting events in the timeline 2020-11-08 14:54:19 +01:00
Christian Pauly 66e590073e refactor: Event Update Type 2020-10-22 13:01:35 +02:00
Sorunome 2e941b85e9 fix: Delete files older than 30 days 2020-10-08 13:02:20 +00:00
Christian Pauly 0761d33b6f refactor: Database first to single 2020-10-08 12:48:56 +00:00
Sorunome ae79af6ea8
fix: store timestamps in milliseconds to fix decrypt error 2020-10-04 12:12:03 +02:00
Christian Pauly bc8fef4a94 fix: Remove pubspec.lock from repo 2020-09-16 14:41:09 +02:00
Sorunome b5ac500136
fix: Handle failed to send messages in low network significantly better 2020-09-10 13:19:58 +02:00
Christian Pauly 5d45c224a3 fix: Mark pending events as failed on startup 2020-09-10 10:01:44 +02:00
Sorunome 99d536b14f
feature: Upload to online key backup 2020-09-09 09:53:26 +02:00
Christian Pauly 9142dcbeec fix: Database error handling 2020-08-26 09:40:30 +02:00
Sorunome 631b28eab2
fix: Migrations don't fail anymore if they were partly completed 2020-08-18 14:00:42 +02:00
Sorunome ea59c4bd94
refactor(keybackup): Update database for stored megolm keys to prepare for proper online key backup 2020-08-17 09:10:51 +02:00
Sorunome 20d72eb8d7
fix: Event statuses progress and are saved correctly 2020-08-17 08:54:16 +02:00
MTRNord 26586b6f02
style: Change package:famedlysdk imports to relative imports
Changing the imports from `package:famedlysdk` to relative imports allows us to easier move the files

Took 2 minutes
2020-08-13 10:40:39 +02:00
Christian Pauly 6170c79fe1 Improve logging 2020-08-06 09:35:02 +00:00
Christian Pauly bbd5749aec Fix storing of event status 2020-08-05 05:57:10 +00:00
Christian Pauly d4a7345b8a Enable transactions again to fix web 2020-08-03 13:28:30 +00:00
Sorunome 69431a1aff
some key verification fixes and temporarily disable transactions 2020-07-30 09:57:45 +02:00
Sorunome c68487ac21 fix issue with sending messages 2020-07-23 08:09:00 +00:00
Sorunome 0ece2717e0
Merge branch 'master' into soru/fix-members-requests 2020-07-20 11:53:55 +02:00
Sorunome 175cb0fbd2
add Databse.connect to be able to run in isaltes 2020-07-17 13:20:23 +02:00
Sorunome 4394196ba1
try to load members from database first and cache them in-memory 2020-07-14 11:30:13 +02:00
Sorunome 79ea85bf4d
indexes are already created when creating a talbe 2020-07-14 10:43:21 +02:00
Sorunome 7351319f28
address things 2020-07-02 10:32:11 +02:00
Sorunome 8f122195c5
re-work state lazy loading after discussion 2020-07-01 11:09:31 +02:00
Sorunome b7b369923f
only lazy-load m.room.member, not store presence 2020-06-30 13:41:52 +02:00
Sorunome a1f8120c59
Greatly imporve initial loading performance 2020-06-30 12:17:56 +02:00
Christian Pauly 4790925929 Merge branch 'soru/no-contains-key' into 'master'
Better validate event contents

See merge request famedly/famedlysdk!353
2020-06-29 12:02:18 +00:00
Sorunome fd406987c1 Better validate event contents 2020-06-29 12:02:18 +00:00
Sorunome 163cbdb923
Hotfix: account_data stored incorrectly in the database 2020-06-26 18:46:54 +02:00
Sorunome 62f63ebf1f Merge branch 'soru/olm-session-recovery' into 'master'
Adds olm session recovery

See merge request famedly/famedlysdk!355
2020-06-25 08:01:37 +00:00
Sorunome 5dda0c3623 Merge branch 'soru/cross-signing' into 'master'
Cross-Signing

See merge request famedly/famedlysdk!319
2020-06-25 07:53:30 +00:00
Christian Pauly 52e57f8dc2 Minor refactoring 2020-06-25 07:16:59 +00:00
Sorunome 68fac1e112
pick the correct session when encrypting to_device events 2020-06-24 09:27:32 +02:00
Sorunome f79a85ca71
Merge branch 'master' into soru/cross-signing 2020-06-24 09:26:22 +02:00
Sorunome 1a9f6e38dc
add database.getRoom 2020-06-23 13:35:22 +02:00
Sorunome 3d40a8d81b
remove transaction hack 2020-06-22 17:27:06 +02:00
Christian Pauly f1579a5f0f Database transaction workaround 2020-06-19 15:28:03 +02:00
Sorunome 12bdddee03
Better format switching to WAL mode 2020-06-16 14:26:37 +02:00
Sorunome b1ec508666
Merge branch 'master' into soru/cross-signing 2020-06-16 12:58:30 +02:00
Sorunome 77378e3ebc
switch database to wal mode 2020-06-16 12:51:29 +02:00
Sorunome ef0a567401
finish ssss tests 2020-06-13 19:12:32 +02:00
Sorunome 5334266529
Merge branch 'master' into soru/cross-signing 2020-06-10 16:25:08 +02:00
Sorunome f485ca29d8 Fix state attack 2020-06-10 14:17:57 +00:00
Sorunome 1fdd0a7db8
aslo clear ssss cache when clearing a user id 2020-06-06 15:48:57 +02:00
Sorunome 115cd9e5b3
better cache invalidation of ssss cache 2020-06-05 22:22:07 +02:00
Sorunome d29fb9abfe
Merge branch 'soru/modularize-e2ee' into soru/cross-signing 2020-06-05 18:59:58 +02:00
Sorunome fcde6a2459
split encryption stuff to other library 2020-06-04 13:39:51 +02:00
Christian Pauly c6bf098644 Init matrix_api library 2020-06-03 10:16:01 +00:00
Sorunome 280cd4fc16
first SSSS stuff 2020-05-23 17:04:27 +02:00
Sorunome c9a0c5302a
format 2020-05-22 13:18:45 +02:00
Sorunome 29721f00a8
Merge branch 'master' into soru/cross-signing 2020-05-22 13:18:36 +02:00
Christian Pauly 27b4a620e5 Add code formatting CI job 2020-05-22 10:12:18 +00:00
Sorunome 74361fff0e
don't cache via db and properly handle invalid signatures 2020-05-22 11:04:27 +02:00
Sorunome af961b99dc
get device verification status based on cross signing 2020-05-21 15:20:33 +02:00
Sorunome 7a41f4726f
properly persist inbound group session indexes 2020-05-20 10:36:05 +02:00
Sorunome a0fe8f4bad
Add rotation of outbound group sessions 2020-05-18 18:33:16 +02:00
Sorunome 06b601c41b lazy-load group session keys 2020-05-17 07:54:34 +00:00
Sorunome f71826739c Switch to moor 2020-05-15 18:40:17 +00:00