Commit Graph

1609 Commits

Author SHA1 Message Date
td 60fb103563 Merge branch 'krille/remove-deprecations' into 'main'
refactor: Remove old deprecations

See merge request famedly/company/frontend/famedlysdk!1017
2022-04-27 05:35:32 +00:00
Krille Fear 15c5bf0a13 Merge branch 'henri/make-image-size-editable' into 'main'
feat: make image size editable

See merge request famedly/company/frontend/famedlysdk!1015
2022-04-23 06:09:44 +00:00
Christian Pauly bce45cbf2b refactor: Remove old deprecations
They have been lived long
enough and the next version
will have breaking changes
anyway.
2022-04-22 12:44:45 +02:00
h.carnot eaa2f73bcc feat: make image size editable 2022-04-21 15:45:38 +02:00
Christian Pauly eefc40e2d0 refactor: Get rid of dynamic input in checkHomeserver
This also fixes the automatic
homeserver detection in the
login method. It no longer uses
the deprecated user.
2022-04-21 15:40:21 +02:00
Christian Pauly b7e0d10b5a fix: Wait for keys in pusher 2022-04-14 19:44:19 +02:00
Christian Pauly 4e657f8e09 fix: Ignore no permission errors on requesting users
In theory even in invite or left rooms it
can be possible to request a room
state regarding the spec. In most
cases it will throw an error though.
2022-04-14 17:32:52 +02:00
Krille Fear c5a6cc9a52 Merge branch 'krille/get-event-from-push' into 'main'
feat: Get event from push notification

See merge request famedly/company/frontend/famedlysdk!1008
2022-04-14 15:08:46 +00:00
Christian Pauly 5973e629fe feat: Get event from push notification 2022-04-14 17:01:05 +02:00
Christian Pauly 059a240214 feat: Add more localization strings and add default matrix localizations 2022-04-14 07:54:15 +02:00
Krille Fear 2f4d455eee fix: Retry sending a file event 2022-04-08 08:41:55 +02:00
Henri Carnot c6393c67d6 Merge branch 'henri/blurhash-fallback' into 'main'
feat: blurhash fallback to thumbnail one

See merge request famedly/company/frontend/famedlysdk!1002
2022-04-07 11:58:48 +00:00
h.carnot 97ca608f60 feat: check thumbnail size 2022-04-06 17:43:31 +02:00
h.carnot f1c007c655 feat: fallback to thumbnail preview 2022-04-06 11:09:05 +02:00
Krille Fear e97fe621d6 chore: Allow custom image resizer to be an async method 2022-04-04 14:35:23 +02:00
Christian Pauly cdd6111ce1 fix: Missing type check in power level calculation 2022-04-03 08:22:53 +02:00
Krille Fear 6f977b7c9d fix: Store sending files in database and fix retrying to send them 2022-04-01 14:26:57 +02:00
Christian Pauly 117baecfb1 fix: Post load all users on room opening
When opening a room we need to
fetch all users from the database.
Otherwise we would need to
update the timeline per user after
creation which should be much slower.
2022-03-31 13:07:40 +02:00
Christian Pauly ea3910001b fix: Better fallback message for member events without any change 2022-03-31 12:20:23 +02:00
Christian Pauly 6a57f99c00 feat: Pass through a custom image
resize function to the client

This allows the use of the
native imaging package in a more
easy way.
2022-03-30 11:15:04 +02:00
Christian Pauly 445252b3a5 feat: Pass through a custom image
resize function to the client

This allows the use of the
native imaging package in a more
easy way.
2022-03-30 10:35:17 +02:00
Christian Pauly a915cdacc8 feat: Display dummy event in timeline for sending files
For thumbnail generation, encrypting
and uploading it is not necessary
to block the UI. The given file
event should already be displayed
in the timeline. This placed it in
the UI and adds a additional
fileSendingStatus property so the
app can fetch the current status.
2022-03-30 10:27:42 +02:00
Krille Fear 23e0d29a0d Merge branch 'krille/try-again-sending' into 'main'
feat: Try again uploading file events for one minute

See merge request famedly/company/frontend/famedlysdk!986
2022-03-30 06:38:01 +00:00
Nicolas Werner e2d2a69e45 Merge branch 'voip/move-voip-methods-from-room' into 'main'
chore: Move the call methods in room to the voip class.

See merge request famedly/company/frontend/famedlysdk!980
2022-03-25 23:51:55 +00:00
Duan Weiwei cac4dc967d chore: Move the call methods in room to the voip class. 2022-03-25 23:51:55 +00:00
Christian Pauly f86b242dcf feat: Try again uploading file events for one minute
This also refactors the code for
sending events with the same
Duration of one minute.
2022-03-25 12:54:42 +01:00
Christian Pauly abddbee24c feat: Set loglevel in client constructor
This is just more convenient than
doing it in a line after the constructor.
2022-03-25 12:12:43 +01:00
Krille Fear c897127be5 Merge branch 'henri/fix-olm-session-creation-issue' into 'main'
fix: remove pendaing outbound group session creation on completed or errored

Closes #252

See merge request famedly/company/frontend/famedlysdk!987
2022-03-25 09:17:49 +00:00
Christian Pauly 6b36d6bd79 feat: Get event in a room faster by searching in database 2022-03-24 14:10:41 +01:00
h.carnot 2cd4eb5e2c fix: remove pendaing outbound group session creation on completed or errored 2022-03-24 13:52:28 +01:00
TheOneWithTheBraid c362ead49a feat: implement mofifying widgets
- add predefined MatrixWidget factories
- allow to create widgets
- allow to delete widgets

Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
2022-03-24 10:40:10 +01:00
Krille Fear b5336cf589 Merge branch 'henri/event-getLocalizedBody-remove-markdown' into 'main'
feat: allow removing markdown formating from localized body

See merge request famedly/company/frontend/famedlysdk!979
2022-03-24 08:09:43 +00:00
Krille Fear f1be211845 Merge branch 'henri/fix-room-loading' into 'main'
fix: room members loading

See merge request famedly/company/frontend/famedlysdk!982
2022-03-24 08:04:17 +00:00
Henri Carnot 809fe9e621 fix: room members loading
States were used before being fetched from the database.
Thus, room membership states weren't set, and so,
user display names weren't be fetched from the database.
2022-03-24 08:04:17 +00:00
Christian Pauly 657a332b03 refactor: Simplify relates to and make it more type safe
Everything in content is user generated
so we should never expect correct
types and return null instead.
2022-03-22 11:46:48 +01:00
h.carnot b47a5f8dff feat: added doc 2022-03-18 11:42:38 +01:00
h.carnot 77347a44ff feat: allow removing markdown formating 2022-03-18 11:40:10 +01:00
Techno-Disaster 885da787b4
fix: send oldusername in displayname changed event 2022-03-17 18:51:26 +05:30
Nicolas Werner 62780b5b2f Merge branch 'krille/fix-reactions-trigger-notifications' into 'main'
fix: Dont encrypt reactions

See merge request famedly/company/frontend/famedlysdk!974
2022-03-15 10:40:52 +00:00
Christian Pauly f1d422b89a fix: Dont encrypt reactions
This fixes that server
sends notifications for reactions.
2022-03-15 08:42:53 +01:00
Krille Fear 93b11dd8ca Merge branch 'krille/matrix-file-improvements' into 'main'
refactor: Make MatrixFile final and move all image calculation into isolate

Closes famedly/fluffychat#863

See merge request famedly/company/frontend/famedlysdk!972
2022-03-15 07:40:59 +00:00
Krille Fear 9fa5667234 refactor: Make MatrixFile final and move all image calculation into isolate
This makes all fields in a MatrixFile final and
the object therefore stateless. It also moves
all calculations into the isolate. After some
benchmarks it seems that this does not
really speed up the thumbnail creation
but it does no longer block the UI for
some seconds.
2022-03-15 08:27:40 +01:00
Nicolas Werner 83298cc98b fix: own profile containing mxid
There are a few ways to fix this. We could skip events, where we don't
have the state in memory yet or always do a /profile request and cache
that.

I chose to go with loading the event from the database if necessary. If
we have a room in the db, we should have our memberevent in the db. In
some cases we might not (if the server thinks our memberevent is super
redundant), but I think the spec doesn't really allow that and it
doesn't happen in practice. And even if it would, we probably would want
our member event ASAP. And if we have no rooms, we fetch it from the
server as before instead of constructing a member with an MXID as the
username.

fixes https://gitlab.com/famedly/company/frontend/frontend-issue-inbox/-/issues/65
2022-03-15 02:13:09 +01:00
Krille Fear 58f77cacdb fix: Rooms sort order after login
A two years old workaround prevented
the room sorting for the initial sync. But
this is definitely no longer needed.
2022-02-28 12:19:33 +01:00
Krille Fear ecc60efea9 fix: Change password using email authentication 2022-02-19 13:37:35 +01:00
Krille Fear 215de3b948 Merge branch 'krille/fix-background-uia' into 'main'
fix: UIA request stucks forever on unexpected matrixExceptions

See merge request famedly/company/frontend/famedlysdk!966
2022-02-19 11:32:40 +00:00
Krille Fear 1f8691dd70 Merge branch 'krille/thumbnail-size' into 'main'
chore: Increase default thumbnail size to 800

See merge request famedly/company/frontend/famedlysdk!968
2022-02-19 11:16:08 +00:00
Krille Fear d780ba77c4 chore: Increase default thumbnail size to 800 2022-02-19 11:29:10 +01:00
Christian Pauly c0ec4c3990 fix: sortRooms should be triggered right before onSync is called 2022-02-18 12:11:10 +01:00
Krille Fear a7f8838522 fix: UIA request stucks forever on unexpected matrixExceptions 2022-02-17 20:54:03 +01:00
Christian Pauly b30b340b43 fix: hasNewMessage true when last event is sent 2022-02-16 08:09:57 +01:00
td d543a0314d Merge branch 'krille/return-homeserver-summary' into 'main'
feat: Return homeserver summary on checkHomeserver

See merge request famedly/company/frontend/famedlysdk!963
2022-02-16 07:07:53 +00:00
Krille Fear 6b610d0115 feat: Return homeserver summary on checkHomeserver 2022-02-16 07:07:53 +00:00
cloudwebrtc 63d347de8e fix: Correctly end the call. 2022-02-15 22:02:56 +08:00
Christian Pauly 01dfdb29fd fix: Has new messages compares ts
This compares the origin server timestamp which might not map
to the real sort order of the timeline. But it is the best
solution for now.
2022-02-15 10:26:17 +01:00
Lanna Michalke ade7e7e910 fix: handle dynamic content for pinned events
Signed-off-by: Lanna Michalke <l.michalke@famedly.com>
2022-02-14 18:18:34 +01:00
Christian Pauly 68fcee98cb fix: Show reactions as last events and refactor hasNewMessage
Reactions are triggering push
notifications and should therefore
be displayed as last events
in the room list of a client.
The body should just display
the reaction key.
This fixes that rooms with
new reactions can't set to
read.
2022-02-14 15:06:22 +01:00
Christian Pauly 63e69eaa27 feat: Add hasNewMessages flag to room
This makes it possible to check
if muted rooms have unread
messages.
2022-02-14 10:48:57 +01:00
Christian Pauly 843afe7aa4 fix: Sort rooms after updating the UI on web
FluffyBox behaves different on
web transactions which leads
to the result that _sortRooms()
is performed before the
rooms UI can be there. This
leads to an unsorted room list
on web.
2022-02-14 09:30:33 +01:00
Krille Fear ff55444b52 Merge branch 'voip/fix-black-screen-with-system-button' into 'main'
fix: Fix black screen when end screensharing with system buttons.

Closes famedly-web#268

See merge request famedly/company/frontend/famedlysdk!955
2022-02-14 08:03:23 +00:00
Nicolas Werner 4a52540006 fix: exception on removed widgets
And widgets without a name.

fixes #267
2022-02-13 23:11:53 +01:00
cloudwebrtc 48c0d03bd2 fix: Fix black screen when end screensharing with system buttons. 2022-02-13 07:13:58 +08:00
Christian Pauly d7f0da3545 fix: Call onChange on remove aggregation event 2022-02-08 08:34:20 +01:00
Krille Fear 84e87279e8 fix: Remove onHistoryReceived which was broken anyway 2022-02-07 15:15:44 +01:00
Krille Fear 8e7db020bf fix: Remove aggregation event doesnt trigger onChange 2022-02-07 15:06:38 +01:00
Christian Pauly 846d5b0f46 fix: Add redaction events to timeline
The redaction events should not
be displayed in the GUI but it
is the job of the app to hide
them from the timeline while
the SDK should offer an
accurate list of ALL timeline
events by default.
2022-02-04 08:55:47 +01:00
Christian Pauly 12f846e101 fix: Resize image with compute by using const class arguments 2022-02-04 08:04:18 +01:00
Christian Pauly 01d13e7e2c refactor: Implement on history received in timeline
In order to make delta updates
for GUIs displaying the
timeline events easier, the
onHistoryReceived callback
has been introduced.
2022-02-03 09:38:39 +01:00
TheOneWithTheBraid 7d2a99b500 fix: null-safety issues with widgets
Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
2022-02-02 16:17:22 +01:00
TheOneWithTheBraid fa6bd12294 feat: implement to get a room's widgets
Please note that this does not implement *modifying* widgets,
as this requires a full implementation of the Matrix Integration Manager
API first. This is to be done later.

Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
2022-02-02 08:38:56 +01:00
Christian Pauly 48572f8f10 fix: Trigger onChange for index on aggregation event update 2022-02-01 11:45:29 +01:00
Krille Fear f8a2a603ad Merge branch 'room-timeline-onupdate' into 'main'
feat: expose Timeline.onChange to Room.getTimeline

See merge request famedly/company/frontend/famedlysdk!943
2022-01-26 12:16:07 +00:00
TheOneWithTheBraid ed6f9c06b7 feat: expose Timeline.onChange to Room.getTimeline
Signed-off-by: TheOneWithTheBraid <the-one@with-the-braid.cf>
2022-01-26 12:52:30 +01:00
Nicolas Werner 999dbb4434 Merge branch 'voip/fix-call-breaks-caused-by-aborting-screen-sharing' into 'main'
Fix call breaks issue caused by aborting screen sharing.

Closes famedly-web#212

See merge request famedly/company/frontend/famedlysdk!938
2022-01-26 10:57:09 +00:00
Lanna Michalke 58f6cde0bf BREAKING CHANGE: high-level hadling of image sizes
- By using [package:image](https://pub.dev/packages/image), the
`MatrixImageFile` was given automatically generated width and heigth.
- Moreover, `MatrixImageFile` was given a factory to create the image
  file from a given maximal dimension.
- When sending images without explicitly providing a thumbnail, the
  thumbnail is automatically generated based on the provided image.
- The blur hash in generated automatically based on the provided image.

Fixes:
https://gitlab.com/famedly/company/frontend/famedly-web/-/issues/162, https://gitlab.com/famedly/fluffychat/-/issues/756

Signed-off-by: Lanna Michalke <l.michalke@famedly.com>
2022-01-19 13:10:17 +01:00
Marcel 1b11efc9eb fix: Use where and map instead of a loop and a removeWhere 2022-01-17 22:06:29 +00:00
cloudwebrtc 38c7109aee fix: fix call breaks issue caused by aborting screen sharing. 2022-01-17 21:16:36 +08:00
MTRNord d77d49430a fix: Remove sorts that shouldnt be required. 2022-01-15 21:54:13 +01:00
cloudwebrtc fba3c1e5f6 fix: Fix turn credentials format issue for safari. 2022-01-14 20:56:51 +08:00
Lanna Michalke cab03aa73b fix: Allow unpadded base64 decoding 2022-01-11 09:02:34 +00:00
Krille Fear b472dd7b92 fix: Room Member updates should always be cached
I think the commit which broke it was this: e3bd0cf1 It makes sure that only important state events get cached and room member events are not important state events and so new invites have no room member events cached. It makes sense to also allow room member events here to always be cached as they are special typed.
2022-01-08 10:44:22 +01:00
Krille Fear bcca5e11f2 feat: Let sendDefaultMessage return false on encryption failure 2022-01-07 17:12:20 +00:00
Krille Fear 6d8fabd1e0 Merge branch 'krille/fix-request-user' into 'main'
fix: Requested users are not stored

See merge request famedly/company/frontend/famedlysdk!930
2022-01-04 06:28:00 +00:00
Krille Fear e9e9dcb4aa Merge branch 'krille/newlinter' into 'main'
refactor: Remove unnecessary type checks and imports

See merge request famedly/company/frontend/famedlysdk!929
2022-01-03 11:45:06 +00:00
Christian Pauly 62a04b52d4 fix: Requested users are not stored
Fake Matrix Events for storing
need more paramters to
actually get stored. This fixes
it by creating a fake event ID
which should be unique.
2021-12-26 09:14:52 +01:00
Krille Fear 3bce8b4489 refactor: Remove unnecessary type checks and imports 2021-12-23 11:46:45 +01:00
Krille Fear 326f1f3223 fix: Localize reactions
In notifications in FluffyChat we
have "Unknown event m.reaction"
for reactions. But it should just be
enough to display the body so it
should look like:
"username: :thumbs_up_emoji:"
2021-12-23 11:43:00 +01:00
Krille Fear e5fde4f801 chore: bump version 2021-12-16 08:17:36 +00:00
Nicolas Werner d687973b01 fix: fallback in body for replies to replies 2021-12-15 19:21:41 +00:00
Sorunome fa5abfca92
fix: ignore 4xx errors when re-sending the to_device queue
The to_device queue was introduced to ensure integrity if e.g. the
server temporarily failed when attempting to send a to_device message.
If, for whatever reason, the server responds with a 4xx error, though,
then we want to ignore that to_device message from the queue and move on,
as that means that something different was fundamentally wrong. This
helps to fix the to_device queue clogging up, making clients incapable
of sending to_device events anymore, should such clogging happen.
2021-12-08 13:00:53 +01:00
cloudwebrtc c0e4008903 fix: Store the call state, fix the invite cannot be sent. 2021-12-06 19:32:33 +08:00
Sorunome b009ada0ac
fix: Allow consecutive edits for state events in-memory
The lastEvent was incorrect when trying to process an edit of an edit.
This fixes that by allowing consecutive edits for the last event.
2021-12-06 11:11:21 +01:00
Sorunome e3bd0cf139
fix: Only save state events from sync processing in-memory if needed
If we dump all state events from sync into memory then we needlessly
clog up our memory, potentially running out of ram. This is useless
as when opening the timeline we post-load the unimportant state events
anyways. So, this PR makes sure that only the state events of post-loaded
rooms and important state events land in-memory when processing a sync
request.
2021-12-06 11:09:50 +01:00
Sorunome 872bc04674
fix(ssss): Strip all whitespace characters from recovery keys upon decode
Previously we stripped all spaces off of the recovery when decoding it,
so that we could format the recovery key nicely. It turns out, however,
that some element flavours also format with linebreaks, leading to the
user having to manually remove them. We fix this by just stripping *all*
whitespace off of the recovery key.
2021-12-05 12:19:22 +01:00
Krille Fear 43d5b1c523 fix: Add missing calcDisplayname global rules to client constructor
This two parameters were
already documented but
were missing in the
constructor. They can
also be final.
2021-12-03 12:34:52 +01:00
cloudwebrtc 4ebf5b2553 Merge branch 'voip/add-voip-function' of https://gitlab.com/famedly/company/frontend/famedlysdk into voip/add-voip-function 2021-12-02 23:20:16 +08:00
cloudwebrtc 61da76a26a chore: Implement the onAnsweredElsewhere function. 2021-12-02 23:18:01 +08:00
Krille Fear e5c8e4f4fe chore: Time unit replacement. 2021-12-02 15:12:59 +00:00
cloudwebrtc 9bc35a216a chore: Use `fireCallEvent` instead of emit. 2021-12-02 23:04:33 +08:00
cloudwebrtc 1f519703a8 fix: Fix the call function in flutter and dart. 2021-12-01 00:47:11 +08:00
cloudwebrtc 7efe123274 Merge branch 'main' into voip/add-voip-function 2021-11-30 22:31:10 +08:00
cloudwebrtc edeea47dec chore: Improve the code. 2021-11-29 22:26:18 +08:00
Krille Fear fe2d184faf fix: userOwnsEncryptionKeys always returns true
Actually the homeserver sends an
empty object in the deviceKeys map
so we need to check if this object
is there but is empty.
2021-11-28 10:37:56 +01:00
cloudwebrtc 01276bbf60 chore: add more interface for delegate. 2021-11-27 01:29:11 +08:00
cloudwebrtc 60618d1775 chore: Add WebRTC delegate interface. 2021-11-27 01:20:04 +08:00
Krille Fear 44934d5911 Merge branch 'krille/enable-e2eerecovery' into 'main'
chore: Enable E2EE recovery by default

See merge request famedly/company/frontend/famedlysdk!915
2021-11-26 13:05:13 +00:00
cloudwebrtc 72584d679c chore: bump version for webrtc_interface. 2021-11-26 20:33:57 +08:00
Krille Fear ac06864627 feat: Migrate olm sessions on database migration
This adds a getAllOlmSessions
endpoint to the database API and
implements them in both
implementations. This also
adds it to the database
migration.
2021-11-26 08:17:43 +01:00
Krille Fear 03418bfe8b chore: Enable E2EE recovery by default
We have disabled it by default to
prevent using workarounds as
long time solutions and to not
miss bugs. But in a federated
context we can not be sure that
we all Matrix clients are ever
bug free and we have now the
onEncryptionError Stream
anyway.
2021-11-25 15:48:17 +01:00
Krille Fear 79b74e2bbf fix: Remove user avatar 2021-11-25 09:00:59 +01:00
Nicolas Werner 64257735ac Merge branch 'krille/limited-timeline-behavior' into 'main'
fix: Limited timeline clears too much events

Closes #217

See merge request famedly/company/frontend/famedlysdk!907
2021-11-23 15:06:29 +00:00
Nicolas Werner da57be44e4 Merge branch 'krille/fix-decrypt-room-event' into 'main'
fix: Decrypt last event of a room

Closes #251

See merge request famedly/company/frontend/famedlysdk!904
2021-11-23 15:03:45 +00:00
Krille Fear bc6ec5e592 Merge branch 'krille/idb' into 'main'
feat: Implement FluffyBox database

See merge request famedly/company/frontend/famedlysdk!900
2021-11-23 15:00:42 +00:00
Krille Fear 01eb851364 fix: 2021-11-23 15:48:18 +01:00
Sorunome 17d8b4d25f Merge branch 'krille/add-clear-cache-command' into 'main'
feat: Add clear cache command

See merge request famedly/company/frontend/famedlysdk!908
2021-11-23 13:06:53 +00:00
Krille Fear ee21121a63 fix: Workaround for null boolean
deviceKeysList.outdated is not nullable but we have seen this error
in production: `Failed assertion: boolean expression must not be null`
So this could either be a null safety bug in Dart or a result of
using unsound null safety. The extra equal check `== true` should
safe us here
2021-11-23 13:53:07 +01:00
Krille Fear 921c694888 feat: Add clear cache command 2021-11-23 09:48:08 +01:00
Krille Fear 9cbe1099e5 fix: Limited timeline clears too much events
This fixes the bug that the
limited timeline flag also
clears all events from the
current SyncUpdate in an
open timeline.
2021-11-23 09:06:30 +01:00
Krille Fear 3338da4e09 fix: Ability to remove avatar from room and account
To remove an avatar the
client needs to send an
empty object. This is now
possible by making the
MatrixFile parameter nullable.
2021-11-22 19:36:38 +01:00
cloudwebrtc 18af7e0642 chore: Set client to final. 2021-11-22 23:08:52 +08:00
cloudwebrtc 12df5d8cdd chore: Use RTCFactory interface to create MediaStream, VideoRenderer. 2021-11-22 22:41:49 +08:00
Krille Fear 27c03b4fad fix: Request history in archived rooms
We have just forgotten to
set the prevBatch token in
the room object.
2021-11-22 10:37:26 +01:00
Krille Fear f3775fa5ba fix: Decrypt last event of a room 2021-11-22 10:18:44 +01:00
Krille Fear a61e1ae4a3 feat: Add commands to create chats 2021-11-21 13:40:41 +01:00
cloudwebrtc 5dfb196c90 chore: dart format. 2021-11-19 18:03:58 +08:00
cloudwebrtc 93b623f2d5 chore: Use webrtc interface to build the voip module. 2021-11-19 17:51:38 +08:00
Krille Fear b99a78476a refactor: Remove Sembast database implementation
It was a nice experiment but it
loading everything into memory
is just too slow for big
accounts.
2021-11-18 19:55:21 +01:00
Krille Fear 0532974022 Merge branch 'krille/sembast' into 'main'
feat: Implement sembast store

Closes #239

See merge request famedly/company/frontend/famedlysdk!892
2021-11-16 09:42:40 +00:00
Krille Fear f5051a5afe feat: Implement sembast store
refactor: Use typed store
2021-11-16 09:50:25 +01:00
Nicolas Werner ae5225f495 Merge branch 'krille/fix-start-chat' into 'main'
fix: Dont enable e2ee without encryption support

See merge request famedly/company/frontend/famedlysdk!893
2021-11-16 08:07:32 +00:00
td 1804838324 Merge branch 'krille/fix-crash-in-htmltotext' into 'main'
fix: HtmlToText crashes with an empty code block

Closes #249

See merge request famedly/company/frontend/famedlysdk!897
2021-11-16 07:27:09 +00:00
Krille Fear 66bf8e6ace fix: HtmlToText crashes with an empty code block 2021-11-16 08:18:07 +01:00
cloudwebrtc 56d9ba7d4a refactor: [WIP] Voip abstract interface. 2021-11-15 22:31:38 +08:00
Krille Fear 13658b7da8 chore: Trim formatted username fallback
A user has a mxid with a trailing "-" which
becomes a whitespace here. We should
trim those whitespaces after formatting.
2021-11-15 13:08:31 +01:00
Krille Fear b7565af56f fix: use originServerTs to check if state event is old
Due to server bugs or whatever it sometimes
happens that old state events appear
in the setState method in the room class.
Previously we checked if we already know
this event ID, but for this we needed to
check the timeline which is very fluid.
Also this is a database operation in a
non-async method which works in Hive but
not in Sembast.
Using originServerTs is not 100% safe as
well but should be more stable because
the chance that servers have veeery wrong
time (which is necessary here) is much
lower than the risk that the timeline
is not long enough to know the
old event.
2021-11-15 10:57:55 +01:00
Krille Fear c8c4562f70 fix: Dont enable e2ee without encryption support
This also adds a missing visibility
parameter to the
createGroupChat method.
2021-11-13 11:58:07 +01:00
Krille Fear f052957c0a fix: Change eventstatus of edits in prevEvent
Unfortunately the last fix
was not working.
This fixes it for real now and also
adds a test case to make sure it
never breaks again.
2021-11-11 09:48:50 +01:00
cloudwebrtc 0822e3809d chore: Null safety for voip.dart. 2021-11-10 21:47:16 +08:00
cloudwebrtc 09e24fd33e feat: Migrate voip code from famedly-app. 2021-11-10 21:40:36 +08:00
Nicolas Werner be617ee974 Merge branch 'krille/update_api' into 'main'
refactor: Update matrix_api_lite and use SyncUpdate constructors

See merge request famedly/company/frontend/famedlysdk!887
2021-11-10 11:40:49 +00:00
Nicolas Werner a78f64715b Merge branch 'krille/fix-last-event-edit' into 'main'
fix: Edits as lastEvent do not update

Closes #244

See merge request famedly/company/frontend/famedlysdk!888
2021-11-10 11:11:48 +00:00
Krille Fear d16c25b26d fix: Edits as lastEvent do not update
This fixes a bug where edit
events as lastEvents do not
update from SENDING status.
Because previously it only
checks if the event ID
matches.
2021-11-10 10:43:05 +01:00
Krille Fear 58b36a67a3 refactor: Update matrix_api_lite and use SyncUpdate constructors 2021-11-10 10:04:03 +01:00
Krille Fear 048b7faba0 fix: JSON parsing in decryptRoomEvent method
This makes the use of the
event content null safe and
type safe which fixes a
regression when sessionId is
null.
2021-11-10 09:19:40 +01:00
Krille Fear 872b3bff94 fix: Wrong null check in hive database 2021-11-10 09:09:24 +01:00
Nicolas Werner d2e7de4702
fix: crash on invalid displaynames 2021-11-09 21:27:55 +01:00
Krille Fear 9abe1ed81d fix: Dont enable e2ee in test verification DM room 2021-11-09 15:42:43 +01:00
Krille Fear 4cf88e2be6 feat: More advanced create chat methods
This includes a new simplified
API to create new direct and
group chats. It also handles
enabling encryption by
default.
2021-11-09 15:39:42 +01:00
Krille Fear 8116436da8 Merge branch 'krille/improve-start-up-time' into 'main'
feat: Make waiting on init db optional

Closes #235

See merge request famedly/company/frontend/famedlysdk!881
2021-11-09 14:35:13 +00:00
Krille Fear 475e810523 feat: Make waiting on init db optional
This can improve the start-up time of apps.
The three big db reads on init are
loading account data, rooms and
device keys.
This makes it now possible to let
them run parallel
(while it may depend on platform
if this has any effect)
and the init() method can skip
awaiting them. They will
be at least awaited before handling
the first received sync.
So the app can already display the
room list before device keys are
loaded and request the first sync
from the server before anything
else is loaded from the DB.
2021-11-09 15:27:48 +01:00
Nicolas Werner c443b239b4 Merge branch 'krille/timeline-set-read-marker' into 'main'
refactor: Move setreadmarker functionality to timeline

See merge request famedly/company/frontend/famedlysdk!879
2021-11-09 14:14:43 +00:00
Krille Fear e313426dd9 refactor: Move setreadmarker functionality to timeline
Apps had a hard time to just set
the marker for the last event.
The lastEvent in the Room may
not be the actual last event
because we ignore several
event types there. Therefore
it makes sense to refactor
the setUnread method.
Now the timeline class has an
easy method to set the read
marker to the last synced
event, which can only be
known by the timeline if we
want to avoid another DB access.
2021-11-09 14:56:59 +01:00
Nicolas Werner 7f9a75a43d Merge branch 'krille/timeline-auto-update-list' into 'main'
feat: Add onInsert, onRemove and onUpdate cb to timeline

See merge request famedly/company/frontend/famedlysdk!880
2021-11-09 13:08:42 +00:00
Krille Fear 315ed7bdcb feat: Add more benchmarks for sync, timeline, init
This also disables benchmarks if loglevel is higher than debug.
2021-11-09 10:03:59 +01:00
Krille Fear e1f93637b3 feat: Add onInsert, onRemove and onUpdate cb to timeline
This makes it finally possible to
use Flutters AnimatedListView with
our Timeline class and in web we
can now update single elements
instead of the whole timeline
on every change which should
be quiet good for the
performance
2021-11-09 09:55:26 +01:00
Krille Fear 3e1aee6fcd fix: Null error in get own profile
On converting a User object to
a Profile object now leads to an
error. This fixes it.
2021-11-05 12:21:48 +01:00
Krille Fear 9be87918f1 refactor: Make room in Event class not nullable 2021-11-04 14:21:04 +01:00
Krille Fear eb200afe18 refactor: download method should not return null
If the decryption fails, it should
throw an exception and not
return null.
2021-11-04 12:22:20 +01:00
Sorunome 5c87b560b9
fix: obay explicitly set ports in mxc URLs 2021-11-03 08:54:04 +01:00
Jindra a0bab1b587 feat: choose memberships returned by requestParticipants() 2021-11-02 09:27:00 +01:00
td 3130931f0d Merge branch 'krille/dont-upload-keys-after-logout' into 'main'
fix: Do not upload keys after logout

Closes #213

See merge request famedly/company/frontend/famedlysdk!866
2021-10-29 13:21:01 +00:00
Krille Fear 766b27427a Merge branch 'td/invite-update' into 'main'
fix: add room invite update to roomStateBox, so invites don't show empty room when app is restarted

Closes #228

See merge request famedly/company/frontend/famedlysdk!865
2021-10-29 13:17:30 +00:00
Nicolas Werner 6ee5771334 Merge branch 'nico/nullsafe' into 'main'
Make SDK nullsafe

Closes #201

See merge request famedly/company/frontend/famedlysdk!867
2021-10-28 16:25:25 +00:00
Krille Fear 176dbbeda9 fix: Do not upload keys after logout
This should fix a race condition where uploading keys is still ongoing
after user has already logged out.
2021-10-28 16:46:45 +02:00
Nicolas Werner b6eed6daff
fix: don't escape @ 2021-10-28 16:46:15 +02:00
Nicolas Werner 7d78233bf0
refactor: remove literal boolean comparisons leftover from nullsafety conversion 2021-10-28 14:40:22 +02:00
Nicolas Werner 6e20c53b01
refactor: remove redundant null checks 2021-10-28 14:32:09 +02:00
Nicolas Werner 6abd9e7e22
refactor: nullsafe event test 2021-10-28 03:44:01 +02:00
Nicolas Werner ebd5bc3d24
refactor: make room nullsafe 2021-10-28 00:54:25 +02:00
Jayesh Nirve b955318edb
fix: add room invite update to roomStateBox, so invites don't show empty room when app is restarted 2021-10-26 16:00:22 +05:30
Jindra 06281d1361 refactor: add export & order package exports 2021-10-25 17:51:20 +02:00
Nicolas Werner fb0a84d7b2
refactor: make client nullsafe 2021-10-25 16:34:02 +02:00
Nicolas Werner 17fd1f22b3 refactor: make event nullsafe 2021-10-25 10:10:25 +00:00
Krille Fear d2ee73f96f chore: Bump version 2021-10-25 11:19:45 +02:00
Krille Fear 7a85d52d93 fix: Remove unnecessary null check 2021-10-25 11:11:55 +02:00
Krille Fear 7d5652e9a3 fix: Remove duplicated import 2021-10-25 11:11:17 +02:00
Krille Fear 9193950970 fix: Auto update room states
Room states are ignored if the event with the same event ID
is already known in the database. But
because of the event is stored in the
database and after this
setState in the Room class is called,
an event is always "known" and
therefore auto updating was broken.
2021-10-25 10:55:54 +02:00
Krille Fear faba36d476 fix: Missing null check in a nested json map 2021-10-18 15:45:29 +02:00
Jindra 2b8782c699 fix: delete forgotten files caused by mergetool 2021-10-14 15:37:43 +02:00
Jindřich Pikora c6e0359522 refactor: Change event status to enum 2021-10-14 13:31:07 +00:00
Nicolas Werner d5e5500ac5 refactor: make timeline nullsafe 2021-10-14 10:50:18 +00:00
Nicolas Werner 8146aa05b8 refactor: make user nullsafe 2021-10-14 10:27:34 +00:00
Nicolas Werner 978c3bb994
refactor: make voip_content nullsafe 2021-10-13 17:03:34 +02:00
Nicolas Werner 60956bde00 chore: port the remaining encryption files to nullsafety 2021-10-13 13:58:21 +00:00
Krille Fear 3ae42d1a88 fix: Type error when using CryptoKey in dart web
In Dart Web when using CryptoKey we
get a type error. When using the html version of it
it seems to work fine.
2021-10-13 12:30:04 +00:00
Lukas Lihotzki 3130139bde refactor: prepare null safefy for user.dart
With this commit, the migration tool needs to do 8 fewer changes.
2021-10-11 19:58:26 +00:00
Sorunome f811e45102 fix: events with unknown users having invalid mxids
This caused issues down the line where the sender id was assumed to
be a valid matrix identifier
2021-10-11 19:49:10 +00:00
Lukas Lihotzki b516bd1005 refactor: add and use constructor with named parameters 2021-10-08 14:26:23 +02:00
Lukas Lihotzki 66f29c7685 refactor: move voip content in its own file 2021-10-08 14:26:23 +02:00
Krille Fear 3603dae312 feat: Calc benchmarks for hive operations on init 2021-10-07 12:18:13 +00:00
Lukas Lihotzki a7818bbd0f refactor: null safety for all utils 2021-10-05 15:41:25 +02:00
Christian Pauly 687a6341f1 fix: Sent events are sorted in SENDING timeline
Events with a status of 1 should be sorted in the normal timeline.
They should not be stucked at the bottom. This fixes a bug
where a limited timeline flag
can stuck a SENT event at the bottom of
the chat forever.
2021-10-04 17:45:27 +00:00
Lukas Lihotzki 4bd659fd56 style: remove unneeded trailing comma 2021-09-30 15:53:43 +02:00
Lukas Lihotzki 85004e1faf refactor: capture member variables as finals 2021-09-30 15:53:43 +02:00
Lukas Lihotzki 41d905ca60 refactor: use more ?. 2021-09-30 15:53:43 +02:00
Nicolas Werner 71e5ec1bb5 style: use map entry with explicit types over cast 2021-09-30 12:58:37 +00:00
Nicolas Werner 6f7f7100e1 fix: use explicit type in fold instead of cast 2021-09-30 12:58:37 +00:00
Nicolas Werner 7dd176c278 fix: apply review feedback 2021-09-30 12:58:37 +00:00
Nicolas Werner 08bbb3f6f5 fix: prefer ! over ? 2021-09-30 12:58:37 +00:00
Nicolas Werner d15c71e5b3 fix: pre vs postcrement confusion 2021-09-30 12:58:37 +00:00
Nicolas Werner e5682fcb91 refactor: remove clientid from encryption code 2021-09-30 12:58:37 +00:00
Nicolas Werner 1c838e3be8 fix: Cleanup nullsafe encryption a bit 2021-09-30 12:58:37 +00:00
Lukas Lihotzki da80658c09 refactor: simplify device_keys_list.dart 2021-09-30 12:58:37 +00:00
Nicolas Werner a196b53219 refactor: nullsafe encryption 2021-09-30 12:58:37 +00:00
Sorunome 259c9cade6
fix: missing range check
When requesting history the `start` parameter could become larger than the loaded events
from the database were, resulting in an error when attempting to request history.
2021-09-30 14:34:28 +02:00
Lukas Lihotzki 1d0202e14e refactor: null safe matrix_id_string_extension 2021-09-27 12:59:51 +00:00
Lukas Lihotzki 3b1c6e3d2b refactor: arbitrary components in _parseIdentifierIntoUri 2021-09-27 12:59:51 +00:00
Lukas Lihotzki fb0ea2efc3 refactor: parseIdentifierIntoParts 2021-09-27 12:59:51 +00:00
Lukas Lihotzki 7fce5b6040 refactor: inline parseQueryString in parseIdentifierIntoParts 2021-09-27 12:59:51 +00:00
Lukas Lihotzki 8ea01fcee0 refactor: simplify parseQueryString in parseIdentifierIntoParts 2021-09-27 12:59:51 +00:00
Krille Fear 62fe7a1704 fix: New verification requests on requesting history
If requesting history happens to contain a m.key.verification.request we currently create a new key verification object and push it to the client.
This fixes it.
2021-09-27 14:51:25 +02:00
Jayesh Nirve 77ca7523d0 refactor: remove unused clientId 2021-09-24 16:05:05 +02:00
Lukas Lihotzki 42434761e8 chore: dart analyze fix 2021-09-23 14:57:30 +02:00
Lukas Lihotzki 5da26a6923 refactor: null safe commands_extension 2021-09-23 00:15:05 +00:00
Lukas Lihotzki 01c3b4d0bc refactor: null safe MatrixFile 2021-09-22 23:40:21 +00:00
Sorunome b455a54304 fix: Less log clutter about tags 2021-09-22 23:32:27 +00:00
Sorunome d8986f1d10 fix: Add type checkings for User.displayName 2021-09-22 23:00:36 +00:00
Christian Pauly 0125272b7e fix: Autodetect mimetype on file upload 2021-09-22 07:59:45 +02:00
Sorunome 80be9629bf
fix: Setting stuff in the database assumed event relationships were well-formatted 2021-09-21 11:31:53 +02:00
Sorunome b41c7b1bc6
fix: Don't re-play m.dummy to_device events
If both ends had m.dummy events queued as last messages an an olm
session corrupted, then the clients landed in an infinite game of
ping-pong. It was so stable, that the clients could have won the
ping-pong world championships!
2021-09-21 10:05:51 +02:00
Lukas Lihotzki 7a3553839c fix: remove unused parameter in VariableTimeoutHttpClient 2021-09-21 07:12:07 +00:00
Lukas Lihotzki f491cfacc2 refactor: null safe http_timeout 2021-09-21 07:12:07 +00:00
Krille Fear e0e09c2f67 feat: Add waitForFirstSync parameter to init method
Just using the .init() method to wait for the client
to initialize is a more easy way than listen to onLoginStateChanged.
But by default it waits for the first sync.
This should be configurable.
2021-09-20 11:41:40 +02:00
Sorunome fe9145d580 fix: missing null check 2021-09-18 07:50:45 +00:00
Sorunome 6f0c7c5f64 feat: Add /discardsession command 2021-09-17 05:52:53 +00:00
Sorunome 0611ea1495
fix: Auto-reply key requests 2021-09-16 22:14:41 +02:00
Sorunome 1652213ab0
fix: Room previews not showing replies 2021-09-16 15:48:41 +02:00
Jindra d8f642372e fix: missing content-type when changing avatar 2021-09-15 09:35:58 +02:00
Jindřich Pikora 03f82d84b9 fix: only/number emotes in a reply 2021-09-14 09:21:49 +00:00
Krille Fear dec32975e2 fix: Clearing corrupted boxes
If a box is corrupted the clear function fails on it. Then
we should delete the box from the disk.
Currently we use the Hive.deletefromDisk() method which does not
work because it deletes only open boxes, but the box is obviously not open in
this case.
2021-09-14 10:33:11 +02:00
Krille Fear 00cc439122 fix: Do not set old events as state events
Previously we had a check which uses the old
sortOrder value.
This check has been removed with the refactoring which leads to
bug #209. This fixes it by checking if the
event is already known in the database.
I am not 100% happy with this solution as this database api is impossible
to be implemented with a sqlite db. Once we start to refactor the whole sync update logic
we maybe could find a better way, but only the fox god knows.
2021-09-14 08:29:54 +02:00
Krille Fear 1e2ccabe85 fix: Missing null fallback when update notificationCount
Previously when using RoomUpdate in the constructor the notificationCount to update
was never null and set to 0 if it was missing. Now that we are
no longer using it, I forgot to
add the null fallback at this point.
This leads to serious crashes in the apps at runtime
and thats why I bump the version here as well!
2021-09-13 16:42:55 +02:00
Christian Pauly 00771fc209 refactor: _updateUserDeviceKeys method 2021-09-13 14:58:07 +02:00
Krille Fear 56af96c7ea fix: Get direct chat from user ID method
The method was not type safe and therefore there
was no warning that with the sortOrder changes
now DateTimes are compared which leads to
an exception in the app if not using converting to milliseconds first.
2021-09-13 13:53:37 +02:00
Nicolas Werner e000fbf9be fix: compilation against newer matrix_api_lite 2021-09-10 16:40:40 +02:00
cloudwebrtc ea34f0b82c feat: MSC2746: Improved Signalling for 1:1 VoIP. 2021-09-10 02:50:24 +02:00
Christian Pauly e13b00d127 refactor: Make RoomUpdate class null safe by removing it
RoomUpdate came from a time where we had no data model for
SyncUpdates but now we have and therefore this class is just
code duplication. This removes the class
and uses the SyncRoomUpdate class from
the package matrix_api_lite instead.
It needed a lot of refactoring at some places
where I also have removed some unnecessary null or type checks.
2021-09-08 12:31:55 +00:00
Christian Pauly 5b13e0442e refactor: Make Uri extension null safe 2021-09-08 12:31:55 +00:00
Christian Pauly 92755c07d3 refactor: Don't create dummy User object just to start a new chat 2021-09-08 12:31:55 +00:00
Christian Pauly 210c925a0a fix: Do not handle sending event updates which are already synced
This is an edge case which might occour
on unstable data connections. The user sends an event and receives the sync
before the response to the sending
http request. This leads to duplicated
events while the response actually
should be ignored at this point.
2021-09-08 11:33:36 +02:00
Christian Pauly 646d7e2640 fix: revert make bytes in EncryptedFile nullable 2021-09-06 09:35:53 +02:00
Christian Pauly 2cd32a8547 fix: Make bytes in encrypted file nullable
This was a mistake to make them non nullable. There are fields in the app where
we create this object without bytes.
2021-09-06 08:46:23 +02:00
Christian Pauly 630203e7b6 fix: Check if database got disposed in keyManager 2021-09-03 15:05:34 +02:00
Christian Pauly 524b09c572 feat: Do not load all timeline events from store at once 2021-09-03 14:58:43 +02:00
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
Christian Pauly 803c7598c6 refactor: Workarounds for missing mHeroes in rooms
Normally we do not need a workaround here at all but we had
one in the displayname calculation for
historical reasons. A "good" server should always send the mHeroes correctly.
Instead of removing this workaround completely we do a compromise and implement a more
lightweight alt behaviour by just saying that in a DM room with no
heroes, the directChatMatrixId will be used. This is the same behaviour like in Element
and needs way less lines than before and also covers the avatar
calculation. For Synapse we seem to not need this but for Conduit it
might be helpful.
2021-09-02 07:00:12 +00:00
Christian Pauly fb62307730 fix: Check if client is disposed in a callback
This fixed an edge case in the tests.
2021-09-02 06:43:06 +00:00
Christian Pauly d921f38734 feat: Pin invited rooms
Invitations should always be on top of the
room list. This makes it an optional parameter now which defaults to
true.
2021-09-02 06:43:06 +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
Sorunome 33d31cecd1
fix: Missing chatUpdate.prev_batch != null test
We *always* have to update the in-memory prev_batch if it is non-null
2021-09-01 17:42:49 +02:00
Christian Pauly 62694248b9 refactor: Make UIA Request null safe 2021-08-30 09:26:34 +02:00
Christian Pauly efca583cf5 refactor: SyncUpdateExtension null safe 2021-08-30 09:20:17 +02:00
Christian Pauly 8ae77215b5 refactor: SpaceChild and SpaceParent null safe 2021-08-30 09:20:17 +02:00
Christian Pauly dd48a379ec refactor: runInRoot null safe 2021-08-30 09:20:17 +02:00
Christian Pauly 8621f82333 refactor: Null safe receipt 2021-08-30 09:20:17 +02:00
Christian Pauly 2589206851 refactor: Null safe QueuedToDeviceEvent and fix CamelCase filename 2021-08-30 09:20:17 +02:00
Christian Pauly 607658dcda refactor: Null safe QueuedToDeviceEvent and fix CamelCase filename 2021-08-30 09:20:17 +02:00
Christian Pauly 4b9a2945f4 refactor: Null safe multilock 2021-08-30 09:20:17 +02:00
Christian Pauly 0cd73e846d refactor: Null safe matrix localizations 2021-08-30 09:20:17 +02:00
Christian Pauly f311ca62e0 refactor: Make markedUnread null safe 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 5eb2d22207 refactor: Make eventupdate 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
Christian Pauly 8f35683120 refactor: Make encryption utils null safe 2021-08-30 09:20:17 +02:00
Christian Pauly 4bee82dbe0 fix: uiaRequests send broken auth object at first try
We should just let the `auth` object null and dont send it at the
first try and wait for the servers response. This worked in the past
but now it is broken because of changes in the
matrix_api_lite. This could also be fault for some
bootstrap issues.
I have also removed an unnecessary check if a String is a String and just made it a
null check because this was intended at this point.

Because of that this blocks uiaRequests it is a hotfix and therefore directly bumps the version.
2021-08-30 08:31:20 +02:00
Sorunome ffb6fd426c
fix: Requesting history being funky
As it turns out, some of the code set the prev_batch for rooms too
early to an empty string. For synapse this means "request from the start",
for conduit it is just an error. This commit fixes that by never resolving
null --> empty string, but instead throw an error.
2021-08-29 12:56:16 +02:00
Sorunome 024e0de4b9
fix: Don't lag when sending messages in big rooms
The old mentionMap was very inefficient to build and scaled badly with
room member size. This resulted in noticable lag when sending any message
in a large room, no matter if it contained a message or not.
Now, the algorithm is severly optimized and mentions (and emotes) are
only loaded when actually used.
2021-08-29 11:43:46 +02:00
Christian Pauly aeea0669d5 fix: Send unencrypted thumbnails
There was just one toString() missing and this
lead to a crash in the app because hive tries to store
an URI.
2021-08-28 17:17:25 +02:00
Sorunome f3f9b219e1 feat: Cleanup Event.plaintextBody and add [plaintextBody] to Event.getLocalizedBody
It appears that [hideEdit] in Event.getLocalizedBody was written in a way that it
assumes a valid event body. This was also fixed, while also adding tests for the
various parameters of Event.getLocalizedBody
2021-08-28 09:46:03 +00:00
Sorunome b849c828e3
fix: String.parseIdentifierIntoParts not working with unicode matrix.to links
Some clients do not uri-encode the identifier for matrix.to links, so we must
handle if we can't uri-decode them
2021-08-28 11:19:26 +02:00
Jayesh Nirve 4af6763765
fix: missing null check in hideEdit condition 2021-08-27 21:11:06 +05:30
Sorunome 56817df437
fix: missing null check
It seems `device_keys` in the reply of `/keys/query` is not required. While synapse always
sent it, conduit did not, which resulted in an error.
2021-08-27 17:22:54 +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
Christian Pauly 5621c9bdb0 fix: sortAtTheEnd for LeftRoomUpdate was not set
This fixes a bug where requesting
history on archived room leads to a
wrong sorted timeline.
2021-08-25 11:06:26 +02:00
Christian Pauly e1343e9c83 fix: requestHistory() for archived rooms
Using JoinedRoomUpdate() in a fake
sync for archived rooms when requesting
the history leads to the problem that
the room is stored as a joined room
in the store which is wrong.
2021-08-25 10:46:35 +02:00
Christian Pauly 2f35277e47 refactor: Change name of archive getter to function
This is more intuitive because it is
a function that loads something from
the server and doesnt directly return
something.
2021-08-25 10:36:58 +02:00
Christian Pauly cec08b3775 feat: cache archived rooms to access them with `getRoomById`
getRoomById searches now in the local cache for the given room and returns null if not
found. If you have loaded the [archive] before, it can also return
archived rooms.
This should make it much easier to display
archived rooms in the client.
2021-08-25 09:52:57 +02:00
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
Nicolas Werner a4ac9eab66 cleaner conditions 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 93c689fd4d hotfix: Opt-out null safety for crypto files because of an error in web
`packages/matrix/src/utils/crypto/crypto.dart:19:1: Error: Null safe libraries are not allowed to export declarations from of opt-out libraries.
`
2021-08-20 13:56:15 +02: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
xenofem a1b95c0915
feat(events): add plain-text body representation from HTML
Co-Authored-By: Sorunome <mail@sorunome.de>
2021-08-17 18:33:45 +02:00
Jayesh f0dd8ca061 feat: get new_content in getLocalizedBody 2021-08-17 15:24:53 +00:00
Sorunome 98b0bd4322 feat: Add a way to get a verification request by its transaction id
A client might find the need to get the verification request object by
its transaction id, to be able to e.g. display for in-room verification
an "accept verification request" button easily.
2021-08-17 15:03:30 +00: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
Sorunome fb16b96ea6 fix: Correctly parse the reason of a spoiler
Previously only the first child node of a spoiler was considered to
determine if there should be a spoiler reason. This was, unfortunately,
incorrect, as soon as e.g. the reason had more than one space. This is
fixed by properly iterating all child nodes to search for the reason.
2021-08-17 07:33:53 +00:00
Christian Pauly 37cfadd7e9 fix: Add space states to important events
We need the space state events in the important events to be able to
differentiate rooms and spaces in the room list.
2021-08-17 06:47:25 +00:00
Sorunome 0e6ed1c51e
feat: Allow specifying extraContent for Room.sendFileEvent, in case clients want to specify some custom stuff 2021-08-16 19:03:15 +02:00
Jayesh Nirve 5761fb77cb
remove extra if null 2021-08-14 17:24:37 +05:30
Jayesh Nirve 2e7bf1a5c9
fix toDouble was called on null when you had a pinned room 2021-08-13 18:35:46 +05:30
Lukas Lihotzki 0b531d3e99 fix: tryGet for room account data 2021-08-09 11:12:49 +02:00
Marcus f91f662c75 chore: update to matrix_sdk_lite 0.4.1 2021-08-05 12:10:45 +00:00
Nicolas Werner 08c808562b fix: Typo in key backup requests
This may lead to messages not decrypting after interactive verification,
which would make the user manually press the request keys button.
2021-08-03 13:18:15 +00:00
Jindřich Pikora cf441e533d refactor: rename LoginState.logged to loggedIn 2021-08-03 12:26:17 +00:00
Nicolas Werner 162436cc8d fix: accidental OTK uploads on internal fakeSync 2021-08-02 20:52:09 +02:00
Christian Pauly 4ca69e3e1d fix: Missing required field `nextBatch` 2021-07-27 10:50:06 +02:00
Christian Pauly e8d511a371 fix: Missing null checks in syncUpdate handling 2021-07-27 10:49:50 +02:00
Lukas Lihotzki 46b2f8898e fix: use TryGet.optional 2021-07-26 15:33:36 +02:00
Lukas Lihotzki 6d6830505f refactor: implement http timeouts in this package 2021-07-26 15:33:36 +02:00
Lukas Lihotzki 8665f092f4 chore: matrix_api_lite 0.4.0 2021-07-26 14:54:22 +02:00
Lukas Lihotzki bc2dac2ecc refactor: use more specific type 2021-07-26 14:40:15 +02:00
Nicolas Werner 179f73db3a fix: Upload OTKs if the otk_count field is missing
fixes #180
2021-07-26 09:47:05 +02:00
Christian Pauly 209035ffbd refactor: Use official Dart isolates
The isolates package is discontinued and not compatible
with the newest Dart version.
dart:isolate is not an option because importing this
library makes it impossible to run the matrix
SDK on dart web native. It just won't
build. So we now just depend on
that the flutter app pass through the compute method.
2021-07-21 12:34:43 +02:00
Christian Pauly 99c900be9c fix: Add missing null check
With Synapse 1.38 SyncUpdate.accountData is null if it is empty.
2021-07-19 09:18:23 +02:00
Sorunome a1594fd9ac
feat: Add general image pack handling as per MSC2545
This also deprecates the old ways to access just emoticons, as the MSC
now covers both emoticons and stickers!
2021-07-18 18:46:32 +02:00
Sorunome ee287a09b9
feat: Add support for nicer mentions
This PR adds support for nicer mentions in markdown: You can now
fetch the mention string of a user with `user.mention` which is
human-friendly (typically contains the display name), which will get
properly pillified upon passing through the markdown parser.
2021-07-18 17:29:25 +02:00
Sorunome 44b7c96d73
fix: preserve homeserver port when creating thumbnail URIs 2021-07-11 13:15:57 +02:00
Sorunome cd5131daa5
fix: Add locking to sending encrypted to_device messages to prevent potential race conditions
Due to chunked lazy sending of megolm sessions it was in theory that we encrypted two olm
messages to the same device in different futures out-of-order. Introducing locking here should
fix this (increadibly rare, so far only theoretical?) race-condition
2021-07-11 13:06:39 +02:00
Sorunome e86353a412
fix: Provide a reasonable well-known fallback
If the well-known look fails (not json, 404, etc.) we should assume a
reasonable fallback (domain part with https prepended). As clients are
expected to call Client.checkHomeserver on the resulting domain anyways
we can safely assume this default, as it is still validated, if there
is actually a matrix homeserver running on that endpoint.
2021-07-11 12:26:48 +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 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
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 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
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
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 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 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 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 c387b33e9f refactor: Make support for file storing optional in database API 2021-06-01 15:27:18 +02:00
Christian Pauly ab0ff46900 refactor: Remove types for timeline callbacks
These types weren't that helpful anyway and their names were not compatible
with the new linter rule of Flutter 2.2.
2021-06-01 12:57:52 +02:00
Christian Pauly 73db010db4 fix: Make QueuedToDeviceEvent store content as String OR Map
Temporary fix to stay compatible to Moor AND a key value store
2021-06-01 12:56:43 +02:00
Christian Pauly d0f67f914a refactor: Add sortOrderKey and check for this while Event creation
This makes it easier to write a store which just stores the Event json and
does not have a dedicated scheme for
each object like Moor has.
2021-06-01 12:55:45 +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 9631cea83a feat: Add toJson method for StoredInboundGroupSession 2021-06-01 12:51:17 +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
Christian Pauly d1b76b01c4 fix: Try clear and try close database 2021-05-17 14:36:10 +02:00
Christian Pauly bb9a8ff7e9 fix: SdkError Exception can be anything so should be dynamic 2021-05-17 14:17:46 +02:00
Nicolas Werner 6f52c0e2c3 fix: Allow SDK users to delete the db after logout 2021-05-17 07:38:53 +00:00
Lukas Lihotzki c196610998 chore: operation names from OpenAPI spec 2021-05-12 13:56:16 +02:00
Christian Pauly 70ee808911 feat: Enhanced alias handling 2021-05-01 09:26:46 +02:00
Lukas Lihotzki fdf650abd5 refactor: avoid if-condition based on bit value 2021-04-26 18:48:54 +02:00
Lukas Lihotzki b4f755388a refactor: high-level loops 2021-04-19 18:58:59 +02:00
Lukas Lihotzki 71fdd28a8a refactor: await unconditionally 2021-04-16 14:19:42 +02:00
Christian Pauly ffef732103 refactor: enable more linter rules
enable prefer_final_locals and prefer_final_in_for_each linter rules
2021-04-14 10:29:29 +02:00