Commit Graph

3781 Commits

Author SHA1 Message Date
Krille Fear 2980f6d8e3 chore: Bump version 2021-07-10 09:05:12 +00: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 1e45ed1793 chore: Select range for moor dependency
Publishing to pub.dev is not allowed for a fixed version of a dependency.
We have do select a range of versions. Version 4.x.x should work fine.
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 36a9b53de1
fix: Adjust emoji ranges to have less false positives
Before too many characters, e.g. kanji, were incorrectly detected
as emoji
2021-07-09 20:53:49 +02: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
Lukas Lihotzki c10a98ff35 fix: log levels for tryGet 2021-07-07 15:30:42 +02:00
Christian Pauly 70763daec6 chore: Bump version 2021-07-06 14:41:49 +02:00
Christian Pauly 535a3b1d70 feat: Make it possible to get the current loginState
You may have missed the last valid loginState from the stream if you
listen too late to it. This makes it possible to
get always the current loginState.
2021-07-06 12:25:00 +00: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 af3a99af1c chore: Pin moor to 4.3.2 to fix the CI errors 2021-07-05 10:59:42 +02:00
Christian Pauly ebc9be250d fix: Mark unsent events as failed
In Moor this was implemented but forgotten in Hive.
Events with status 0 (not sent yet) should be marked as failed on restart.
In fact they should be marked as failed if older than 1 minute. To not have a big startup job which iterates through all events in the database
we just do a time check when opening a room where we iterate through all events anyway.
The new implementation is now in the constructor of the Event and therefore
independent from the database implementation.
2021-07-05 08:37:46 +02:00
Marcus Hoffmann 0b8e3f3071 make tryGet* safer
* check casts (for list and map) at cast time by recreating the list/map
  instead of throwing on access.
* type warnings work now slightly differently:
  * when we expect nullable fields to be actually null within normal
    operation you can explicitly set the tryGet type param to an
optional type and mute the warning. Otherwise it'll warn that something
is null which we expect to something else.
2021-07-02 12:17:05 +02:00
Lukas Lihotzki c73ea67bcd add note about txnId 2021-07-02 11:36:42 +02:00
Lukas Lihotzki bf3bed9ef9 simpler toMap 2021-07-02 11:18:16 +02:00
Lukas Lihotzki 0d1e7bdf7b omit type in tryGet 2021-07-02 11:11:29 +02:00
Marcus Hoffmann 4026f480fb fix test after removing user field 2021-07-01 18:16:47 +02:00
Marcus Hoffmann faabc55d28 isServer and isAccessToken are optional 2021-07-01 18:05:56 +02:00
Marcus Hoffmann dd7a824512 remove user field from AuthenticationPassword structure
it's not in the spec
2021-07-01 18:01:07 +02:00
Marcus f5dbacfe07 remove leftover migration tool comment 2021-07-01 15:50:42 +00:00
Marcus Hoffmann 92a2bd9d7e null safety test fixes 2021-07-01 17:36:21 +02:00
Marcus Hoffmann 34b9cc0dcf filter out invalid CiphertextInfo instead of crashing 2021-07-01 17:15:06 +02:00
Marcus Hoffmann 1a51f813a7 null safety cleanup 2021-07-01 16:59:54 +02:00
Lukas Lihotzki 9e6019b820 fix: return Never 2021-07-01 15:13:45 +02:00
Lukas Lihotzki d9c1fdb78a refactor: migrate to null safety 2021-07-01 15:11:39 +02:00
Krille Fear e0d3994a46 chore: bump version 2021-06-26 08:33:03 +00:00
Sorunome b664640a05
fix: Don't run syncs while the client is being initialized
Fixes that a sync could be done / processed while the client was still being initialized (loaded from database). This has lead to multiple bugs, such as the verified status of keys getting lost, notifications that come in during app startup displaying oddly, etc.

Additionally, the init lock was released too early; it is now released when the init is actually done.
2021-06-25 13:26:23 +02:00
Lukas Lihotzki 1b84de0b44 refactor: remove timeouts in matrix_api_lite 2021-06-25 12:40:03 +02:00
Lukas Lihotzki e3a1b6aa77 refactor: mostly use dart_openapi_codegen 2021-06-25 12:40:03 +02:00
Christian Pauly 616d25034f chore: Bump version 2021-06-22 15:45:22 +02:00
Christian Pauly 768b0623da feat: Implement sync status stream
This new sync status stream gives the current status of the sync to make it possible
to display in the UI where the sync currently hangs and
what the progress is while updating 1000 rooms. So the app can display a
progress bar.
2021-06-20 15:59:59 +02:00
Christian Pauly c734dc5b9f chore: Bump version 2021-06-20 10:31:50 +02:00
Christian Pauly 96d28a1b76 feat: Implement migration for hive schema versions 2021-06-20 10:31:17 +02:00
Christian Pauly 16f1cb7456 chore: Bump version 2021-06-19 11:06:34 +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 c37c5a962e chore: Bump version and update changelog 2021-06-18 10:17:15 +02:00
Christian Pauly 69b52ba85b refactor: Move pedantic to dev_dependencies
The unawaited method from the pedantic package was a historic solution
for the case that you dont want to await a future in an async function.
But now we can do this with just a comment which
is the recommended way to do this now.
This makes it possible to have pedantic as a dev_dependency which means just one dependency less.
2021-06-18 10:15:59 +02:00
Christian Pauly 45a2472fcd chore: Update readme 2021-06-18 10:10:24 +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 28dc8b4ff0 refactor: Improve clearing
This makes sure that the database is null after clearing so it will
be built again using the databaseBuilder.
Also this makes sure that the sync has
aborted BEFORE the clearing starts to
get rid of some warnings in the logs.
2021-06-14 11:00:41 +02:00
Christian Pauly fe06b96e93 fix: Do not logout before migration
Before the migration of the databases starts there is always a
logout signal sent. This was wrong.
This also cleans up the logs a little bit
and removes the useless parameters for the second init() call
because those are going to come from the new database anyway.
2021-06-14 08:29:03 +02:00
Christian Pauly 967712adfe feat: Implement database migration
This allows the user to give a legacyDatabaseBuilder to the client object
and in the init proccess the client checks by itself if there is old data in the legacy
database. If yes then it migrates them and
then deletes the old database. This uses the database_api and is agnostic to
the database implementation.
2021-06-11 10:10:18 +02:00
Christian Pauly cfa4441682 chore: Update matrix api lite
To fix the log filtering.
2021-06-10 09:23:08 +02:00
Christian Pauly 3a6d224348 fix: Log filter in wrong direction 2021-06-10 09:21:20 +02:00
Lukas Lihotzki ae2aafbd52 test: use setUp and tearDown 2021-06-09 17:12:14 +02:00
Krille Fear a5cbbf5cf4 chore: Update matrix_api_lite 2021-06-09 08:12:47 +00:00
Christian Pauly 9b3768300e fix: Logs should only printed if loglevel is high enough 2021-06-09 10:11:56 +02:00