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
RMidhunSuresh
7be9f93909
Make regex module-level constant
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 20:32:36 +05:30
Bruno Windels
1738a0ea3c
need to create archived room when leaving, otherwise it isn't stored
2021-05-11 16:58:16 +02:00
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
Bruno Windels
965700272b
remove archivedRoom map, it's unused and just complicating for now
2021-05-11 16:09:01 +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
Bruno Windels
be7934057e
lint
2021-05-11 13:08:13 +02:00
Bruno Windels
51d13fd8d2
update comments for Invite updates
2021-05-11 13:07:57 +02:00
Bruno Windels
6bb9140720
have individual getters for kickDetails
2021-05-11 13:07:31 +02:00
Bruno Windels
00d4dc9518
rename kickAuthor to kickedBy
2021-05-11 13:07:11 +02:00
Bruno Windels
24731687dc
log room id in invite and archivedroom afterSync
2021-05-11 13:05:02 +02:00
Bruno Windels
e775ed12b4
sync arch. rooms with Room during init. sync to create summary, timeline
...
when receiving archived rooms during initial sync, sync them with Room
(e.g. as a joined room) first so the members, timeline get written
and the summary gets created which is then adopted by the ArchivedRoom.
2021-05-11 13:02:43 +02:00
Bruno Windels
2087059c0b
fix archived room summary key path now the summary is nested
2021-05-11 13:01:19 +02:00
RMidhunSuresh
3830a95af2
Cache result in TextTile
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 16:03:14 +05:30
RMidhunSuresh
86f4b6186a
Refactor functions to accept single parameter
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 15:03:20 +05:30
RMidhunSuresh
e4a143659c
Refactor unwanted getter into constant object
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-11 14:02:25 +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
Bruno Windels
99d5467ad1
make archived room part of sync lifecycle (draft)
2021-05-10 18:42:30 +02:00
Bruno Windels
79d97737bc
calculate leave details in archived room
2021-05-10 18:41:43 +02:00
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
06a6cae4af
Rename MessageBodyBuilder to MessageBodyBuilder
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-10 19:50:26 +05:30
RMidhunSuresh
bbeb0a5764
Transform new message format into DOM elements
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-08 19:22:49 +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
RMidhunSuresh
9ca0d93a01
Add tests for linkify
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-08 19:18:45 +05:30
RMidhunSuresh
32fd1eb318
Implement linkifier
...
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-08 19:17:43 +05:30
RMidhunSuresh
3c46a07a1e
Implement object format to represent chat messages
...
Every chat text message can be split into parts such as text, newline
and links.
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-05-08 19:02:44 +05:30
Bruno Windels
1216378783
Extract BaseRoom from Room with summary and timeline, not sync or send
...
Which we can then reuse to create a dedicated ArchivedRoom class
which will:
- have only relevant methods and properties (e.g. no sendEvent)
- turns out that you can still receive a leave room in the sync
(e.g. when banned after kick) so we'll make the sync for
an archived room separate from room to not overcomplicate the sync
there, much like we did for Invite already.
2021-05-07 16:13:49 +02:00
Bruno Windels
06868abdb2
with room status being a thing, we don't need the invite on the room
2021-05-07 14:42:29 +02:00
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
6bb8e2fa43
allow loading an archived room
2021-05-07 13:10:10 +02:00
Bruno Windels
1b83ae7d8a
allow observing the room status
2021-05-07 13:09:38 +02:00
Bruno Windels
243d105aad
support getting the room status for a room: invited, joined or archived
2021-05-07 13:08:39 +02:00
Bruno Windels
3143f2a791
also make an observable version of a retained value
2021-05-07 13:06:20 +02:00
Bruno Windels
36f54420cf
extract RetainedValue from MemberList
2021-05-07 13:06:00 +02:00
Bruno Windels
030b6837ef
rename
2021-05-06 15:27:32 +02:00
Bruno Windels
7e450071b1
clear all room state when rejoining room
2021-05-06 15:27:10 +02:00
Bruno Windels
8c2ae863fd
clean up rejoin storage logic somewhat
2021-05-06 15:26:48 +02:00
Bruno Windels
f16c08f13e
remove room from all user identities when leaving
...
and delete identity as well as all device identities if no rooms left
2021-05-06 15:24:52 +02:00
Bruno Windels
a12f10dc3c
make type explicit
2021-05-06 15:23:33 +02:00
Bruno Windels
00d8f81bdd
clear all room state before rejoining room
2021-05-06 14:15:47 +02:00
Bruno Windels
15080edfa7
fix failing test now we don't remove invite from collection anymore here
2021-05-06 14:15:47 +02:00
Bruno Windels
45837f7377
don't set dmUserId when not a DM
2021-05-06 14:15:47 +02:00
Bruno Windels
7defd4a02b
ensure the sync is limited when rejoining without overlap
...
otherwise gap would be lost. The server should do this already,
but we're just ensuring it is, to be more robust.
2021-05-06 14:15:47 +02:00
Bruno Windels
08ba4577f6
rejoin logic was throwing away the prev_batch token
2021-05-06 14:15:47 +02:00
Bruno Windels
9546b13821
attempt to load sync writer position when joining a room during sync
...
since fragments and events are not archived, just the summary,
attempt to load the room and sync writer during sync,
so we write the timeline correctly and don't cause ConstraintErrors
because unaware of fragments and events already there.
2021-05-06 14:15:47 +02:00
Bruno Windels
07535eedca
when rejoining, room will be archived so consider any non-join a rejoin
2021-05-06 14:15:47 +02:00
Bruno Windels
1258aaee7c
brevity
2021-05-06 14:15:47 +02:00
Bruno Windels
f6957278c3
write and remove archived summary when leaving/rejoining
2021-05-06 14:15:47 +02:00
Bruno Windels
644698aed7
remove room from room list when leaving
2021-05-06 14:15:47 +02:00
Bruno Windels
89461bf69a
do all collection removal from sync rather than hand callbacks to invite
2021-05-06 14:15:47 +02:00
Bruno Windels
12da71f731
unneeded ?
2021-05-06 14:15:47 +02:00
Bruno Windels
bcfc4d1fd7
have better transaction errors
2021-05-06 14:15:47 +02:00
Bruno Windels
184480ad36
no need to capture req here
2021-05-06 14:15:47 +02:00
Bruno Windels
d4d7adc7fc
add archivedRoomSummary store
2021-05-06 14:15:47 +02:00
Bruno Windels
c2716a061b
pass in userId for kickDetails
2021-05-06 14:15:47 +02:00
Bruno Windels
2cfe7034e8
extract fn
2021-05-06 14:15:47 +02:00
Bruno Windels
b13bfee3d8
support setting kickDetails in room summary
2021-05-06 14:15:47 +02:00
Bruno Windels
85385295a6
don't serialize null values in room summary
...
they only take space in the storage otherwise as we add more fields
2021-05-06 14:15:47 +02:00
Bruno Windels
9e78f8382a
dont assume there is a rooms section in the sync
2021-05-06 12:10:10 +02:00
Tawfiek
1104317a76
UI: add enterkeyhint into filter in LerftPanelView
2021-04-30 04:19:58 +02:00
Tawfiek
31a9da09b2
UI: add enterkeyhint end into the MessageComposer
2021-04-30 04:15:11 +02:00
Bruno Windels
ad3b7f7f00
also add avatar size for timeline
2021-04-28 14:12:35 +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
b35b6ec496
work around --avatar-size being compiled away in build
2021-04-28 13:45:43 +02:00
Bruno Windels
bfaeffcb51
fix memory leak in settings view by using nested template builder
2021-04-28 13:05:52 +02:00
Bruno Windels
870ed3f211
add avatar size now there is no default anymore
2021-04-28 11:40:24 +02:00
Bruno Windels
25e0211ca1
Merge pull request #279 from Johennes/feature/safari-viewport
...
Manually adapt UI when keyboard shows or hides on mobile Safari
2021-04-28 11:04:43 +02:00
Bruno Windels
b23ec5ef70
remove obsolete comment
2021-04-28 10:08:11 +02:00
Bruno Windels
e850874019
clarify order
2021-04-28 10:05:34 +02:00
Bruno Windels
15dfb6c202
clarify
2021-04-28 10:05:21 +02:00
Bruno Windels
ef6f10c5a2
test for Path.replace
2021-04-28 09:53:44 +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
025320b83e
fix filtered map
2021-04-27 16:15:20 +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
c47b27428b
implement invite view + styling
2021-04-27 15:10:12 +02:00
Bruno Windels
f4f153ac4b
don't seems to throw the letter off-center more than anything else
...
apart for some rare cases ... shrug
2021-04-27 15:09:45 +02:00
Bruno Windels
a9838fed06
don't set a default avatar size in the css, makes it easier to change it
2021-04-27 15:09:29 +02:00
Bruno Windels
fbe255f837
support extra classes in static avatar
2021-04-27 15:04:01 +02:00
Bruno Windels
441bb4d5d7
keep .room-placeholder display settings separate from .middle
2021-04-27 15:03:13 +02:00
Bruno Windels
34cca2ba0f
add invite view to view gallery
2021-04-27 15:02:43 +02:00
Bruno Windels
1f36122283
remove debugging code
2021-04-27 15:02:29 +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
fd454f1e20
don't expose joinRule prop, as it is protocol specific
2021-04-27 14:26:40 +02:00
Bruno Windels
86e8b27cb3
fix middle-shown to use new active vm
2021-04-27 11:01:51 +02:00
Bruno Windels
aaf4e79a73
make media repo available on invite
2021-04-27 11:01:33 +02:00
Bruno Windels
9b9e6fceda
refine action buttons style
2021-04-27 10:32:06 +02:00
Bruno Windels
bb6664a9a8
fix room header height
2021-04-27 10:31:47 +02:00
Bruno Windels
ab8111f847
make all middle containers column flexboxes, not just the room view
2021-04-27 10:28:25 +02:00
Bruno Windels
55b576a299
rename .TimelinePanel to .RoomView_body
2021-04-27 10:28:09 +02:00
Bruno Windels
bd748549f7
fix updates in Invite not firing on collection
2021-04-26 10:45:27 +02:00
Bruno Windels
47b2eb0bdb
don't create a room when rejecting an invite
2021-04-26 10:41:21 +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
827075bc37
only apply the invite when joining
2021-04-23 18:05:46 +02:00
Bruno Windels
847738a76c
set invite on left room so we can detect a vm refresh is needed
2021-04-23 18:05:14 +02:00
Bruno Windels
b9f145caa4
emit events for rooms before invites
...
so the room is already there when removing the invite
2021-04-23 18:04:10 +02:00
Bruno Windels
b77d0f75ce
can just use vm here
2021-04-22 17:23:41 +02:00
Bruno Windels
d289a44624
also sync leave now that we can handle it
2021-04-22 17:23:29 +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
ec0de15da6
handle overlap with existing timeline when rejoining room
2021-04-22 17:21:29 +02:00
Bruno Windels
ff4abbc5ba
make dispose not fail
2021-04-22 17:18:07 +02:00
Bruno Windels
4e3127c4cf
handle key collisions in JoinedMap
2021-04-22 13:28:14 +02:00
Bruno Windels
20f4474eb6
missing semicolon
2021-04-21 18:13:29 +02:00
Bruno Windels
35992ac2fc
show very basic buttons to accept or reject invite
2021-04-21 17:50:41 +02:00
Bruno Windels
b4ad6142f4
show spinner in room list while accepting or rejecting invite
2021-04-21 17:50:22 +02:00
Bruno Windels
ac312cbdc7
fix c/p error in invite store
2021-04-21 17:49:59 +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
16df40331b
fix refactor mistake in sync
2021-04-21 17:26:10 +02:00
Bruno Windels
bfb7f58a3d
add very basic invite view
2021-04-21 17:25:59 +02:00
Bruno Windels
f596b34cac
add very basic join observable map, joining several maps into one
...
will be used to join invites and rooms into one map
2021-04-21 17:25:37 +02:00
Bruno Windels
1d3a2aca0e
add 'get' method to common observable map api
2021-04-21 17:23:49 +02:00
Bruno Windels
0dc796b863
spacing
2021-04-21 15:48:41 +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
9c19fa5c63
utility to remove room from path (with our without grid)
...
which will be used when rejecting an invite
2021-04-21 15:33:08 +02:00
Bruno Windels
ad5d7fc9f0
add note collection emit should happen first in Invite
2021-04-21 15:32:37 +02:00
Bruno Windels
a5e6294593
test accepted/rejected fields in invite tests
2021-04-21 15:32:13 +02:00
Bruno Windels
465e0c191f
add logging to accepting or rejecting an invite
2021-04-21 15:31:55 +02:00
Bruno Windels
5ce138539b
network calls to accept and reject invite
2021-04-20 19:02: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
ee98eaa640
restore invites when loading the session
2021-04-20 18:09:48 +02:00
Bruno Windels
5876e5200b
don't need this for now
2021-04-20 18:03:27 +02:00
Bruno Windels
4560e0e491
split sync lifecycle steps out in different methods to keep it smaller
2021-04-20 17:57:17 +02:00
Bruno Windels
09ac503e22
add test for removing invite
2021-04-20 17:57:03 +02:00
Bruno Windels
d1dc4c9e9c
remove extra layer of log items
2021-04-20 17:56:53 +02:00
Bruno Windels
a072426e07
integrate invites into the sync lifecycle and expose them on session
2021-04-20 17:39:46 +02:00
Bruno Windels
de125441d1
add write/load test for Invite
2021-04-20 17:34:45 +02:00
Bruno Windels
39c772300a
fix indenting
2021-04-20 16:21:35 +02:00
Bruno Windels
81a35639ba
add Invite class
...
calculating the room name, avatar, etc ...
with empty accept and reject methods for now
2021-04-20 16:21:27 +02:00
Bruno Windels
7c4a6fbe4b
invite store
2021-04-20 13:13:56 +02:00
Bruno Windels
33f1ba686c
add warning when rendering outside of render fn for templates
2021-04-15 15:14:02 +02:00
Bruno Windels
766ce4e217
create AvatarView and renderStaticAvatar (for timeline) and use it
...
in RoomTileView, we make some efforts to only have one update listener
for the entire list, because by default a subview would listen on
the view model
2021-04-15 15:12:14 +02:00
Bruno Windels
c85b2ca3c9
allow manually updating subviews in templates w/ parentProvidesUpdates
2021-04-15 15:11:05 +02:00
Bruno Windels
357ce21678
extract base class from Template view to select update mechanism
2021-04-15 15:09:45 +02:00
Bruno Windels
16fda4dde0
white background for transparent avatar images
2021-04-15 14:59:01 +02:00
Bruno Windels
d414fb6b94
sync can also stop without an error
2021-04-09 19:50:22 +02:00
Bruno Windels
ba38ce7976
use canonical way of check error type
2021-04-09 16:30:53 +02:00
Bruno Windels
b852feeb9c
ConnectionError isn't throw from start, but sets sync.error
2021-04-09 16:28:14 +02:00
Bruno Windels
4b19e3c498
remove unused member
2021-04-09 16:27:25 +02:00
Bruno Windels
606e30fed2
make comment easier to read
2021-04-09 15:24:10 +02:00
Bruno Windels
c604c31032
use external mock for request in timeout tests
2021-04-09 15:16:43 +02:00
Bruno Windels
c36e812360
move RequestWrapper to own file
...
and add tests, improve comments, and and don't use timeout connection
error as that's not what happens if aborted request from service worker
is reported as TypeError either.
2021-04-09 15:15:28 +02:00
Bruno Windels
2b1f4866a9
map unexpected fetch AbortError to ConnectionError, so doesn't stop sync
2021-04-09 14:25:19 +02:00
Bruno Windels
2341748023
add some tests to timeout code
2021-04-09 14:09:48 +02:00
Bruno Windels
e17fb24bd8
also await sharing the key in encrypt
2021-04-09 10:37:55 +02:00
Bruno Windels
13f20cdd26
wait for running key share operation in encrypt
2021-04-09 10:37:43 +02:00
Bruno Windels
bdc8451c4a
better logging
2021-04-08 18:39:52 +02:00
Bruno Windels
9e697c6cbe
don't add the pending event again if removed already, fixes #289
2021-04-08 18:36:26 +02:00
Bruno Windels
f976eeaf13
rename SortedArray.replace to update
2021-04-08 18:36:09 +02:00
Bruno Windels
863f659774
fall back to bare userid for local echo profile
2021-04-08 16:30:46 +02:00
Bruno Windels
813be758d7
we should prefer to not pick the event itself if it's a member event
...
but still fall back to that if it's a new join
2021-04-08 15:33:21 +02:00
Bruno Windels
f67ccc18f4
take most recent member rather than first in timeline for inline lookup
...
noticed this while inspecting the code, looks related to #269
2021-04-08 12:57:10 +02:00
Bruno Windels
6f37c232f7
Don't cache members that haven't been written yet - fixes #271
2021-04-08 12:56:24 +02:00
Bruno Windels
f5db6babf2
forgot to change the type of the hs field, so it still nags
2021-04-08 10:27:50 +02:00
Bruno Windels
ced98d02d5
Merge pull request #318 from vector-im/bwindels/avoid_bogus_notifs
...
opt-out for unread count notifications, which cause bogus notifs
2021-04-07 12:41:28 +00:00
Bruno Windels
141cf95eac
some minor TODOs for template view improvements
2021-04-07 14:38:48 +02:00
Bruno Windels
ca9663d2f5
opt-out for unread count notifications, which cause bogus notifs
2021-04-07 14:37:46 +02:00
Bruno Windels
97030f7ef3
add https to homeserver if not already a valid url
2021-04-01 17:44:55 +02:00
Bruno Windels
1505f2d101
Merge pull request #307 from vector-im/hs/deault-hs-url
...
Allow specifying a custom defaultHomeServer
2021-04-01 13:03:46 +00:00
Bruno Windels
10e9e7388f
expose checking pusher on homeserver in setting
2021-04-01 15:01:04 +02:00
Bruno Windels
c06659c0be
support checking if pusher is still present on server
2021-04-01 14:59:46 +02:00
Bruno Windels
010b782a96
allow t.map render fn to not return a dom node
2021-04-01 14:59:18 +02:00
Bruno Windels
8894329fa3
don't use url to open room as it still refreshes the page on chrome
...
even though only the hash is different
2021-03-31 16:52:37 +02:00
Bruno Windels
3767060632
fix reloading or opening wrong page when clicking notif
2021-03-31 16:34:37 +02:00
Will Hunt
6bdf7f1ee9
Allow specifying a custom defaultHomeServer
2021-03-30 17:43:03 +01:00
Johannes Marbach
14ed5fd1e8
Manually adapt UI when keyboard shows or hides on mobile Safari
...
Mobile Safari seems to be the only browser that does *not* resize the
viewport when the keyboard shows and hides. Instead the window is moved
to make room for the keyboard which moves content at the top off screen.
This uses the VisualViewport API to manually resize the `SessionView`
in response to keyboard display events. Additionally, if a DOM element
exists that has the `bottom-aligned-scroll` CSS class, its scroll
position is retained. Currently this only applies to the `Timeline`.
Note that the VisualViewport API was only introduced with iOS 13.
According to [statista.com], versions below 13 made up for 19% of
all iOS users in summer 2020, with the share continuing to fall off.
As a result, this seems like an acceptable workaround.
Fixes : #181
[statista.com]: https://www.statista.com/statistics/565270/apple-devices-ios-version-share-worldwide/
Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
2021-03-26 08:29:33 +01:00
Bruno Windels
07fc49e371
Never close notifs unless clicking them as all browsers only seem to show the last one anyway
2021-03-25 11:13:54 +01:00
Bruno Windels
b3680af342
move comment back to right place, and explain we we do it after
2021-03-25 10:23:43 +01:00
Bruno Windels
889ca05506
log when we get a click from a notif without a tag
...
like when the browser decides to show "site got updated in the
background" notif in response to a unread=0 push message.
2021-03-25 10:11:05 +01:00
Bruno Windels
e54a707684
rework notifications
...
- we don't close them when receiving a push message without event_id
as we always need to have a notification open after a push message
and replacing them with a generic one like we did is worse than just
leaving it open
- after the second notification for a room, we just show "New messages"
and you don't get binged again for new messages after that.
- You will still have a notification for every room, and on Android
you will just see the one for the last room as it only shows one
notification at a time.
2021-03-25 10:08:38 +01:00
Bruno Windels
f98369c4d6
remove obsolete code from refactoring before
2021-03-25 10:07:42 +01:00
Bruno Windels
a70a38f481
focus can throw on Android, wrap it in a try/catch
2021-03-25 10:03:44 +01:00
Bruno Windels
bc763e2a19
fix typo
2021-03-25 10:01:25 +01:00
Bruno Windels
165532be30
add badge icon to notifs
2021-03-25 00:12:57 +01:00
Bruno Windels
0b3f2a7fa0
improve notification click handling
...
- also here don't use client.url to figure out if a session is open
as that doesn't work in FF
- use tag to make sure we're dealing with the right type of notif
- use findClient function
2021-03-24 15:25:59 +01:00
Bruno Windels
f91abe4301
improve notifications shown
...
- use event.waitUntil to prevent default notification
- replace notifications for same room
- replace notifications when receiving unread=0 with "Read messages"
to prevent default notification
- don't rely on client.url to figure out if a room is open as FF
does not update this field on hash changes.
2021-03-24 15:23:01 +01:00
Bruno Windels
2de61c5928
ask the new version to the new and not old service worker
2021-03-24 15:19:10 +01:00
Bruno Windels
178790d816
symlink service worker for local dev, so its scope captures whole app
...
also rename service worker (as it is not a template anymore)
2021-03-23 18:20:23 +01:00
Bruno Windels
a8ca82ca4d
support running the service worker during local development
2021-03-23 18:20:23 +01:00
Bruno Windels
76fdbbb2fe
shorten this
2021-03-23 18:20:23 +01:00
Bruno Windels
d5b12fa7f9
log endpoint hostname
2021-03-23 18:20:23 +01:00
Bruno Windels
3313d0623a
thinko with push checks
2021-03-23 18:20:23 +01:00
Bruno Windels
dbddba3691
fix c/p errors when moving code over to notif service
2021-03-23 18:20:23 +01:00
Bruno Windels
725098f262
open client when clicking notification
2021-03-23 18:20:23 +01:00
Bruno Windels
8fcf7f8c7f
show notification when receiving push message
2021-03-23 18:20:23 +01:00
Bruno Windels
7b9904e423
add UI in settings for push notifs status/enable/disable
2021-03-23 18:20:23 +01:00
Bruno Windels
630e61a674
support enabling/disabling push notifs on a session
2021-03-23 18:20:23 +01:00
Bruno Windels
f764323c80
fixup: notif service
2021-03-23 18:20:23 +01:00
Bruno Windels
d4fc08c06b
put pusher bits in separate class to enable and disable on the HS
2021-03-23 18:20:23 +01:00
Bruno Windels
1b0f175b02
put web-specific parts of notifications (push and in-app) in platform
2021-03-23 18:20:23 +01:00