Commit graph

1694 commits

Author SHA1 Message Date
Bruno Windels
b3749f2d92 prevent long links from creating horizontal scroll 2021-05-28 15:27:44 +02:00
Bruno Windels
5afcfc3e9b fix unsent/unverified message style 2021-05-28 15:27:25 +02:00
Bruno Windels
43c082475b unify cancel option for various tiles in menu option 2021-05-28 15:27:02 +02:00
Bruno Windels
2b0fa22c8a open menu when clicking ... button on message with delete/cancel option 2021-05-28 13:14:55 +02:00
Bruno Windels
63e948fc80 change renderMessage fn to base class
as preparation to create menu items in subclasses
2021-05-28 12:32:19 +02:00
Bruno Windels
100e056d55 style the button 2021-05-28 12:22:47 +02:00
Bruno Windels
f82e873da8 adjust message status styling to css grid changes 2021-05-28 12:17:59 +02:00
RMidhunSuresh
fc898f8c7e Set new svg icon as background-image of button
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-28 15:47:50 +05:30
RMidhunSuresh
ba11cdd83f Remove ellipsis character
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-28 15:47:06 +05:30
RMidhunSuresh
3f99b7247c Bring in vertical ellipsis icon
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-28 15:46:10 +05:30
Bruno Windels
bbf9832d6a switch timeline messages to css grid, and add menu button 2021-05-28 12:09:21 +02:00
Bruno Windels
13ac41b264 delete obsolete code 2021-05-28 12:02:35 +02:00
Bruno Windels
2da7ef4280 can only look in remote entries here as PEEs never return an event id 2021-05-27 10:28:02 +02:00
Bruno Windels
5e9ce365bf also apply local relations when loading at top 2021-05-27 10:27:44 +02:00
Bruno Windels
c6e2607f1f guard against updates emitted while populating during first subscription
This came up now because Timeline uses a MappedList to map PendingEvents
to PendingEventEntries. In the map function, we setup links between
entries to support local echo for relations. When opening a timeline
that has unsent relations, the initial populating of the MappedList
will try to emit an update for the target entry in remoteEntries.
This all happens while the ListView of the timeline is calling subscribe
and all collections in the chain are populating themselves based on
their sources.

This usually entails calling subscribe on the source,
and now you are subscribed, iterate over the source (as you're not
allowed to query an unsubscribed observable collection, as it might not
be populated yet, and even if it did, it wouldn't be guaranteed to be
up to date as events aren't flowing yet).

So in this concrete example, TilesCollection hadn't populated its tiles
yet and when the update to the target of the unsent relation reached
TilesCollection, the tiles array was still null and it crashed.

I thought what would be the best way to fix this and have a solid model
for observable collections to ensure they are always compatible with
each other. I considered splitting up the subscription process in two
steps where you'd first populate the source and then explicitly start
events flowing.

I didn't go with this way because it's really only updates that
make sense to be emitted during setup.
A missed update wouldn't usually bring the collections out of sync
like a missed add or remove would. It would just mean the UI isn't
updated (or any subsequent filtered collections are not updated),
but this should be fine to ignore during setup, as you can rely
on the subscribing collections down the chain picking up the update
while populating. If we ever want to support add or remove events
during setup, we would have to explicitly support them, but for now
they are correct to throw.

So for now, just ignore update events that happen during setup
where needed.
2021-05-27 10:02:05 +02:00
Bruno Windels
a8e43d4850 remove leftover logging 2021-05-27 09:18:22 +02:00
Bruno Windels
a93b1af047 ensure these don't fail on a gap entry 2021-05-27 09:16:25 +02:00
Bruno Windels
afc3db2f33 unrelated todo note for later 2021-05-27 09:11:57 +02:00
Bruno Windels
2b5dcff836 consistent naming 2021-05-27 09:11:13 +02:00
Bruno Windels
56495c9d13 fix gap failing to fill 2nd time + unit regression test 2021-05-27 09:10:10 +02:00
Bruno Windels
15048bd9c3 very basic redact button on all text messages 2021-05-26 13:11:20 +02:00
Bruno Windels
da02b5fe2d transfer local echo state when replacing event entry
e.g. after decryption or remote echo of other relation comes in
2021-05-26 13:10:19 +02:00
Bruno Windels
ca4d09e923 add logging and return promise from Tile.redact 2021-05-26 13:08:54 +02:00
Bruno Windels
a5d5c55835 MappedList.findAndUpdate 2021-05-26 13:08:33 +02:00
Bruno Windels
ce7147e463 put redactions in their own view, and allow aborting while still queued 2021-05-26 13:07:56 +02:00
Bruno Windels
cb622be653 rerender tile when becoming or stopped being redacted 2021-05-25 12:58:20 +02:00
Bruno Windels
af45810582 add support for redactions (and relations) local echo 2021-05-21 16:59:29 +02:00
Bruno Windels
b55efb7f11 ensure updateEntries is always set in the result of GapWriter 2021-05-21 16:58:04 +02:00
Bruno Windels
c934049523 also resolve related event ids when removing remote echo during sync
as /sync races with /send, and remote echo may happen first.
It's important for local echo that the pending redaction/relation
will also get attached to the remote echo before /send returns,
otherwise the remote echo would be "unannotated" until /send returns
2021-05-21 10:52:46 +02:00
Bruno Windels
c3fb35848b emit update when receiving event id for related event ahead in the queue 2021-05-20 15:02:45 +02:00
Bruno Windels
619cf9bcbb this should be filter rather than find, we iterate it 2021-05-20 15:02:24 +02:00
Bruno Windels
f271517446 log redaction during sync 2021-05-20 15:02:14 +02:00
Bruno Windels
8a8c5569dc provide redact method on tile and room
also add some logging
2021-05-20 14:53:17 +02:00
Bruno Windels
9721432a8c remove pending events that failed because of permanent error
so they don't get stuck
2021-05-20 14:52:30 +02:00
Bruno Windels
4ce66fc8a1 allow concurrent removals when iterating pending events
so we can remove failed events in the next commit
2021-05-20 14:51:04 +02:00
Bruno Windels
618a32e6c0 revert last tried pending event status to waiting when offline
so we don't fail the check if we can immediately remove when redacting
2021-05-20 14:49:54 +02:00
Bruno Windels
df9e886f32 fix lint 2021-05-20 13:22:54 +02:00
Bruno Windels
b655c34bbb also show reason for redaction 2021-05-20 13:20:12 +02:00
Bruno Windels
780ad44032 render redacted messages 2021-05-20 13:15:35 +02:00
Bruno Windels
94b0bc82ef writing relations is async 2021-05-20 12:50:16 +02:00
Bruno Windels
814e92ad92 fix missing import 2021-05-20 12:50:16 +02:00
Bruno Windels
39bed4b0fc fix lint here 2021-05-20 12:50:16 +02:00
Bruno Windels
9b923d337d write redactions during sync 2021-05-20 12:50:16 +02:00
Bruno Windels
edaac9f436 draft redaction support, no local echo yet 2021-05-20 12:50:16 +02:00
Bruno Windels
1f17edc248 fix undefined variable, this probably breaks restoring the last url 2021-05-20 11:11:07 +02:00
Bruno Windels
df8686099f
Merge pull request #356 from MidhunSureshR/linkify-doc
Add jsdoc comments for clickable link code + Minor Changes
2021-05-18 13:30:23 +00:00
Bruno Windels
c3ef801566 offer back button when session loading fails 2021-05-18 15:27:31 +02:00
Bruno Windels
d567664d8b ensure there is a session id in last-session action 2021-05-18 14:47:45 +02:00
Bruno Windels
2c7ea44afd don't expose last url to root VM so it isn't confused by empty path
instead, check the length of the path in a dedicated method in
the router
2021-05-18 14:27:09 +02:00
Bruno Windels
dd880529ac make redirects in initial url be reflected in url bar 2021-05-18 13:52:31 +02:00
Bruno Windels
1bec1033d1 translate last-session to a real session id 2021-05-18 13:52:13 +02:00
Bruno Windels
4c5be997fe fix menu alignment with extra option
we'll need to have a closer look how these alignment options make sense
but for now this will do
2021-05-18 11:58:06 +02:00
Bruno Windels
754e7e7bb2 clarify with comments 2021-05-18 11:54:18 +02:00
Bruno Windels
f92b1df4fc update copyright comments 2021-05-18 11:54:10 +02:00
Bruno Windels
54798d3079 unreachable now 2021-05-18 11:50:02 +02:00
Bruno Windels
32e47bc660 remove unused imports 2021-05-18 11:49:25 +02:00
Bruno Windels
3724fc6765 log join network call 2021-05-18 11:49:16 +02:00
Bruno Windels
2cf100efaa refine unknown room view 2021-05-18 11:46:55 +02:00
Bruno Windels
c04a8140a3 offer to rejoin archived room from menu 2021-05-18 11:07:46 +02:00
Bruno Windels
03be63572d ask to join when room id is unknown 2021-05-18 11:07:19 +02:00
Bruno Windels
3acb3bb48c fix memory leak when switching room ids 2021-05-18 11:06:48 +02:00
Bruno Windels
9679058081 allow to join room by id or alias 2021-05-18 11:05:31 +02:00
RMidhunSuresh
72f58b6001 Change lines[i] to line
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-18 14:26:56 +05:30
RMidhunSuresh
1d63799c9b Added js-doc for formatFunction
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-17 20:56:12 +05:30
RMidhunSuresh
11d551f8a3 Add js-doc for parsePlainBody
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-17 20:39:23 +05:30
RMidhunSuresh
d671bcec31 Add js-docs for linkify function
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-17 20:32:35 +05:30
Bruno Windels
8ff1f91d2c bring down lint error count, delete some old, inactive unit tests 2021-05-17 12:59:04 +02:00
Bruno Windels
645470cd03 no need for private prop here 2021-05-17 12:45:55 +02:00
Bruno Windels
ce976226f9 rename MessageTile to BaseMessageTile
since MessageTile doesn't have a shape property anymore
2021-05-17 12:15:13 +02:00
Bruno Windels
67714040e7 rename BaseTextMessageTile to BaseTextTile 2021-05-17 12:14:15 +02:00
Bruno Windels
fa64fcce2d expect MessageBody here with parts property
and do some cleanup
2021-05-17 11:29:00 +02:00
Bruno Windels
054c51b82f add caching MessageBody in BaseTextMessageTile,use in EncryptedEventTile
missing body in EncryptedEventTile was what caused the bug
2021-05-17 11:27:30 +02:00
Bruno Windels
01b8b397b6 expose sourceString on result of parsing message body
and also do some cleanup
2021-05-17 11:26:30 +02:00
Bruno Windels
f5f25c3019 fix DM room names appearing as "Empty room"
because we weren't properly awaiting the heroes to be loaded
2021-05-12 23:07:25 +02:00
Bruno Windels
62bb891e79 don't accept closing parenthesis as last character of url 2021-05-12 22:49:34 +02:00
Bruno Windels
56699baaf1 dont need this anymore 2021-05-12 18:31:13 +02:00
Bruno Windels
86d60496c0 Don't move read rooms to lower sorting position 2021-05-12 18:28:39 +02:00
Bruno Windels
402a5e5d54 fix room list sorting not keeping sorting position after clearing unread 2021-05-12 18:26:55 +02:00
Bruno Windels
93c08c16c1
Merge pull request #345 from MidhunSureshR/linkify
Render URLs as clickable links in timeline
2021-05-12 15:40:46 +00:00
Bruno Windels
10ac1dc29c make options vertical ellipsis larger 2021-05-12 17:29:12 +02:00
Bruno Windels
b30b62416c add option to forget archived room 2021-05-12 15:38:54 +02:00
Bruno Windels
5d139dff43 Support deleting data in several stores for room id 2021-05-12 15:38:11 +02:00
Bruno Windels
e233caf7ac change order of type and scope in operation index key to scan per scope 2021-05-12 15:36:48 +02:00
Bruno Windels
2d2ec25f86 add comment clarifying popup arrangement options 2021-05-12 14:02:15 +02:00
Bruno Windels
f331d84292 add options menu in room header with leave room option 2021-05-12 13:59:08 +02:00
RMidhunSuresh
851e8d34a4 Incorporate better regex from review
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-12 16:15:30 +05:30
RMidhunSuresh
00bcdbab37 Fix broken test
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-12 16:15:07 +05:30
RMidhunSuresh
bb74656348 Grammar fix
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-12 15:59:44 +05:30
RMidhunSuresh
2e657fbbbd Add failing test for link ending with <
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-12 15:56:33 +05:30
RMidhunSuresh
55b7c55efe Pull callback args into variables
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-12 15:52:05 +05:30
Bruno Windels
afd33f4b77 use constant for member event type 2021-05-12 12:19:05 +02:00
RMidhunSuresh
9d898bdf47 Change word to improve meaning
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:32:05 +05:30
RMidhunSuresh
b521797f4d Explain the reason for double escapes
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:28:14 +05:30
RMidhunSuresh
ef15968a3d Add some helpful pointers
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:26:45 +05:30
RMidhunSuresh
c6d7cef491 Refactor regex to improve readability
- Split regex into components
- Add informative comments

Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:21:37 +05:30
RMidhunSuresh
31740f4ec6 Put regex into separate file
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:18:52 +05:30
RMidhunSuresh
6f0362802a Move linkify.js to separate directory
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:17:08 +05:30
RMidhunSuresh
027f6020e7 Modified regex to allow unicode in fragment
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 22:15:36 +05:30
RMidhunSuresh
e20810b0cb Add test for unicode after fragment without path
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 20:44:39 +05:30
Bruno Windels
ca84f485ab fix tests 2021-05-11 17:04:36 +02:00