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
56495c9d13
fix gap failing to fill 2nd time + unit regression test
2021-05-27 09:10:10 +02:00
Bruno Windels
ca4d09e923
add logging and return promise from Tile.redact
2021-05-26 13:08:54 +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
8a8c5569dc
provide redact method on tile and room
...
also add some logging
2021-05-20 14:53:17 +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
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
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
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
RMidhunSuresh
72f58b6001
Change lines[i] to line
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-18 14:26:56 +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
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
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
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
b30b62416c
add option to forget archived room
2021-05-12 15:38:54 +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
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
RMidhunSuresh
7be9f93909
Make regex module-level constant
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 20:32:36 +05:30
RMidhunSuresh
03208b88d5
Move link tests to linkify
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 20:19:29 +05:30
Bruno Windels
a0e3848cf6
dispose existing view model when changing status, otherwise we leak!
2021-05-11 16:39:33 +02:00
Bruno Windels
8b8214cd1b
reference count archived rooms and keep track of active ones
...
so we don't create two instances for the same id, one for sync, and one
for displaying, and hence updates from sync being pushed on a different
instance than the one displaying, and not updating the view.
2021-05-11 16:09:58 +02:00
RMidhunSuresh
dbe76e973e
Add braces to all blocks
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 17:59:03 +05:30
Bruno Windels
82a1b37363
refresh room view model when going from joined -> archived
...
given we have a dedicated class (ArchivedRoom) for it now
2021-05-11 13:11:38 +02:00
Bruno Windels
e3c1644d09
show leave reason instead of composer for archived room
2021-05-11 13:11:11 +02:00
Bruno Windels
9ea0138ffd
don't open room view when clearing room id
2021-05-11 13:10:21 +02:00
RMidhunSuresh
3830a95af2
Cache result in TextTile
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 16:03:14 +05:30
RMidhunSuresh
051771397c
Fix bug in which links preceeded text
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 13:59:45 +05:30
RMidhunSuresh
3beaf88a8b
Rename messageFormat to body
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 13:46:38 +05:30
RMidhunSuresh
070bc96186
Fallback to empty string if content is undefined
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 13:43:54 +05:30
RMidhunSuresh
577883a1d4
Refactor loop
...
Don't handle last element separately
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 13:31:33 +05:30
RMidhunSuresh
03b971d898
Added tests for new linkify
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 12:55:39 +05:30
RMidhunSuresh
17be7c4f4d
Add newline to message
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-10 22:10:50 +05:30
RMidhunSuresh
fc3b391aa9
Use MessageBodyBuilder instead of linkify
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-10 21:41:57 +05:30
RMidhunSuresh
55f2d79d07
Move newline handling to MessageBodyBuilder
...
- Also add a insert method to reflect new design.
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-10 21:37:27 +05:30
RMidhunSuresh
787d438a74
Refactored Linkifier class into single function
...
Modified design so that linkify interacts with MessageBodyBuilder
through callbacks.
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-10 21:30:11 +05:30
RMidhunSuresh
dca649dfd4
Moved files into more appropriate locations
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-10 19:53:40 +05:30
RMidhunSuresh
2f883d049c
Return new message format instead of message text
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-08 19:20:07 +05:30
Bruno Windels
a8d4ee0dd6
different room view models don't need to initiate switching now
...
as this is triggered by observing the room status
2021-05-07 13:11:17 +02:00
Bruno Windels
6c58c61da9
move switching room view models to a dedicated observable
...
based on the observing the room status
2021-05-07 13:10:35 +02:00
Bruno Windels
644698aed7
remove room from room list when leaving
2021-05-06 14:15:47 +02:00
Bruno Windels
e1d4c75d18
pass avatar sizes from view to view model rather than repeating there
...
and risk a mismatch resulting in too large/small image
2021-04-28 14:11:35 +02:00
Bruno Windels
15dfb6c202
clarify
2021-04-28 10:05:21 +02:00
Bruno Windels
1c5b953026
hide non-joined rooms in left panel for now
...
until we support archiving/forgetting the room
2021-04-27 16:16:07 +02:00
Bruno Windels
396ec4dfd9
also in grid remove room id from nav path when refreshing room vm fails
2021-04-27 15:33:12 +02:00
Bruno Windels
799ea50c68
remove obsolete logging
2021-04-27 15:02:00 +02:00
Bruno Windels
32d9f6e830
expose inviter user id
2021-04-27 15:01:35 +02:00
Bruno Windels
a95df54978
scale down inviter avatar
2021-04-27 15:01:20 +02:00
Bruno Windels
15fba7a07d
missing semicolon
2021-04-27 14:43:26 +02:00
Bruno Windels
781235cb07
scale up room avatar
2021-04-27 14:43:13 +02:00
Bruno Windels
f902f255a4
add roomDescription property
2021-04-27 14:42:37 +02:00
Bruno Windels
b6573258fb
always show inviter if present
2021-04-27 14:42:12 +02:00
Bruno Windels
87defbfb51
sort invites most recent first
2021-04-27 14:27:14 +02:00
Bruno Windels
aaf4e79a73
make media repo available on invite
2021-04-27 11:01:33 +02:00
Bruno Windels
f2d7f5e4da
refresh vm when left room receives invite
...
clean up room vm switching in the process
2021-04-23 18:06:38 +02:00
Bruno Windels
2e9ddf9c2c
prevent key collisions between rooms and invites before creating tile vm
2021-04-22 17:22:47 +02:00
Bruno Windels
20f4474eb6
missing semicolon
2021-04-21 18:13:29 +02:00
Bruno Windels
76933e51aa
fix default avatar color being broken in room list
2021-04-21 17:48:40 +02:00
Bruno Windels
1cf49688d6
show invites at the top of the room list
2021-04-21 17:26:34 +02:00
Bruno Windels
9961d3e4fc
unused code
2021-04-21 15:48:27 +02:00
Bruno Windels
7e2870acef
wire up InviteViewModel in Session/RoomGridViewModel
...
and:
- switch to room once accepted
- close invite if rejected
2021-04-21 15:47:39 +02:00
Bruno Windels
0cc95f5083
first draft of InviteViewModel
2021-04-21 15:45:51 +02:00
Bruno Windels
16f275ca34
make pass-through props smaller
2021-04-21 15:34:35 +02:00
Bruno Windels
a91a584201
not used anymore
2021-04-21 15:33:45 +02:00
Bruno Windels
bb1c64e1ac
add left panel tile view model for invites
...
and track in-progress state in Invite so it is shared by left panel
and open invite
2021-04-20 19:01:40 +02:00
Bruno Windels
10e9e7388f
expose checking pusher on homeserver in setting
2021-04-01 15:01:04 +02:00
Bruno Windels
7b9904e423
add UI in settings for push notifs status/enable/disable
2021-03-23 18:20:23 +01:00
RMidhunSuresh
3d1ddccbd8
Add previous name in name change announcement
...
- Fixes issue 269 in which the announcement generated when a member
changes their name would show as :
<new_name> changed their name to <new_name>
instead of:
<old_name> changed their name to <new_name>
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-03-19 23:28:50 +05:30
Bruno Windels
9506bf1b81
clean up video upload error handling
2021-03-10 13:43:55 +01:00
Bruno Windels
a672b0c78a
better error handling in video decoding
2021-03-10 13:40:11 +01:00
Bruno Windels
948249bb3d
better error reporting for unsupported codecs when uploading
2021-03-10 13:39:34 +01:00
Bruno Windels
35e6dffd0b
don't rely on mime-types to decide to use main url for thumbnail
...
so it does not break when clients forget to set the mimetype
2021-03-10 10:01:07 +01:00
Bruno Windels
c6ff56a942
send video messages
2021-03-09 19:35:25 +01:00
Bruno Windels
ee6f3e5457
render video messages
2021-03-09 19:35:10 +01:00
Bruno Windels
299fcfd4d1
extract base class from image tile to inherit from for video tile
2021-03-09 19:33:54 +01:00
Bruno Windels
2d4003379e
Fix #97
2021-03-08 22:25:18 +01:00
Bruno Windels
961d0cb224
Merge pull request #249 from vector-im/bwindels/ui-sent-status
...
show message already as black when sent but no remote echo yet
2021-03-03 13:08:46 +00:00
Bruno Windels
6f6346d5c3
detect when hitting beginning of timeline when loading timeline
2021-03-02 19:29:55 +01:00
Bruno Windels
856001160b
show message already as black when sent but no remote echo yet
2021-02-26 10:40:08 +01:00
Bruno Windels
1093895133
log opening timeline
...
also load the timeline when opening it in the room, so logging
starts in the room (and we don't need to pass the logger to Timeline)
and also API-wise it makes more sense to
not return uninitialized objects
2021-02-24 11:21:04 +01:00
Bruno Windels
29df61eb8a
remove superfluous console log
2021-02-24 10:57:29 +01:00
Bruno Windels
59928432df
better logs filename
2021-02-16 17:46:07 +01:00
Bruno Windels
7dc3707871
add button to export logs
2021-02-16 15:27:24 +01:00
Bruno Windels
2f0f168c6e
show 'sending' while waiting for remote echo for filetile instead of unknown status
2020-11-20 16:38:16 +01:00
Bruno Windels
9ab81eea02
add setting for image compression level
2020-11-20 15:51:16 +01:00
Bruno Windels
f7a07a9e79
adjust fileview/tile to pendingevent changes
2020-11-20 11:45:14 +01:00
Bruno Windels
8b8d06cf3e
show error for attachments still need upload but missing after refresh
2020-11-19 14:42:29 +01:00
Bruno Windels
59a92bdf97
vm changes for improved image view
2020-11-18 20:10:05 +01:00
Bruno Windels
f6dbb23f79
better error handling for file and picture upload
2020-11-18 20:07:31 +01:00
Bruno Windels
47147f2d46
progress bar for upload, add cancel button, no lightbox while uploading
2020-11-18 20:06:34 +01:00
Bruno Windels
a930dec8db
adjust ImageTile to state machine changes
2020-11-18 13:05:10 +01:00
Bruno Windels
91f7970d66
Merge branch 'master' into bwindels/upload-images
2020-11-16 19:31:04 +01:00
Bruno Windels
d1a95c664d
require space after /me
2020-11-16 19:29:29 +01:00
Bruno Windels
671e23a123
basic reporting of image upload progress in %
2020-11-16 15:10:44 +01:00
Bruno Windels
41738ad660
local echo for image tiles
2020-11-13 19:15:21 +01:00
Bruno Windels
8b82c991e7
wire up image uploads
2020-11-13 19:15:03 +01:00
Bruno Windels
41fb3e742e
fix file upload attachment api changes
2020-11-13 19:13:35 +01:00
Bruno Windels
d2a4242e5b
support multiple attachments per event
2020-11-13 17:19:19 +01:00
Bruno Windels
6fd10b63e5
add device pixel ratio scaling while at it
2020-11-12 13:50:32 +01:00
Bruno Windels
8b16d8bc99
handle upload failures better
2020-11-11 13:06:03 +01:00
Bruno Windels
fd9eccec4d
support local echo in FileTile while uploading
2020-11-11 11:52:06 +01:00
Bruno Windels
e2dd9b9f77
fix typos/refactor errors
2020-11-11 11:47:13 +01:00
Bruno Windels
65d02072c8
hook up UI
2020-11-11 11:47:05 +01:00
Bruno Windels
7088b2cdc8
support attachment upload and sending from room api
2020-11-11 10:47:55 +01:00
Bruno Windels
2cfffa015d
WIP
2020-11-10 22:36:26 +01:00
Bruno Windels
c65e8bea11
clean up properly
2020-11-10 19:05:50 +01:00
Bruno Windels
2d8000d11d
file tile view
2020-11-10 17:50:53 +01:00
Bruno Windels
a3ca0feda9
file tile view model
2020-11-10 17:50:38 +01:00
Bruno Windels
373a42c7a8
allow downloading plaintext attachments also, with or without cache
2020-11-10 17:49:48 +01:00
Bruno Windels
a4f610ad3f
support emotes
2020-11-10 15:13:31 +01:00
Bruno Windels
fd498b3d24
no need to keep track of promise, fn is internally rate-limited now
2020-11-10 14:02:07 +01:00
Bruno Windels
44a2febce9
hook it up
2020-11-06 23:43:02 +01:00
Bruno Windels
c9147e6b9a
implement first draft of image lightbox
2020-10-30 15:20:11 +01:00
Bruno Windels
7d81306a49
return BufferHandles from the media repository
...
BufferHandles are platform specific handles to a buffer. On web,
they have a .blob and .url property.
2020-10-30 15:18:27 +01:00
Bruno Windels
68a0dd30ca
add lightbox navigation and basic view & view model
2020-10-29 11:12:32 +01:00
Bruno Windels
fe6e4464fd
pass all viewmodel options to tile view models
2020-10-29 11:10:34 +01:00
Bruno Windels
862a0ba56b
show image decryption error
2020-10-29 10:29:08 +01:00
Bruno Windels
d1e78a735a
show error in label for now
2020-10-29 10:18:05 +01:00
Bruno Windels
97c3a4b8f3
store error when loading encrypted images
2020-10-27 16:21:08 +01:00
Bruno Windels
e7ff6decbf
remove unneeded quotes
2020-10-27 16:20:41 +01:00
Bruno Windels
77dca5dd55
add update parameter when replacing tile
2020-10-27 16:19:36 +01:00
Bruno Windels
fcc4c21ad2
filter mime types for blob urls
2020-10-27 14:35:33 +01:00
Bruno Windels
ee1e62207c
apply platform changes to decrypting images
2020-10-26 17:18:17 +01:00