Commit Graph

274 Commits

Author SHA1 Message Date
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 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
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
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 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
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
Jindra a0bab1b587 feat: choose memberships returned by requestParticipants() 2021-11-02 09:27:00 +01: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
Jindřich Pikora c6e0359522 refactor: Change event status to enum 2021-10-14 13:31:07 +00:00
Lukas Lihotzki 66f29c7685 refactor: move voip content in its own file 2021-10-08 14:26:23 +02:00
Jayesh Nirve 77ca7523d0 refactor: remove unused clientId 2021-09-24 16:05:05 +02:00
Sorunome b455a54304 fix: Less log clutter about tags 2021-09-22 23:32:27 +00:00
Sorunome 1652213ab0
fix: Room previews not showing replies 2021-09-16 15:48:41 +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
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 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 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 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
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
Lukas Lihotzki 9087f08775 chore: mxc url in Uri 2021-08-23 11:05:47 +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
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
Lukas Lihotzki 8665f092f4 chore: matrix_api_lite 0.4.0 2021-07-26 14:54:22 +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
Christian Pauly c0c7f68bf3 chore: Rename to matrix 2021-06-18 09:58:25 +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 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 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 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 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
Lukas Lihotzki d413f54f10 refactor: use OpenSSL for file e2ee 2021-04-12 14:49:03 +02:00
Christian Pauly fb0177ac5f feat: Implement spaces 2021-04-12 09:24:20 +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
Krille Fear 9bef8452d3 docs: Clean up dart documentations
Changing to `code` blocks where it cant be resolved to [stuff] things.
2021-03-16 12:32:21 +00:00
Krille Fear 5cf97886b4 Merge branch 'soru/strip-at-room' into 'main'
feat: Escape @room in the reply fallback when replying

See merge request famedly/famedlysdk!667
2021-03-09 18:12:47 +00:00
Sorunome 6d171542af
feat: Escape @room in the reply fallback when replying 2021-03-09 18:29:13 +01:00
Christian Pauly 1f8285c3e7 refactor: Room states 2021-03-09 17:28:55 +00:00
Christian Pauly 5c35799e18 refactor: Request user 2021-03-01 10:32:04 +01: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 f08dabaf03
fix: Make defaults catch if constructor is null 2021-02-11 12:09:44 +01:00
Sorunome fcb8d48bd7
feat: Add command parser 2021-02-09 18:19:38 +01:00
Krille Fear f58da0c33f Merge branch 'krille/invite-direct-chat' into 'main'
chore: Determine invites as direct chats too

Closes app#1110

See merge request famedly/famedlysdk!624
2021-02-03 10:08:24 +00:00
Sorunome 21a5854fbf
fix: Attempt event decryption on fetching replied events 2021-02-02 12:51:43 +01:00
Christian Pauly 94e3e5f681 chore: Determine invites as direct chats too 2021-01-26 14:04:55 +01:00
Sorunome 70a4dad1c3
fix: Emotes MSC compliance 2021-01-20 10:36:06 +01:00
Sorunome 88f8a57863
fix: Correctly generate reply fallbacks 2021-01-14 13:51:17 +01:00
Krille Fear 347a1ee6e0 Merge branch 'krille/hide-verification' into 'main'
fix: Hide verification timeline events in lastEvent

Closes app#1059

See merge request famedly/famedlysdk!612
2021-01-14 12:21:15 +00:00
Christian Pauly c94da38438 fix: Hide verification timeline events in lastEvent 2021-01-13 13:30:47 +01:00
Christian Pauly 783f734713 change: setUnread locally 2021-01-13 08:41:36 +01:00
Christian Pauly 8b13df8c9d refactor: Add json parsing for encryption and encrypted content 2021-01-08 13:26:25 +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
Christian Pauly 19905e348a fix: Missing null check 2020-12-29 09:44:13 +01:00
Sorunome 768baa7602
chore: Implement a proper deep-copy function for json maps 2020-12-28 14:35:21 +01:00
Christian Pauly f91349a45e fix: sendTypingNotification 2020-12-27 09:58:14 +01:00
Sorunome f5b1c5fc5f
fix: Don't assume a power level of a person is an int 2020-12-22 10:05:44 +01:00
Christian Pauly 57286d4c28 feat: Use logger package 2020-12-19 12:04:25 +00:00
Sorunome 405306f84e
feat: Add == operator to the Receipt, User and Room objects 2020-12-19 12:15:50 +01:00
Christian Pauly 5167e92913 feat: Update room api 2020-12-04 12:23:40 +01:00
Christian Pauly bec1761172 refactor: content parsing 2020-11-30 15:34:46 +01:00
Marcus Hoffmann 2e3a2d38c0 fix: mark read wasn't sending read receipts 2020-11-26 01:58:49 +01:00
Sorunome bed7de81c7
fix: Wrong emote pack identifier 2020-11-25 15:17:22 +01:00
Marcus Hoffmann 9b3f9e4ef7 feature: allow marking rooms as unread 2020-11-25 12:03:19 +01:00
Christian Pauly 411d29cc89 feat: Implement room tombstones 2020-11-21 15:28:05 +01:00
Sorunome b67ab870fa
fix: Use Uri.tryParse where applicable 2020-11-19 15:20:27 +01:00
Sorunome 588d7eb1a6
fix: Set new state events by sortOrder, rather than originServerTs 2020-11-08 15:13:02 +01:00
Sorunome 33b1e36efd
fix: Timeline history requests causing "scrolling" and sometimes ordering things wrong 2020-11-07 11:32:51 +01:00
Christian Pauly 793d398d72 fix: Automatic leave broken invites 2020-11-06 09:43:48 +01:00
Christian Pauly cbae6b9c84 fix: Better handling leave broken room on join 2020-11-05 14:03:58 +01:00
Christian Pauly 388598ef67 fix: Join broken room handling 2020-11-05 13:43:36 +01:00
Sorunome 343c26b3ed fix: Decrypt last message on received megolm key 2020-10-26 07:49:02 +00:00
Christian Pauly 66e590073e refactor: Event Update Type 2020-10-22 13:01:35 +02:00
Sorunome c571fe4dd5 fix: don't assume msgtype is a string 2020-10-08 12:29:59 +00:00
Sorunome 74bd1d331b
fix: Messages being encrypted for too many devices 2020-10-04 14:20:17 +02:00
Sorunome b6754fbc46
chore: update emote stuff 2020-09-24 15:59:46 +02:00
Christian Pauly 5019ebfeb5 feat: Auto retry send events 2020-09-21 16:51:40 +00:00
Sorunome 3187275ed7
fix: Don't query /members over and over 2020-09-18 12:41:26 +02:00
Sorunome 053585852e
Merge branch 'send-location' of gitlab.com:JohnAZoidberg/famedlysdk into main 2020-09-18 09:43:10 +02:00
Christian Pauly b05e4da34f fix: Last event calculation 2020-09-16 10:23:37 +02:00
Sorunome aa9940fdbc
fix: Room.requestUser sometimes throws an error 2020-09-10 09:37:56 +02:00