Commit Graph

1874 Commits

Author SHA1 Message Date
Krille a1a542d98e
refactor: Create StrippedStateEvents for invite rooms when loading from db 2024-05-06 09:42:05 +02:00
Krille 5b46ae6e31
refactor: Use strippedstatevent as base for room state and user class
Before we have used the Event class for all
state events while for invite rooms those
actually were StrippedStateEvent objects. This
created some problems like we needed to set a
fake originServerTs (usually to DateTime.now()).
Actually we don't need the additional keys for
state events most of the time so just using
StrippedStateEvent for all states and typecasting
them to event where needed is not much of a
hassle while we benefit from a more clear
structure.
This also now uses StrippedStateEvent as a base
class for the User class which makes the User
class more minimal as keys like event_id and
origin_server_ts are no longer necessary. As we
create a lot of fake User objects where we had to
put fake values in it, it brings more benefits
than problems to just get rid of those fields.
2024-05-03 14:06:49 +02:00
Krille 8c98a0058a
ci: Add tests for database on web 2024-05-02 11:18:35 +02:00
td c5b5a1cf14
chore: reduce isValidMemEvent log level 2024-04-30 21:40:43 +05:30
td a2e8830df0
chore: expose fake matrix api 2024-04-30 17:42:36 +05:30
td 0ff643f652
fix: allow mesh group call invite 2024-04-30 17:12:25 +05:30
Krille 7ed809d748
refactor: Remove unused variable 2024-04-30 07:52:43 +02:00
krille-chan a8214832c0
fix: Fetch invite state after restart app
This makes sure that the
users for an invitation are
correctly loaded so that we
can display the avatar, the
room displayname and
wether the room is a direct
chat or not.
2024-04-29 15:33:54 +02:00
td 66bd16208d
chore: update voip readme 2024-04-26 20:07:20 +05:30
morguldir df6c11775d
fix: Don't fail sync if a presence event has an empty presence field 2024-04-26 13:08:01 +02:00
td 20a31c1908
feat: famedly calls 2024-04-23 15:52:35 +05:30
td 281510b950
feat: lcov and tag olm tests 2024-04-23 15:21:46 +05:30
krille-chan 4732580c3d
fix: Make room.setPower more type safe and avoid change powerlevel in RAM before sending request to server
This fixes the bug that the
actual dart Map in the state
has been manipulated because
we have not worked with a
copy of the map. Also this
crashes if the powerlevelmap
would had a wrong type in
users.
2024-04-18 10:56:28 +02:00
krille-chan 00616f02ac
refactor: Use prevBatch from server for pagination in event search
When using the searchEvent()
method it was impossible to
paginate to the next
chunk when one chunk had
0 returned events. This
fixes it by returning the
prevBatch and makes it
possible to insert the prevBatch
again. sinceEventId is still
working but now deprecated.
2024-04-18 10:32:27 +02:00
krille-chan edcf331bf3
fix: canChangePowerLevel should return true for own user 2024-04-17 12:56:34 +02:00
td 24ccf5eeff
fix: remove msc3245 key from audio events
looks like we do not support this anyway and this confuses bridges, basically removes all voice message related things from the sdk
2024-04-12 15:53:13 +05:30
Krille 9099dd74c0
chore: Pass reason parameter when invite user to a room 2024-04-12 11:30:59 +02:00
Krille 49e6d55d32
refactor: Move file storage to mixin to not import dart:io
Original issue and former solution by
The one with the braid <info@braid.business>
Special thanks for pointing out the problem.

This fixes that dart:io is imported into the
SDK database by moving it into it's own mixin which
makes it reusable and platform independent by
using conditional imports.
2024-04-12 08:51:48 +02:00
The one with the braid 4ba6e25689
fix: dart:io import in matrix_sdk_database
- removes `Directory` field in high-level `MatrixSdkDatabase`
- migrates `Directory fileStoragePath` to `Uri fileStorageLocation`
- makes file operations in `MatrixSdkDatabase` conditional on
  `dart.libraries.js_util`
- implements a tiny stub of the file operations used in `MatrixSdkDatabase`

It seems like the Flutter tool can compile despite these imports. Sadly
the Dart standalone dart2js compiler doesn't reach there. While
refactorying the code, I decided it's likely cleaner to have a `Uri` as
storage location provider than using some fake directory or String as
relacement.

The advantage of a `Uri` at this place is the explicit `Uri.directory`
constructor available to ensure type and encoding safe directory
locations supporting both Windows and *nix.

Additionally, admitted, that's an edge-case, one could even
easily extend the use of a `Uri` based descriptor to support future
storage location accesses (e.g. IPFS or custom schemes for e.g. local
web browser based file system APIs). Using a `Uri`, one would only need
to override the three methods making use of the `fileStorageLocation`
property to handle different Uri schemes too.

Signed-off-by: The one with the braid <info@braid.business>
2024-04-12 08:50:44 +02:00
Krille 70eb3e3431
docs: Add documentation 2024-04-11 15:36:30 +02:00
krille-chan d0b1d4a651
fix: Do not use invitor avatar_url for room
When user A invites user B to
a group chat, the avatar getter
should not return the
avatar of the inviting user A.
This is not intuitive. A client might
decide to do so but IMO it makes
no sense to do this by default.
If the
room is a DM invite, user A's
avatar is already used in the
code block before.
2024-04-11 11:39:20 +02:00
Krille 849bd7ca9b
refactor: Make via fields not nullable 2024-04-11 11:32:23 +02:00
Karthikeyan S 883785db86
feat: add sendAudioEvent and isVoiceMessage method to msc extensions 2024-04-11 14:12:54 +05:30
td f7a4518c5f
fix: userMediaConstraints 2024-04-09 00:39:23 +05:30
Krille 0e867402bc
chore: Sort archive by last activity 2024-03-26 13:30:06 +01:00
td 981c3ea94d
chore: check message size before fake sync 2024-03-25 19:31:01 +05:30
td e08cf742e6
chore: add api lite readme 2024-03-25 17:46:59 +05:30
td cd94cf62a8
chore: merge api_lite and dart sdk 2024-03-25 17:22:05 +05:30
td 691190f07a
Merge remote-tracking branch 'api/td/justUseMV' into td/api 2024-03-22 21:41:45 +05:30
td b7befd781e
chore: git mv 2024-03-22 21:24:21 +05:30
Krille e266ef7312
refactor: Switch to MatrixSdkDatabase as suggested database and deprecate other ones 2024-03-22 16:05:08 +01:00
Krille 1cb7e8f9ba
fix: Typo in upload key json object creates invalid objects 2024-03-21 08:22:15 +01:00
Krille 2456a64f37
refactor: Use dart records for checkHomeserver method
This makes use of dart
records to return three
different values for one
method. This makes the
special class no longer
necessary just for
returning data.
2024-03-18 15:20:31 +01:00
Krille b90b902218
refactor: BREAKING Migrate database to new lastEvent storage method
This changes the way how the last event is stored
for each room. It is now stored next to the
room event itself in the rooms box and no longer
stored like a room state. This way we need to
bump the database version which will cause an
inital sync for the client. Be aware of this when
updating the SDK!
2024-03-18 14:11:15 +01:00
krille-chan 20073ddd49
refactor: Store lastEvent in room object instead of room state 2024-03-18 13:18:36 +01:00
Krille 0ae71fa843
feat: Add commands /ignore and /unignore 2024-03-15 10:13:11 +01:00
Krille 3d09219269
feat: Offers client.ensureNotSoftLoggedOut() to fix using client with stopped sync loop
This also makes sure that
the access token is
refreshed when calling
client.getEventByPushNotification()
which is porbably the most
common case for a client
with a stopped sync loop
doing network requests.
2024-03-14 14:49:47 +01:00
td a60a0cad69
fix: throw EventTooLarge on exceeding max fed PDU 2024-03-14 01:18:10 +05:30
td 1e90fcee93
chore: add noice/echo cancelling flags to getUserMedia 2024-03-11 10:45:43 +05:30
Krille d049e667ee
refactor: BREAKING Allow calling init when in soft logout state and fix some bugs
This fixes several problems with current soft logout
handling, as it now stores the refresh token correct and
only refreshs it 1 minute in advance instead of 5
minutes.
2024-03-07 15:49:23 +01:00
Romain GUILLOT 22df8b39a8
feat: add fromLocalStoreOnly to Event.downloadAndDecryptAttachment
Signed-off-by: Romain GUILLOT <romain.guillot@arche-mc2.fr>
2024-03-06 12:13:07 +01:00
Nicolas Werner f6fa9df2c5
fix: archived room state store logic
This was implicitly relying to the timestamp of state events getting
compared in the setState function. Fix this by using the helper
functions already used for invite and join rooms.
2024-03-04 19:31:35 +01:00
Nicolas Werner 1bde841cb2
fix: properly fetch participants when transitioning from invite to join
We used to add app the member counts of invited users and joined users,
which would make us assume the participants list is complete. Which
would mean we always return the wrong state.

Additionally there is no need to rely on if we have a cached response.
Instead we always only check for completeness instead of possibly
returning stale responses just because we fetched the members once.
2024-03-04 17:55:29 +01:00
Nicolas Werner 582963ab91
fix: Do not compare timestamps when setting roomstate
We now handle state in the correct order in the sync handler. Using the
timestamp lead to false results when we still generated a default
timestamp of "now" for events, however even without that state events
can have an older timestamp like when accepting an invite on a server
with the clock behind by a minute and we should instead rely on the sync
handler giving us state in the right order.
2024-03-04 17:53:23 +01:00
Nicolas Werner 6f82e92f2c
fix: properly overwrite loaded state for partial loaded rooms
Otherwise invites, which get converted to normal rooms, might still have
old member events set in memory, that don't match the current state.
2024-03-04 17:52:06 +01:00
Nicolas Werner 5ffa99d994
fix: Do not assume a missing timestamp means "now"
This causes issues with state handling as we prefer the newer event. It
also has knock-on effects in other places. Instead set such events to
have an obviously invalid timestamp, which makes issues easier to
identify.

This may break invites showing a timestamp or the timestamps for just
sent events, if you rely on the timestamp getting set to "now".
2024-03-04 17:49:50 +01:00
Patrick Hettich 81f33951bb
Merge branch 'main' into pat/archive-room-names 2024-03-01 12:03:00 +01:00
Krille 4b44af0eb8
chore: pass refreshToken to uiaLogin 2024-02-29 14:10:48 +01:00
Patrick Hettich 78c610ab92
Merge branch 'main' into pat/archive-room-names 2024-02-29 12:03:45 +01:00
Patrick Hettich 18ce3607c6
fix: removed prev_sender for empty chats 2024-02-29 11:57:32 +01:00