Commit graph

2733 commits

Author SHA1 Message Date
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
Bruno Windels
5db3b28e3a
Merge pull request #285 from MidhunSureshR/fix-269
Add previous name in name change announcement
2021-03-23 10:22:02 +00:00
Bruno Windels
95b1804a8d
Merge pull request #287 from Johennes/feature/lightbox
Set explicit height on lightbox container
2021-03-23 10:11:13 +00:00
Johannes Marbach
f496aff478 Set explicit height on lightbox container
Without an explicit height defined on the container, Safari
fails to expand the `.picture` content. On desktop this results
in the image showing too small and at the top of the screen.
On mobile the picture ends up with zero height and is completely
hidden.

This commit fixes the issue by defining a height of 100% on the
`.lightbox` border box.

Fixes: #278

Signed-off-by: Johannes Marbach <n0-0ne+github@mailbox.org>
2021-03-22 14:12:02 +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
RMidhunSuresh
c2df9df6d4 Fix overflowing account chooser label
Signed-off-by: RMidhunSuresh <rmidhunsuresh@gmail.com>
2021-03-19 21:09:03 +05:30
Bruno Windels
f691c0c0ef
Merge pull request #281 from vector-im/bwindels/fix-updates
Fix service worker updates stalling
2021-03-18 19:02:45 +00:00
Bruno Windels
ffdec16076 don't show the update dialog if we open the app for the first time
and don't have a service worker yet
2021-03-18 19:58:50 +01:00
Bruno Windels
017d3818eb always reply here 2021-03-18 19:50:53 +01:00
Bruno Windels
5d71b655ad halt any fetch request while waiting for new service worker to activate
this make updates apply instantly rather than sometimes being stalled
for seconds or minutes.
2021-03-18 19:50:53 +01:00
Bruno Windels
eba4d8a28b improve ergonomics for sub-templates in TemplateView
- renames if to ifView
 - adds map and if that immediately take a sub template render function
   rather than having to call createTemplate
2021-03-18 19:44:59 +01:00
Bruno Windels
1348611f9f also log error messages 2021-03-15 17:18:45 +01:00
Bruno Windels
5d55f6d78c log app version when opening session 2021-03-15 16:55:14 +01:00
Bruno Windels
d88720a18f don't start key backup operation if not enabled 2021-03-15 16:54:43 +01:00
Bruno Windels
2b24de838a actually log initial session backup enabling rather than using null log 2021-03-15 15:24:57 +01:00
Bruno Windels
325d237302 simpler optional log 2021-03-15 15:23:46 +01:00
Bruno Windels
8684d6b5e5 some fixes 2021-03-15 15:23:35 +01:00
Bruno Windels
fcc06b2754 WIP to add logging to decryption and fetching key backups 2021-03-15 14:39:42 +01:00
Bruno Windels
744ac6b885 implement latest api changes in null logger, and add ensureLogItem
to ensure log item either by taking an existing one or taking one
from the null logger
2021-03-15 14:37:46 +01:00
Bruno Windels
f2dc7728a5 notifyRoomKey was a better name 2021-03-15 14:36:38 +01:00
Bruno Windels
96f060c0a9 also retry decryption for backfilled entries
as their event ids won't be stored along the missing key (we only store
synced items so we don't fill up the missing event ids in the store
with undecryptable backfilled event ids)
2021-03-15 14:33:14 +01:00
Bruno Windels
4b62e0a2ce extract retry event ids for key before overwriting key on key backup 2021-03-15 13:38:27 +01:00
Bruno Windels
8100c70e88 fix image uploads being broken 2021-03-11 10:27:50 +01:00
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
e8c8455f43 safari hack/fix 2021-03-10 13:39:58 +01:00
Bruno Windels
948249bb3d better error reporting for unsupported codecs when uploading 2021-03-10 13:39:34 +01:00
Bruno Windels
c8265b2358 also allow other video mime types, otherwise playback fails in e2ee room 2021-03-10 13:39:04 +01:00
Bruno Windels
9bc1d38d73 extract dom event => promise code 2021-03-10 13:38:28 +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
b955cac7ce extract base class from image view to inherit video view from 2021-03-09 19:34:22 +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
b4f4594ead
Merge pull request #267 from vector-im/bwindels/fix-223
consider all server errors as connection errors
2021-03-09 11:54:21 +00:00
Bruno Windels
0bd0f788e3 consider all server errors as connection errors
even if they do have an errcode

fixes #223
2021-03-09 12:51:34 +01:00
Bruno Windels
8cd6a7988a on fill server OTKs up to max/2
so we don't remove keys for yet to be received
olm messages that claimed a key
2021-03-09 12:33:31 +01:00
Bruno Windels
0b211e8e1c simplify this code now that it is only doing one thing 2021-03-09 12:27:51 +01:00
Bruno Windels
2d4003379e Fix #97 2021-03-08 22:25:18 +01:00
Bruno Windels
30b056af1c let devices know we can't claim their OTKs 2021-03-08 16:19:46 +01:00
Bruno Windels
30525cf391 oops, missing await to store new olm sessions! 2021-03-08 16:19:28 +01:00
Bruno Windels
a3987a655e log if a connection error is a timeout 2021-03-08 15:35:34 +01:00
Bruno Windels
cfb521ef10 fix ll events being duplicated in the timeline preventing name changes 2021-03-05 20:10:57 +01:00
Bruno Windels
b37a586094 add clarification why this doesn't need to also check member changes 2021-03-05 17:04:18 +01:00
Bruno Windels
f4a7782298 add MemberWriter, and only return MemberChange's if something changed 2021-03-05 17:03:45 +01:00
Bruno Windels
e97ed9ae45 fix session test, just barely 2021-03-05 17:03:12 +01:00
Bruno Windels
49fc971d67 cleanup 2021-03-05 17:02:57 +01:00
Bruno Windels
f98f690b49 no need to "serialize" here every time, it just adds noise 2021-03-05 17:02:26 +01:00
Bruno Windels
4e0bd16a4e reuse LRU Cache for session cache 2021-03-05 17:01:38 +01:00
Bruno Windels
f0c0c3e084 add LRU Cache utility
we'll use it to cache members later on
2021-03-05 17:00:55 +01:00
Bruno Windels
c1c8f11bf7 fix TypeError when syncing a new e2ee room with keys at the same time 2021-03-05 11:50:54 +01:00
Bruno Windels
5682e715e6 prevent multiple checks if a new room key is better 2021-03-05 10:07:48 +01:00
Bruno Windels
d08c41c13a probably best to close this 2021-03-04 22:09:11 +01:00
Bruno Windels
e603e4b455 provide default mimetype so file uploads work on iOS
otherwise homeserverapi doesn't think this is a blob
2021-03-04 21:51:53 +01:00
Bruno Windels
6ad778d27b support file downloads on iOS through data: uris 2021-03-04 21:51:29 +01:00
Bruno Windels
932d26ed8c detect the webkit bug, and await a bogus request when opening a txn 2021-03-04 19:49:13 +01:00
Bruno Windels
e0d14207ac make opening a txn async again
as we'll need to await a bogus request first thing after opening the txn

funny enough, we originally made it sync to accommodate the same bug
in safari, but that didn't prevent any microtask being awaited
before scheduling a request in the calling code closing the txn.

We'll await a bogus request within the transaction class now so it
doesn't depend on the calling code
2021-03-04 19:47:02 +01:00
Bruno Windels
4445b1ee01 store key share operations before tracking the room 2021-03-03 18:56:16 +01:00
Bruno Windels
aa23672694 forgot await, this broke updating the timeline when fetching key backup 2021-03-03 17:50:38 +01:00
Bruno Windels
f5bba54fd4
Merge pull request #255 from vector-im/bwindels/send-local-echo-profile
Show correct profile for pending messages
2021-03-03 13:55:26 +00:00
Bruno Windels
b012b1dc99 Show correct profile for pending messages 2021-03-03 14:53:22 +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
6771303086 make a method to determine only the retry entries rather 2021-03-03 14:03:50 +01:00
Bruno Windels
404dbcd065 english 2021-03-03 14:03:50 +01:00
Bruno Windels
e7598b9c76 only request key backup for events that are UTD 2021-03-03 14:03:50 +01:00
Bruno Windels
30481a5a9e add logging to key sharing and discarding in reaction to member changes 2021-03-03 14:03:50 +01:00
Bruno Windels
f3c49e51f2 add, don't replace timeline retry entries
also, filter out any that have been decrypted already
2021-03-03 14:03:50 +01:00
Bruno Windels
43547e0901 don't add retried entries to the timeline if they are not already there 2021-03-03 14:03:50 +01:00
Bruno Windels
7f1cdf6841 also decrypt all matching timeline entries when new key 2021-03-03 14:03:50 +01:00
Bruno Windels
3671574547 comment about session backup 2021-03-03 14:03:50 +01:00
Bruno Windels
3bfe52b1dc filter encrypted events before deciding to decrypt or not 2021-03-03 14:03:50 +01:00
Bruno Windels
9702c4fd64 more logging in sync write 2021-03-03 14:03:50 +01:00
Bruno Windels
8d7cb2a39a remove unused imports 2021-03-03 14:03:50 +01:00
Bruno Windels
e85844f482 don't redeclare retryEntries, or they won't get passed to writeSync 2021-03-03 14:03:50 +01:00
Bruno Windels
56db210763 attempt at fixing https://github.com/vector-im/hydrogen-web/issues/245 2021-03-03 14:03:50 +01:00
Bruno Windels
e29bc6710a bring back missing import 2021-03-03 14:03:50 +01:00
Bruno Windels
c6db23bcfb WIP to store missing session event ids 2021-03-03 14:03:50 +01:00
Bruno Windels
3fa2d22015 remove isTimelineOpen flag and rather do the check to verify in Room
flags are ugly, let's avoid them where we can
2021-03-03 14:03:50 +01:00
Bruno Windels
265a9bd993 applyToEntries does not return anything 2021-03-02 19:39:04 +01:00
Bruno Windels
10003e7d3a also sync room not in the rooms section but with new room keys 2021-03-02 19:39:04 +01:00
Bruno Windels
8d080163b3 reattempt decryption for timeline items 2021-03-02 19:39:04 +01:00
Bruno Windels
061e7abd50 don't break on empty room sync response 2021-03-02 19:39:04 +01:00
Bruno Windels
8a39c16a38 fix name conflict with _sessionInfo in parent class 2021-03-02 19:39:04 +01:00
Bruno Windels
a536ea7742 comment to explain replay attack better 2021-03-02 19:39:04 +01:00
Bruno Windels
a33200d926 fix sender key lookup for room key coming from olm 2021-03-02 19:39:04 +01:00
Bruno Windels
fb446167f6 make new sync room keys available during decryption of same sync 2021-03-02 19:39:04 +01:00
Bruno Windels
37151dc06b always log ids, etc in console logger, even if falsy 2021-03-02 19:38:46 +01:00
Bruno Windels
8208464653 only log and clear when actually needed 2021-03-02 19:37:11 +01:00
Bruno Windels
e1821b1753 prevent linking fragment to itself when filling a gap
this seems to happen when at the beginning of the timeline and
make the timeline reader go into an infinite loop
2021-03-02 19:31:00 +01:00
Bruno Windels
6f6346d5c3 detect when hitting beginning of timeline when loading timeline 2021-03-02 19:29:55 +01:00
Bruno Windels
0eb2b4fe6b simplify with toFixed here 2021-03-01 15:07:24 +01:00
Bruno Windels
42654dbd4f console logger for local dev 2021-03-01 15:07:24 +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
636208a321 show all event type counts in device msg logging 2021-02-24 20:56:20 +01:00
Bruno Windels
b43754da6a code is wrong and unused, so delete
it is wrong in the way that it does not always return a string
2021-02-24 15:06:01 +01:00
Bruno Windels
1e209b8613 Prevent pending events being skipped when remote echo comes
This fixes #241
2021-02-24 14:14:04 +01:00
Bruno Windels
139ffc9548 explain sent file names are logged
because they are in the url of the upload request, which we log
2021-02-24 11:30:32 +01:00
Bruno Windels
b63ad629a7 can remove console logging here now 2021-02-24 11:25:26 +01:00
Bruno Windels
48c361531d log clearing unread state of a room 2021-02-24 11:22:19 +01:00
Bruno Windels
376e59820c more info when logging gap fills 2021-02-24 11:22:07 +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
41ecf1db8e missing semicolon 2021-02-24 10:38:19 +01:00
Bruno Windels
ee8886f7c2 serialize child items with parent start offset subtracted
for compactness
2021-02-24 10:37:20 +01:00
Bruno Windels
23b8ba7e54 unused var 2021-02-24 10:14:26 +01:00
Bruno Windels
a372836a64 only create refids when used 2021-02-24 10:14:14 +01:00
Bruno Windels
86011b42e3 await the room log operations for login/load session
so the callee can await the operation
2021-02-24 09:58:50 +01:00
Bruno Windels
0cbf6008a2 log event id when sending and when receiving remote echo on sync 2021-02-23 19:58:01 +01:00
Bruno Windels
7b7907add0 some doc comments for logging api 2021-02-23 19:23:12 +01:00
Bruno Windels
dd38fc13d7 log sending messages 2021-02-23 19:22:59 +01:00
Bruno Windels
57bb75e864 log login & loading a session 2021-02-23 19:22:25 +01:00
Bruno Windels
ef1e867dee no need for keys in the iteration 2021-02-23 19:20:58 +01:00
Bruno Windels
67ddcaa468 fix lint errors in Sync 2021-02-23 19:20:36 +01:00
Bruno Windels
c6c96a611a fix iteration bug when disposing pending events at shutdown
discovered by logging
2021-02-23 19:04:25 +01:00
Bruno Windels
a8df30016b mark force-finished log items when app closes 2021-02-23 15:36:36 +01:00
Bruno Windels
17451b7bd6 fix typo 2021-02-23 15:36:17 +01:00
Bruno Windels
ed1b37d251 support referencing other log items that are detached (fire & forget)
for async tasks that are not awaited
2021-02-23 15:27:55 +01:00
Bruno Windels
b2621b3001
Merge pull request #234 from vector-im/bwindels/sync-logging
Better sync logging
2021-02-22 13:31:34 +00:00
Bruno Windels
0a4d72b011 remove extra newline 2021-02-22 11:23:24 +01:00
Bruno Windels
94cc8b99b0 don't need to check this actually, sync response should be there 2021-02-22 11:21:56 +01:00
Bruno Windels
f0d9d13f4e don't assume device lists are set in sync response 2021-02-22 11:20:51 +01:00
Bruno Windels
3a8badb3e7 also add log method to null logger 2021-02-22 10:48:46 +01:00
Bruno Windels
364295c7a9 don't throw when container is already disposed, just dispose immediately 2021-02-22 10:48:06 +01:00
Bruno Windels
417e920ea0 make log id autoinc 2021-02-22 10:46:40 +01:00
Bruno Windels
656637e5e2 typo 2021-02-19 11:57:50 +01:00
Bruno Windels
f4a3b64da0 log in sync writer (at detail level) and log room ids at info level 2021-02-19 11:57:17 +01:00
Bruno Windels
08622699f6 more logging for device messages 2021-02-18 19:56:47 +01:00
Bruno Windels
c5c0a181ff move check for devicelists up in Session.writeSync, and more logging 2021-02-18 19:56:10 +01:00
Bruno Windels
ad0c813833 don't take network time into account in sync log filter 2021-02-18 19:48:19 +01:00
Bruno Windels
f2f9162b85 log pagehide event 2021-02-18 19:47:16 +01:00
Bruno Windels
bd85dc2393 children is undefined here actually, so filter wasn't working properly 2021-02-18 15:38:32 +01:00
Bruno Windels
cd68bb7b3f log when devices get marked as outdated 2021-02-18 14:00:06 +01:00
Bruno Windels
8539b0c893 also log session in after sync completed as detail level 2021-02-18 13:07:52 +01:00
Bruno Windels
dea11845f5 log encrypted event count in session sync write 2021-02-18 13:07:32 +01:00
Bruno Windels
e590b573fb log remaining specific room entries as detailed 2021-02-18 12:44:19 +01:00
Bruno Windels
9f9de0988e don't log here yet as the logger isn't passed from createIdentity yet 2021-02-18 12:44:19 +01:00
Bruno Windels
7524a912c3 use (t)ype rather than kind 2021-02-18 12:44:19 +01:00
Bruno Windels
f321968ac3 add more sync logging 2021-02-18 12:44:19 +01:00
Bruno Windels
e14929bd4f inherit log level from parent rather than defaulting to info if not set 2021-02-18 12:44:19 +01:00
Bruno Windels
cc916b80de add app version to logs 2021-02-18 12:44:19 +01:00
Bruno Windels
d201d2c9de don't use depth based log filtering, also add Detail log level
it's hard to make it work with an override where you don't want
to filter by depth if a given loglevel is present in the children.
2021-02-18 12:44:19 +01:00
Bruno Windels
d39c3812b2
Merge pull request #231 from vector-im/bwindels/logs
Structured logging
2021-02-17 10:19:46 +00:00
Bruno Windels
5bec4d5a72 comment 2021-02-16 20:05:33 +01:00
Bruno Windels
630ac40f05 this is broken now, but we're not using it anyway, so remove 2021-02-16 20:00:08 +01:00
Bruno Windels
0ccf735148 console log when failing to restore queued items 2021-02-16 19:57:45 +01:00
Bruno Windels
b28eefb2db do emergency serialization without log filter 2021-02-16 19:53:37 +01:00
Bruno Windels
c3637def2e ensure any breakage does not disrupt logging 2021-02-16 18:36:41 +01:00
Bruno Windels
2dd8803efc better error handling if something goes wrong serializing log items 2021-02-16 18:30:23 +01:00
Bruno Windels
338f628627 remove option to anonymize 2021-02-16 18:30:06 +01:00
Bruno Windels
90cfcad5f1 add privacy notice in settings 2021-02-16 18:25:52 +01:00
Bruno Windels
59928432df better logs filename 2021-02-16 17:46:07 +01:00
Bruno Windels
1f91fa9a94 final flush interval 2021-02-16 17:45:47 +01:00
Bruno Windels
e629a93edd delete extra log items when over limit,to not have to delete every flush 2021-02-16 17:45:19 +01:00
Bruno Windels
ee4a382578 revert this back 2021-02-16 15:38:43 +01:00
Bruno Windels
5d67db0c5e Fix NullLogger 2021-02-16 15:35:30 +01:00
Bruno Windels
7dc3707871 add button to export logs 2021-02-16 15:27:24 +01:00
Bruno Windels
48569c28bc serialize logs as json 2021-02-16 15:08:08 +01:00
Bruno Windels
4defbe1322 simplify log filtering, while also adding depth based filtering 2021-02-16 15:07:17 +01:00
Bruno Windels
78805f0a65 implement dynamic log filtering
the logger does not have a base level any more, because there is
no sensible place to configure this.

instead, we allow to dynamically determine what should be logged
after an operation finished by setting the threshold and default
log level inspecting the finished log item.
2021-02-16 11:37:48 +01:00
Bruno Windels
510d5ab2cd add bool settings type 2021-02-12 19:08:13 +01:00
Bruno Windels
704708bd6c add some logging to sync 2021-02-12 18:56:26 +01:00
Bruno Windels
07f8500d29 don't read from settings for now, as it is async 2021-02-12 18:55:37 +01:00
Bruno Windels
1183305d71 wrapLog => run is a better name 2021-02-12 18:36:21 +01:00
Bruno Windels
42780df94f actually track log items, and correctly remove them 2021-02-12 18:36:04 +01:00
Bruno Windels
a53c25d2ae support logging in hsApi 2021-02-12 18:35:33 +01:00
Bruno Windels
e6c108c6e0 no need to copy it over in viewmodel 2021-02-12 18:06:14 +01:00
Bruno Windels
f65db338cf make it work 2021-02-12 18:05:39 +01:00
Bruno Windels
89139bba30 expose some meta data on a log export to show before submitting 2021-02-12 16:08:28 +01:00
Bruno Windels
c0a03858eb add option to anonymize logged values 2021-02-12 16:08:07 +01:00
Bruno Windels
bbab1e9ecc move base64/58 encoding into platform
fixes https://github.com/vector-im/hydrogen-web/issues/99
2021-02-12 16:01:54 +01:00
Bruno Windels
2bb7b3b598 add null logger 2021-02-12 14:06:09 +01:00
Bruno Windels
0763410aa1 filter output when serializing by loglevel 2021-02-12 14:05:51 +01:00
Bruno Windels
4c2abcf9c7 add logger to platform 2021-02-12 13:04:18 +01:00
Bruno Windels
91bd5f638c finish logging api 2021-02-12 13:04:05 +01:00
Bruno Windels
e515548037 add some comments while debugging a problem 2021-02-11 21:08:06 +01:00
Bruno Windels
89599e9f87 WIP 2021-02-11 21:07:18 +01:00
Bruno Windels
e49639fda2 move textencoder/decoder into platform 2021-02-11 17:29:48 +01:00
Bruno Windels
ac1bbb3937 ensure thumbnail dimensions are integer, fixes #203 2021-02-11 11:15:20 +01:00
Bruno Windels
a9a27133b9 fix #204 2020-11-26 09:49:25 +01:00
Bruno Windels
1c4818cf1d prevent a new iframe being created for every download 2020-11-23 10:28:20 +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
b7aca076ba better wording 2020-11-20 16:32:33 +01:00
Bruno Windels
7bf02f42b7 don't use grid to put lightbox on top, as it broke again in IE11 2020-11-20 16:32:13 +01:00
Bruno Windels
83d54351b1 put spacer behind rather than before link to open lightbox 2020-11-20 16:14:32 +01:00
Bruno Windels
45dd539179 also update preference onchange for IE 2020-11-20 16:06:16 +01:00
Bruno Windels
3eec897630 better wording 2020-11-20 16:06:05 +01:00
Bruno Windels
9ab81eea02 add setting for image compression level 2020-11-20 15:51:16 +01:00
Bruno Windels
764cddcdec can be cached 2020-11-20 11:45:38 +01:00
Bruno Windels
f7a07a9e79 adjust fileview/tile to pendingevent changes 2020-11-20 11:45:14 +01:00
Bruno Windels
628a3b65c6 cancel > remove 2020-11-19 15:02:59 +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
18407e17a8 toggle popup menu 2020-11-18 20:18:09 +01:00
Bruno Windels
59a92bdf97 vm changes for improved image view 2020-11-18 20:10:05 +01:00
Bruno Windels
0581066350 upload smallest attachments first
so you don't get a delay at the end of the upload
when starting a new request
2020-11-18 20:09:27 +01:00
Bruno Windels
a23075a326 make safe to call when no attachments present 2020-11-18 20:09:07 +01:00
Bruno Windels
fba5877b3b dispose attachment blobs when pending event is removed/closing session 2020-11-18 20:08:42 +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
6f94ca1a4a make toBlob work on IE11 2020-11-18 16:28:48 +01:00
Bruno Windels
a930dec8db adjust ImageTile to state machine changes 2020-11-18 13:05:10 +01:00
Bruno Windels
fd81111bfb merge state machine from AttachmentUpload into PendingEvent
to have less state machines, and we are mostly interested in the
aggregate status of all attachments of an event

this will also drive updates through the pending events collection
that already exists rather than an extra observablevalue, so less
housekeeping to update the UI.
2020-11-18 13:04:23 +01:00
Bruno Windels
91f7970d66 Merge branch 'master' into bwindels/upload-images 2020-11-16 19:31:04 +01:00
Bruno Windels
ca7c07a23c fix #200 2020-11-16 19:29:51 +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
6bd777e7be make sure cors errors on setting headers don't fail sending the request 2020-11-16 15:10:25 +01:00
Bruno Windels
83cbe78cd6 report attachment upload progress 2020-11-16 10:45:46 +01:00
Bruno Windels
1dd46b875b this is fine actually, as it will get encrypted.
just don't pass it to the upload
2020-11-13 19:22:06 +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
0292725076 better formatting 2020-11-13 19:10:18 +01:00
Bruno Windels
262cc8936e don't leak mimetype for encrypted attachments 2020-11-13 19:10:04 +01:00
Bruno Windels
96e46d154c copyright header for legacy platform 2020-11-13 19:05:09 +01:00
Bruno Windels
791b3ae04f don't center align link buttons (while at it) 2020-11-13 19:04:46 +01:00
Bruno Windels
d2a4242e5b support multiple attachments per event 2020-11-13 17:19:19 +01:00
Bruno Windels
14b3c4b701 no need for a dedicated class just to hide it 2020-11-13 16:00:32 +01:00
Bruno Windels
9bb521986b first draft of generic popup and menu views 2020-11-13 15:58:40 +01:00
Bruno Windels
6fd10b63e5 add device pixel ratio scaling while at it 2020-11-12 13:50:32 +01:00
Bruno Windels
1ad8af34d1 add thumbnailing code 2020-11-12 13:50:06 +01:00
Bruno Windels
f23312b0d3 fix decrypt/encrypt wording in error message 2020-11-11 13:17:05 +01:00
Bruno Windels
8b16d8bc99 handle upload failures better 2020-11-11 13:06:03 +01:00
Bruno Windels
d477be2b41 put paperclip in send file button 2020-11-11 12:57:43 +01:00
Bruno Windels
6384702863 fix file selector for IE11 2020-11-11 12:47:26 +01:00
Bruno Windels
8db7499f5a support AES-CTR 256 JWK keys in legacy crypto for IE11 2020-11-11 12:44:59 +01:00
Bruno Windels
fd9eccec4d support local echo in FileTile while uploading 2020-11-11 11:52:06 +01:00
Bruno Windels
af4f3f902f wait for attachment to be uploaded in send queue
also expose attachment from PendingEvent(Entry)
2020-11-11 11:51:39 +01:00
Bruno Windels
48cd4ac95d track upload error 2020-11-11 11:51:11 +01:00
Bruno Windels
91f15074be /upload is on /media/r0, not /client/r0 2020-11-11 11:50:40 +01:00
Bruno Windels
366f3c0bba iv and digest are sent in unpadded base64 2020-11-11 11:50:20 +01:00
Bruno Windels
e9324ad678 support jwk keys to encrypt 2020-11-11 11:47:39 +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
0c70a67ebb pass platform to room
as we'll need it to access crypto and creating blobs
2020-11-11 10:47:19 +01:00
Bruno Windels
c289bcd097 return blob from encryptAttachment 2020-11-11 10:46:37 +01:00
Bruno Windels
32b7b1f064 draft of AttachmentUpload class 2020-11-11 10:46:20 +01:00
Bruno Windels
2890a6aff7 implement attachment uploading in hs api rather than media repo
as we need the access token
2020-11-11 10:45:44 +01:00
Bruno Windels
9f2c7c1e32 support uploading blobs in hs api 2020-11-11 10:45:23 +01:00
Bruno Windels
c278b0f4a3 rename blob.blob to blob.nativeBlob
also to make the name a bit more unique where we want to do duck typing
2020-11-11 10:44:44 +01:00
Bruno Windels
2cfffa015d WIP 2020-11-10 22:36:26 +01:00
Bruno Windels
a37d8c0223 implement AES encryption 2020-11-10 19:48:36 +01:00
Bruno Windels
c65e8bea11 clean up properly 2020-11-10 19:05:50 +01:00
Bruno Windels
d14f485292 Merge branch 'master' into bwindels/file-downloads 2020-11-10 18:55:27 +01:00
Bruno Windels
2ad34c2dd2 c/p error for passing arguments to create_outbound 2020-11-10 18:31:33 +01:00
Bruno Windels
f5480b7708 provide random value for IE11 2020-11-10 18:31:18 +01:00
Bruno Windels
ba323c65d6 fix typo in name 2020-11-10 18:30:48 +01:00
Bruno Windels
6fa9471292 remove trailing whitespace 2020-11-10 17:51:39 +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
21a7ec0dff byte size formatting 2020-11-10 17:50:20 +01:00
Bruno Windels
373a42c7a8 allow downloading plaintext attachments also, with or without cache 2020-11-10 17:49:48 +01:00
Bruno Windels
4477073d6d add platform method to offer saving a buffer handle 2020-11-10 17:24:30 +01:00
Bruno Windels
de143fdafc update timestamp when creating a new megolm session 2020-11-10 16:17:56 +01:00
Bruno Windels
a4f610ad3f support emotes 2020-11-10 15:13:31 +01:00
Bruno Windels
1c978f060e
Merge pull request #182 from Newbytee/submit-for-login
Use submit event for login instead of click
2020-11-10 14:09:56 +00:00
Bruno Windels
e4fa4ded6c hide clear button in composer on IE 2020-11-10 14:02:37 +01:00
Bruno Windels
769feac73c cleanup 2020-11-10 14:02:27 +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
89c66699d7 some Lock refactoring that I didn't end up needing but still useful 2020-11-10 11:04:53 +01:00
Bruno Windels
f13f1cd593 prevent leaking resources in olm worker 2020-11-10 11:04:39 +01:00
Bruno Windels
5f6ad91ff2 offload creating an olm session to the olm worker
so IE11 doesn't lock up when you start typing
2020-11-10 11:04:09 +01:00
Bruno Windels
bd5771e449 remove obsolete comment 2020-11-09 17:22:37 +01:00
Bruno Windels
6572377832 move tracking the room to where we need the devices 2020-11-09 16:50:39 +01:00
Bruno Windels
9cfb3c8e95 only check to pre-share new megolm session every minute 2020-11-09 16:50:05 +01:00
Bruno Windels
44a2febce9 hook it up 2020-11-06 23:43:02 +01:00
Bruno Windels
c6ff4c2517 finish room encryption part 2020-11-06 18:56:32 +01:00
Bruno Windels
d0d1f68a9c WIP 2020-11-06 16:56:12 +01:00
Bruno Windels
5d12aef6db support pre-sharing room keys in room encryption 2020-11-06 10:32:37 +01:00
Bruno Windels
85ba1676e5 log non-network errors in service worker to diagnose #187 2020-11-05 22:51:21 +01:00
Bruno Windels
9708e394a0 don't assume the thumbnail was cached already 2020-11-05 22:45:20 +01:00
Bruno Windels
e0c8be3a9a try to call out when #187 happens 2020-11-05 22:41:33 +01:00
Bruno Windels
c696a75f88 fix #177 2020-11-05 22:37:39 +01:00
Bruno Windels
16542284f3 fix #48 2020-11-05 21:24:14 +01:00
Bruno Windels
b8370d53b6 always throw here so we never get to Ready status when stopped 2020-11-05 21:22:29 +01:00
Bruno Windels
134f018849 always have an error when stopping sync 2020-11-05 21:21:27 +01:00
Bruno Windels
9f453c0984 fix #152 2020-11-05 21:19:34 +01:00
Bruno Windels
b27f6a067f implement .size for all observable maps
as SortedMapList uses it, putting undefined in its list
initially when missing, creating a crash in
the TemplateView that renders it
2020-11-05 12:00:17 +01:00
Newbyte
e112e9c2d2 Use submit event for login trigger
Signed-off-by: Newbyte <newbie13xd@gmail.com>
2020-11-05 11:21:04 +01:00
Newbyte
3ab70861cc Add form to element list
Signed-off-by: Newbyte <newbie13xd@gmail.com>
2020-11-05 11:21:04 +01:00
Bruno Windels
0003ddebb5 also fix grid layout 2020-11-03 09:12:11 +01:00
Bruno Windels
9131cf00a3 load images when they becomes partly into view 2020-11-02 14:49:59 +01:00
Bruno Windels
72fdce4a86 fix broken layout after changing to grid 2020-11-02 14:15:24 +01:00
Bruno Windels
a3ec01385b
Merge pull request #178 from vector-im/bwindels/lightbox
Lightbox for picture messages
2020-11-02 11:23:10 +00:00
Bruno Windels
f1b557f995 add comment 2020-11-02 11:29:22 +01:00
Bruno Windels
fd28b39e23 fix spacing between spinner and loading text in lightbox 2020-11-02 11:29:09 +01:00
Bruno Windels
7e9e937742 IE11 doesn't calculate padding percentages based on parent width in grid
so do progressive fallback. This won't scale the height of the
image tile height, but it will still scale the thumbnail
on narrow viewports, leaving a blank space underneath the image.
2020-11-02 11:16:35 +01:00
Bruno Windels
fbbdaf7dfa expose IE11 flag in JS as well 2020-11-02 11:16:19 +01:00
Bruno Windels
57da68fb1e padding for lightbox 2020-10-31 00:25:51 +01:00
Bruno Windels
4d08e415bd fallback for IE11 2020-10-31 00:25:42 +01:00
Bruno Windels
8507a3eb16 prevent jumps when image loads by adding a spacer 2020-10-31 00:25:05 +01:00
Bruno Windels
5aa2c7dc5c dom changes for timeline image view 2020-10-30 22:52:54 +01:00
Bruno Windels
5a31bc5f2b basic focus trapping of lightbox 2020-10-30 22:52:32 +01:00
Bruno Windels
708893022a use justify/align-self rather than auto margins, works better in IE11 2020-10-30 22:52:08 +01:00
Bruno Windels
a21765757d don't use position: absolute for scaling images in the timeline
as it bleeds through the lightbox on IE11, and is a bad idea anyway
2020-10-30 22:51:57 +01:00
Bruno Windels
581dc95c53 allow adding custom event handlers to a template view
so you don't have to remove them yourself
2020-10-30 22:48:56 +01:00
Bruno Windels
c847cfb200 WIP: Esc key on lightbox 2020-10-30 19:59:42 +01:00
Bruno Windels
597a57eae3 too much whitespace 2020-10-30 19:59:21 +01:00
Bruno Windels
c9147e6b9a implement first draft of image lightbox 2020-10-30 15:20:11 +01:00
Bruno Windels
137264edcb implement subscribing to a single event 2020-10-30 15:19:51 +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
0691f34650 detect abort error by name here too 2020-10-30 09:55:03 +01:00
Bruno Windels
3008367307 detect AbortError properly, name is a string 2020-10-30 09:54:38 +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
d7ccdd3304 switch main layout from flexbox to grid so we can overlay a lightbox 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
0405af0116 disable click-to-zoom on image
so we can release before the lightbox ix ready
2020-10-29 10:17:19 +01:00
Bruno Windels
b69464b87d improve picture styling 2020-10-27 16:47:22 +01:00
Bruno Windels
d55f38a9e9 don't reimplement removing an item from the list 2020-10-27 16:26:45 +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
c9efee77f2 if shape is update and item should be different view, recreate the tile 2020-10-27 16:20:04 +01:00
Bruno Windels
77dca5dd55 add update parameter when replacing tile 2020-10-27 16:19:36 +01:00
Bruno Windels
932542bea0 some more cleanup 2020-10-27 14:35:47 +01:00
Bruno Windels
fcc4c21ad2 filter mime types for blob urls 2020-10-27 14:35:33 +01:00
Bruno Windels
ade01f6cf7 space 2020-10-27 13:51:40 +01:00
Bruno Windels
2ebce8eb7b set responseType after calling open 2020-10-27 13:50:09 +01:00
Bruno Windels
a61d7fc68a jwk key support for aesjs 2020-10-27 13:21:12 +01:00
Bruno Windels
a3aa25449b make it work with xhr 2020-10-26 17:37:32 +01:00
Bruno Windels
ee1e62207c apply platform changes to decrypting images 2020-10-26 17:18:17 +01:00
Bruno Windels
3ed5ea8b0b Merge branch 'master' into bwindels/decrypt-images 2020-10-26 17:08:29 +01:00
Bruno Windels
98be9a8f4d fix legacy spinner 2020-10-26 16:44:12 +01:00
Bruno Windels
1a518cdd28 more refactor fixes 2020-10-26 16:31:30 +01:00
Bruno Windels
03351d2e1f extract platform class to put all platform specific code in 2020-10-26 15:44:11 +01:00
Bruno Windels
46fd769dda (re)move old (compile-time) platform code 2020-10-26 10:34:35 +01:00
Bruno Windels
06e4dea590 move ui and dom under platform/web 2020-10-26 10:28:11 +01:00
Bruno Windels
2e0d1363c7 fix 2020-10-26 10:16:23 +01:00
Bruno Windels
a6224135e3 extract blob url code to platform (WIP) 2020-10-26 10:14:46 +01:00
Bruno Windels
4fd71279cf don't disable cache for media repository downloads 2020-10-26 09:58:39 +01:00
Bruno Windels
cbd48aa528 only load main image when clicking thumbnail 2020-10-26 09:49:42 +01:00
Bruno Windels
6a468a0883 decrypt attachment code 2020-10-23 17:45:15 +02:00
Bruno Windels
3a6268f0c1 basic PoC of image decryption working
needs looooaaads of cleanup still
2020-10-23 17:25:11 +02:00
Bruno Windels
f214c53fa9 add @internal and other comments to Session 2020-10-23 12:59:40 +02:00
Bruno Windels
62c8d6574c fix index.html not being restored from cache when offline on #hash url 2020-10-23 12:58:45 +02:00
Bruno Windels
df8eed14aa expose whether we already have a 4s key,to show the 4s setup in settings
it's a tri-state of null/false/true with null meaning we need to
go online first to know as only then we try to setup session backup
2020-10-23 12:57:47 +02:00
Bruno Windels
df72e829bf setup session backup as part of start method, so we know we're online
also don't upload OTKs in case of existing account until
catchup sync has happened
2020-10-23 12:22:52 +02:00
Bruno Windels
f1aef6c034 render should return nodes otherwise the mapView binding doesn't work
this broke e2ee messages appearing when decrypted
2020-10-21 12:10:42 +02:00
Bruno Windels
7459985e00 show storage usage in settings 2020-10-20 17:50:43 +02:00
Bruno Windels
545a2e481a prevent cached thumbnails from being opaque responses
fixes https://github.com/vector-im/hydrogen-web/issues/169
2020-10-20 17:28:42 +02:00
Bruno Windels
a7a922680d request persisted storage when logging in/restoring a session 2020-10-20 17:02:34 +02:00
Bruno Windels
2b93d50396 dont crash when value is undefined 2020-10-20 16:51:51 +02:00
Bruno Windels
4dd303e558 remove unused code 2020-10-20 15:29:36 +02:00
Bruno Windels
1e1b254678 adjust prop names 2020-10-20 15:26:22 +02:00
Bruno Windels
601bdbb25d make session backup banner dismissable 2020-10-20 14:42:17 +02:00
Bruno Windels
446d30469b improve wording and cleanup 2020-10-20 12:12:07 +02:00
Bruno Windels
98d7ffe87c add button to set up field 2020-10-20 12:11:58 +02:00
Bruno Windels
16e0f515dc make text not sprawl across screen on large monitors 2020-10-20 12:10:56 +02:00
Bruno Windels
6f09bd97b6 move setting view models in own dir / file 2020-10-20 12:10:41 +02:00
Bruno Windels
6f82d81f39 better session backup ui 2020-10-19 18:29:13 +02:00
Bruno Windels
d3b7d176b8 extract SettingsView into own file
also fix some copyright attributions
2020-10-19 14:55:01 +02:00
Bruno Windels
1fe3f646dc further style settings page 2020-10-19 14:53:05 +02:00
Bruno Windels
d8f8342a10 make middle panel responsive styling + hide back b. + header css generic 2020-10-19 14:52:18 +02:00
Bruno Windels
1e599be142 Merge branch 'master' into bwindels/settings-screen 2020-10-19 13:45:17 +02:00
Bruno Windels
6bf8e976cb don't assign timelineVM before loaded, so prop doesn't return it
... if the binding happens to be evaluating (which it was during mount)

follow-up from bwindels/fix-crash-switch-rooms-too-fast
2020-10-19 13:39:19 +02:00
Bruno Windels
f07b4a6554
Merge pull request #167 from vector-im/bwindels/fix-redirects
Fix back button not working when changing rooms
2020-10-19 11:01:07 +00:00
Bruno Windels
cdcdc07c06 fix a crash when switching rooms before the messages have loaded
as we were not disposing the timeline view model
(but still not leaking though)
2020-10-19 12:57:21 +02:00
Bruno Windels
8357260133 fix an applying an url also pushing a copy of the url back on history
it should replace instead, as it is a redirect
2020-10-19 12:55:42 +02:00
Bruno Windels
fb273782bf use handleEvent in History so we don't have to bind 2020-10-19 12:55:10 +02:00
Bruno Windels
3e34ccb7e1 rename, I think, last occurrence of brawl to hydrogen 👋 2020-10-19 12:52:57 +02:00
Bruno Windels
db102e63d2 Merge branch 'master' into bwindels/settings-screen 2020-10-19 10:13:41 +02:00
Bruno Windels
90910dae15 render multiline messages with br's 2020-10-19 10:00:32 +02:00
Bruno Windels
4828e141c9 add br tag to html template 2020-10-19 10:00:18 +02:00
Bruno Windels
efe6956a79 support render method and value in StaticView 2020-10-19 09:59:56 +02:00
Bruno Windels
974f77a71d WIP 2020-10-16 18:06:20 +02:00
Bruno Windels
90435a8fb7 semicolons, add them 2020-10-16 15:48:49 +02:00
Bruno Windels
e599d8b6fa also clear 2020-10-16 15:47:13 +02:00
Bruno Windels
74e6d018f4 ensure url creation does not race on the current path of the navigation 2020-10-16 15:46:06 +02:00
Bruno Windels
0ca926d427 claim clients immediately from service worker 2020-10-16 14:52:34 +02:00
Bruno Windels
743cdd0bea safari is tooo fast and skips it when it shouldn't
also, I've never had the registration fail, seems very unlikely
2020-10-16 13:26:19 +02:00
Bruno Windels
c125335ef0 undo debug squibels 2020-10-16 13:03:16 +02:00
Bruno Windels
5a30855227 rename urlRouter option in view models to urlCreator 2020-10-16 13:02:21 +02:00
Bruno Windels
0d622164df close session db in other tabs when opening 2020-10-16 12:50:37 +02:00
Bruno Windels
fc61729cb3 support closing session in other clients in service worker 2020-10-16 12:50:19 +02:00
Bruno Windels
101c7015f2 move service worker code in bundle, and support closing sessions 2020-10-16 12:49:42 +02:00
Bruno Windels
788bce7904 reduce navigation boilerplate
this makes the url router adjust the url when the navigation path is
changed, instead of doing urlRouter.applyUrl() and
urlRouter.history.pushUrl().

This history field and applyUrl method on URLRouter are now private,
as the URLRouter should only be used to generate urls you want to
put in an <a href="..."></a>, anything else should use navigator.push()
2020-10-16 12:46:14 +02:00
Bruno Windels
ddf7d01760 WIP working 2020-10-15 21:35:10 +02:00
Bruno Windels
3aa1992a3f WIP of messaging to sw 2020-10-15 19:12:16 +02:00
Bruno Windels
6b15e7e3ba remove extra newline 2020-10-15 15:58:59 +02:00
Bruno Windels
5fcf8022a1 store the url on every change, as PWAs don't trigger beforeunload ...
... when (force) closed
2020-10-14 15:30:40 +02:00
Bruno Windels
3d8dfc9635 also show grid layout in mobile layout, just in case of restoring url 2020-10-14 15:29:51 +02:00
Bruno Windels
7c2fc516bb restore last url if not providing a specific one on startup 2020-10-14 15:10:32 +02:00
Bruno Windels
19e774ce01 don't assume grid button is a button, just in case 2020-10-14 14:54:56 +02:00
Bruno Windels
4f46854362 add close session button 2020-10-14 14:54:46 +02:00
Bruno Windels
d96f8adcc7 fix back button in room header not working 2020-10-14 14:53:52 +02:00
Bruno Windels
cf99f55f3d fix typo making the room list not shown on the mobile layout 2020-10-14 14:20:53 +02:00
Bruno Windels
fd1df595c8 remove leftover logging 2020-10-14 14:06:11 +02:00
Bruno Windels
8122d76e73 Merge branch 'master' into bwindels/url-routing 2020-10-14 12:45:49 +02:00
Bruno Windels
b00db1af3e only keep 20 outbound olm sessions in memory at once to prevent OOM 2020-10-14 12:44:27 +02:00
Bruno Windels
07701117cd reduce megolm sync cache size to 1 session
as this is kept around for every e2ee room, and we only have
limited olm memory
2020-10-14 12:43:35 +02:00
Bruno Windels
6ad7be8726 fix leaking left panel view model after closing session 2020-10-14 11:34:34 +02:00
Bruno Windels
de83d7740b replace custom error view with staticview 2020-10-14 11:26:39 +02:00
Bruno Windels
fa8bec0b56 fix room view model being leaked when closing session 2020-10-14 11:26:10 +02:00
Bruno Windels
b29b776e9f fix olm session cache being leaked when closing session 2020-10-14 11:25:49 +02:00
Bruno Windels
789a41c671 fix styling for session info entries 2020-10-14 10:34:25 +02:00
Bruno Windels
692fa808e4 make utility buttons also useable for links 2020-10-14 10:34:11 +02:00
Bruno Windels
7e477b3c8d rename button.styled to .button-action so it can also be used for links 2020-10-14 10:33:48 +02:00
Bruno Windels
5fe479e8a9 fix styling for room list items 2020-10-14 10:20:20 +02:00
Bruno Windels
3d327b0875 also open the initial room in the room list 2020-10-14 10:20:00 +02:00
Bruno Windels
2333a959a2 actually apply the /session/<id> url after login! 2020-10-13 17:10:28 +02:00
Bruno Windels
ab354e9f38 update prop type 2020-10-13 15:19:54 +02:00
Bruno Windels
afbfb0c82c anticipate non-found rooms 2020-10-13 15:18:13 +02:00
Bruno Windels
081820d8fb also update view when going to an not-found room 2020-10-13 15:14:07 +02:00
Bruno Windels
a14795e3f8 unused 2020-10-13 15:05:11 +02:00
Bruno Windels
d1d675ed7a make navigation observables already return new value before they emit 2020-10-13 14:54:57 +02:00
Bruno Windels
7f3e0f237b also do redirect after initial navigation 2020-10-13 14:43:45 +02:00
Bruno Windels
1780f334ea more tests 2020-10-13 13:13:47 +02:00
Bruno Windels
d9c8a6339e support empty strings for rooms segment 2020-10-13 13:13:35 +02:00
Bruno Windels
7b13e45e19 fix creating the rooms segment 2020-10-13 13:13:15 +02:00
Bruno Windels
a360d0a2b9 also unset room vm if moving away from room 2020-10-13 13:12:49 +02:00
Bruno Windels
379d65edf1 also create new vm when coming for grid if transfering vm fails 2020-10-13 13:12:30 +02:00
Bruno Windels
77a58041eb clean-up room grid initialization with vm transfering
also handle duplicate rooms, and add unit tests for grid vm
2020-10-13 13:11:19 +02:00
Bruno Windels
c8dd7b42e7 encountered this very unlikely race while testing, so prevent it 2020-10-13 13:10:35 +02:00
Bruno Windels
db5c98a706 support reassigning to null from untrack 2020-10-13 13:10:27 +02:00
Bruno Windels
4e8e9eae26 first round of fixes 2020-10-12 18:31:55 +02:00
Bruno Windels
14d2dcbc60 remove dead code 2020-10-12 17:49:41 +02:00
Bruno Windels
b2d6b7014b first draft of url navigation for grid 2020-10-12 17:49:06 +02:00
Bruno Windels
6c2c29a7da WIP 2020-10-09 19:43:11 +02:00
Bruno Windels
83ac3eccc5 apply url changes to view gallery 2020-10-09 17:04:25 +02:00
Bruno Windels
56e51fc2aa idea comment 2020-10-09 17:04:17 +02:00
Bruno Windels
927e8134d3 use url navigation in root view model
also track all view models as it is
important everything is properly disposed now
2020-10-09 17:03:38 +02:00
Bruno Windels
33627edcb3 use url to go back in login view 2020-10-09 17:03:24 +02:00
Bruno Windels
35e85c55e0 use urls instead of callbacks to navigate in session picker 2020-10-09 17:03:13 +02:00
Bruno Windels
7b86b483ed confirm before clearing 2020-10-09 17:02:19 +02:00
Bruno Windels
3ab68ef438 throw when something tracked is not disposable, fail early 2020-10-09 17:01:54 +02:00
Bruno Windels
1289f065d6 implement root view as template view 2020-10-09 17:01:39 +02:00
Bruno Windels
0f8f558889 dispose session container from view model 2020-10-09 17:01:22 +02:00
Bruno Windels
d48bbd122a make applyUrl and history public
so we don't need to bother with silent flags in replaceUrl
2020-10-09 17:00:19 +02:00
Bruno Windels
35b83b7976 make SessionLoadViewModel transfer ownership of container with callback
also, deleting the session when navigating away is now done by
LoginViewModel
2020-10-09 16:59:34 +02:00
Bruno Windels
4ae622bdd3 make pushUrl silent again 2020-10-09 16:58:53 +02:00
Bruno Windels
41c1c9a6c3 rename Brawl -> Root
one of the last occurrences of brawl
2020-10-09 09:59:59 +02:00
Bruno Windels
c9bb18b87e make loading screen a bit prettier
by wrapping it in a view with common pre-session chrome

this renames the existing SessionLoadView to SessionLoadStatusView
so we can call the wrapper the former.
2020-10-09 09:58:00 +02:00
Bruno Windels
696e7856f8 some cleanup 2020-10-09 09:56:01 +02:00
Bruno Windels
da9798979c Merge branch 'master' into bwindels/url-routing 2020-10-09 09:30:38 +02:00
Bruno Windels
24690f8035 fix placeholder not being hidden in mobile layout 2020-10-09 09:30:06 +02:00
Bruno Windels
0d54f88670 early draft of showing load progress of a session loaded through url 2020-10-08 18:23:53 +02:00
Bruno Windels
00bd4364f0 early draft of loading session via url scheme 2020-10-08 18:23:37 +02:00
Bruno Windels
087aff4ef4 set to true if undefined passed in as well 2020-10-08 18:23:08 +02:00
Bruno Windels
4fe971775c more url router work, differentiate between path and url
rename hashobservable to history
2020-10-08 18:22:36 +02:00
Bruno Windels
547241f577 Merge branch 'master' into bwindels/url-routing 2020-10-08 16:42:14 +02:00
Bruno Windels
ca0f8fd142 leave some space between room list tile and edge 2020-10-08 16:37:24 +02:00
Bruno Windels
5c2425796c Merge branch 'master' into bwindels/url-routing 2020-10-08 16:33:19 +02:00
Bruno Windels
cb0ef1a1ae this makes the caret huge on gnome web 2020-10-08 16:29:38 +02:00
Bruno Windels
35832e387a Swap grid tile description based on focus
swap RoomPlaceholderView for generic StaticView
2020-10-08 16:14:59 +02:00
Bruno Windels
93e301e4fa fix spinner margins 2020-10-08 15:53:12 +02:00
Bruno Windels
4783e03871 fix room header margin issue with hidden back button 2020-10-08 15:21:16 +02:00
Bruno Windels
868b1a1045 style composer 2020-10-08 15:20:52 +02:00
Bruno Windels
59802d1812 style room header 2020-10-08 15:00:20 +02:00
Bruno Windels
2cbe349a4d don't read private parts 2020-10-08 14:21:34 +02:00
Bruno Windels
5c299c1db9 remove prefixes now we auto prefix 2020-10-08 14:18:48 +02:00
Bruno Windels
47a43869e6 fix grid layout in IE 11
this brings back index addressing rather than x y in the grid vm,
as we need to have a css class for every position for IE 11,
as we can't use css variables and autoprefixer can
translate grid-areas
2020-10-08 14:17:43 +02:00
Bruno Windels
c4cfb6f6d1 align left panel to 4px grid better, and simply margins 2020-10-08 10:29:30 +02:00
Bruno Windels
fd4b3d238f increase click area of clear filter button, add search icon 2020-10-08 10:13:05 +02:00
Bruno Windels
c2eebb9af2 prevent filter field and composer breaking narrow layouts 2020-10-08 10:11:12 +02:00
Bruno Windels
e80f37603b prevent breaking narrow layouts with inputs 2020-10-08 10:10:39 +02:00
Bruno Windels
26112fe3de update grid icons 2020-10-08 10:10:03 +02:00
Bruno Windels
dafa995429 placeholder does not count as room shown 2020-10-07 18:00:07 +02:00
Bruno Windels
b79b41adcd keep focused class 2020-10-07 17:59:58 +02:00
Bruno Windels
c80c369c42 prevent grid item from growing to max content height 2020-10-07 17:59:40 +02:00
Bruno Windels
bd959bc147 style grid button 2020-10-07 17:59:28 +02:00
Bruno Windels
ddda03d82c style filter field and grid button 2020-10-07 17:59:14 +02:00
Bruno Windels
61b5369f2f also show status view a bit lower for grid 2020-10-07 14:53:41 +02:00
Bruno Windels
f6d9ffa7bb friends don't read each others private properties 2020-10-07 14:36:08 +02:00
Bruno Windels
46b24c3f24 fix room not changing when not in grid view 2020-10-07 14:32:57 +02:00
Bruno Windels
537972b97b clarify comment 2020-10-07 14:25:32 +02:00
Bruno Windels
de14d6b54b fix filter field taking up too much width 2020-10-07 14:22:14 +02:00
Bruno Windels
152a83f75f css for the grid view 2020-10-07 14:22:00 +02:00
Bruno Windels
99ff387dec index the room by x,y instead of index from the view
so it is easier to implement a focus-ring as a separate dom node
2020-10-07 14:18:35 +02:00
Bruno Windels
b9d2da736a when opening room, focus in grid if already open 2020-10-07 13:18:19 +02:00
Bruno Windels
1ff6d36ec3 add grid toggle button to left panel 2020-10-07 12:31:52 +02:00
Bruno Windels
7955462dda render grid view in session view 2020-10-07 12:31:24 +02:00
Bruno Windels
dc1357bb31 support clearing unread when focusing a room 2020-10-07 12:30:46 +02:00
Bruno Windels
614ec08238 integrate grid vm with session vm, allowing to switch 2020-10-07 12:25:40 +02:00
Bruno Windels
9cc7833d7a implement room grid view 2020-10-07 12:24:44 +02:00
Bruno Windels
5a1d255d2a implement room grid view model 2020-10-07 12:23:02 +02:00
Bruno Windels
01ff806b86 WIP 2020-10-07 09:40:51 +02:00
Bruno Windels
404de53c75 basic url router and navigation bootstrapping 2020-10-06 18:06:11 +02:00
Bruno Windels
b373a177ec create room url in room tile 2020-10-06 18:05:52 +02:00
Bruno Windels
221b94adbf room tile should be passed child options 2020-10-06 18:05:38 +02:00
Bruno Windels
5ab947e7de pass urlRouter and navigation as view model options 2020-10-06 18:05:02 +02:00
Bruno Windels
514095da7a move waitFor and get to BaseObservableValue 2020-10-06 18:04:34 +02:00
Bruno Windels
b8dcb249ff implement url router 2020-10-06 18:03:12 +02:00
Bruno Windels
ef428809b5 implement navigation stack 2020-10-06 18:01:56 +02:00
Bruno Windels
1de645a990 give filter field a bit more space 2020-10-06 13:32:27 +02:00
Bruno Windels
e878b5786e fix room view not showing anymore on narrow viewports 2020-10-06 13:31:23 +02:00
Bruno Windels
a7db44eabf
Merge pull request #138 from vector-im/bwindels/filter-room-list
Room list filtering
2020-10-06 11:08:39 +00:00
Bruno Windels
b1cb797919 fix refactor error in xhr, breaking it 2020-10-06 13:02:35 +02:00
Bruno Windels
0d6fe32f30 clear filter on esc 2020-10-06 12:43:31 +02:00
Bruno Windels
ddbe3305c8 fix filter field height 2020-10-06 12:34:13 +02:00
Bruno Windels
2fe6f4b769 clean up SessionView by making it a TemplateView 2020-10-06 12:23:17 +02:00
Bruno Windels
cac3daca72 add LeftPanelView(Model) with room filtering 2020-10-06 12:23:11 +02:00
Bruno Windels
c8125595a7 render hidden flag 2020-10-06 12:21:42 +02:00
Bruno Windels
c532cb5aea add hidden flag to room tile vm
also move to leftpanel dir
2020-10-06 12:21:11 +02:00
Bruno Windels
e3fdd3a4fd ApplyMap, your observable map collection for applying side-effects 2020-10-06 12:20:28 +02:00
Bruno Windels
9a3734e5ba this is a NOP, but in the future might not be 2020-10-06 12:20:03 +02:00
Bruno Windels
7def542e21 fix test 2020-10-06 12:19:47 +02:00
Bruno Windels
84425fad5c more work on FilteredMap (not done yet though)
I ended up not using this, but at some point we'll need it,
so commit this work
2020-10-06 12:19:08 +02:00
Bruno Windels
943467cf67 actually implemented filtered map 2020-10-05 18:18:44 +02:00
Bruno Windels
5ae1be9a9c ignore invalid json on error pages 2020-10-05 17:18:05 +02:00
Bruno Windels
c8e4dbc1b3 this should be a map 2020-10-05 17:06:29 +02:00
Bruno Windels
b2e6310775 re-focus composer when clicking send button 2020-10-05 17:03:46 +02:00
Bruno Windels
a04a6a83be fix composer not being visible on mobile 2020-10-05 17:03:32 +02:00
Bruno Windels
8f5d678698 cache small media repo thumbnails in service worker 2020-10-05 15:58:29 +02:00
Bruno Windels
6a8c0b52e0 indenting 2020-10-05 15:10:06 +02:00
Bruno Windels
8dc2816d6e keep hashed files in cache as long as they don't change 2020-10-02 19:54:24 +02:00
Bruno Windels
e93b091566 dont use no-cache in fetch, as it doesn't play well with CORS on Safari 2020-10-02 14:02:59 +02:00
Bruno Windels
07eee8fac1 only create fragments when we will really write events to the timeline store 2020-10-01 17:01:33 +02:00
Bruno Windels
bebdaad7d4 log when we can't abort 2020-10-01 16:23:15 +02:00
Bruno Windels
c1df371a14 add some documentation for our idb investigations 2020-10-01 16:14:58 +02:00
Bruno Windels
9a4d47820d change this back as well 2020-10-01 14:46:30 +02:00
Bruno Windels
cb7da2ba4a dont need this anymore 2020-10-01 14:45:09 +02:00
Bruno Windels
f402e8c6c4 typo/thinko in docs 2020-10-01 14:39:23 +02:00
Bruno Windels
300529b7c5 write sync token first
in case we get a TransactionInactiveError,
we have at least written the sync token
and won't repeat the same sync request
2020-10-01 14:38:54 +02:00
Bruno Windels
1117c77d05 note for future optimisation 2020-10-01 14:36:00 +02:00
Bruno Windels
d5a6a4d350 todo comment 2020-10-01 14:35:46 +02:00
Bruno Windels
3c7125bb88 add (optional) logging for idb requests 2020-10-01 14:35:33 +02:00
Bruno Windels
93a7f9959e Safari doesn't like the prepare txn still open when opening the sync txn
Waiting for it to close magically solves the TransactionInactiveError
we were seeing on some incremental sync request when
reading from roomMembers.

Still unsure what this is about, and if we should wait for all read txns
to close or not.
2020-10-01 14:31:38 +02:00
Bruno Windels
ddb14f48bf we actually don't need to track write requests
as errors will bubble up to the txn
2020-10-01 14:31:08 +02:00
Bruno Windels
d5a52c32d6 these don't return a promise anymore 2020-09-29 11:51:14 +02:00
Bruno Windels
37690cffe3 track storage write requests internally, as we never await their promise 2020-09-29 11:50:37 +02:00
Bruno Windels
482b5f4d22 allow passing message to IDBRequestError 2020-09-29 11:50:10 +02:00
Bruno Windels
43d430fc98 remove unused storage modification functions 2020-09-29 11:47:49 +02:00
Bruno Windels
f993048a2b Merge branch 'master' into bwindels/idb-promises-txn 2020-09-29 11:33:58 +02:00
Bruno Windels
e5b1cbbcd3 prevent endless loop when restoring messages that were already sent 2020-09-29 11:32:49 +02:00
Bruno Windels
7627a2bda2 add comment 2020-09-29 10:53:02 +02:00
Bruno Windels
163ca12854 ignore abort error 2020-09-29 10:52:52 +02:00
Bruno Windels
919357b474 more broken imports after refactor 2020-09-29 09:57:48 +02:00
Bruno Windels
c529df179b also import this 2020-09-29 09:56:46 +02:00
Bruno Windels
c1ecaffbae fix refactor typo 2020-09-29 09:54:51 +02:00
Bruno Windels
07fcf7e75b also do this in try catch 2020-09-29 09:43:25 +02:00
Bruno Windels
4d23529b68 set promise polyfill before others
just in case
2020-09-29 09:42:43 +02:00
Bruno Windels
b1f9cfd972 cleanup storage errors a bit 2020-09-29 09:17:03 +02:00
Bruno Windels
ee4c132fb4 add todo 2020-09-28 16:06:41 +02:00
Bruno Windels
76381fbca1 open storage transactions synchronously
this (almost) makes it work in some browsers that otherwise
have throw a TransactionInactiveError on the first operation
you try to do on a store.
2020-09-28 16:06:41 +02:00
Bruno Windels
d759e1429f set error before changing state to stopped 2020-09-28 16:06:19 +02:00
Bruno Windels
3440823981
Merge pull request #117 from vector-im/bwindels/idb-promises
Prevent transaction from closing on IE11/Win7
2020-09-28 13:37:34 +00:00
Bruno Windels
47dbc87e95 load promise first 2020-09-28 15:34:10 +02:00
Bruno Windels
bb58fa9b6c dont need this anymore 2020-09-28 15:32:40 +02:00
Bruno Windels
18cc34c082 remove extra newlines 2020-09-28 15:31:04 +02:00
Bruno Windels
dd30f51ffe add copyright 2020-09-28 15:28:51 +02:00
Bruno Windels
9cf24d910a properly install polyfill and remove logging 2020-09-28 15:28:38 +02:00
Bruno Windels
6d003f9565 don't include corejs promise polyfill anymore 2020-09-28 15:28:22 +02:00
Bruno Windels
e3581c8260 use our fork of es6-promise with flush exposed as the promise polyfill 2020-09-28 15:27:38 +02:00
Bruno Windels
8366b44d8c dont assume global is window 2020-09-28 14:52:12 +02:00
Bruno Windels
98a6d82820 detect when sync promise hack is needed 2020-09-28 14:51:41 +02:00
Bruno Windels
706ec97296 change method name 2020-09-28 13:25:44 +02:00
Bruno Windels
64290d5ae6 flush promises manually in idb event handler 2020-09-25 16:53:19 +02:00
Bruno Windels
becdf656a4 nicer error messages when decrypting with a worker 2020-09-25 16:52:26 +02:00
Bruno Windels
27a8ef4604 add comment how timeouts interact with the reconnector 2020-09-25 10:45:41 +02:00
Bruno Windels
e175e9ac8b cleanup 2020-09-25 10:45:34 +02:00
Bruno Windels
134b04c782 make flushing room key shares reentrant
as it can be called from Room.start while still running.
2020-09-25 10:45:00 +02:00
Bruno Windels
bcca23bac9 retry sync on timeout, even for incremental sync 2020-09-25 10:44:36 +02:00
Bruno Windels
7f0d36cf79 remove double negation 2020-09-25 10:44:19 +02:00
Bruno Windels
86df4993e1 prevent room summary from being updated every time it is in /sync resp 2020-09-24 16:45:28 +02:00
Bruno Windels
46abafdccc ensure cloned is always set to false for this._data
by making all assignments of this._data go through applyChanges
2020-09-24 16:40:51 +02:00
Bruno Windels
4a0173e90f only run decryptPending if needed 2020-09-24 10:53:51 +02:00
Bruno Windels
4d616ce281 add todo for future optimisation 2020-09-24 10:35:09 +02:00
Bruno Windels
ece4840653 don't mark rooms as unread after retrying decryption for now
this will not mark e2ee rooms as unread if their room key is delayed
though. We should really only do this for back-filled events but that
is hard to do right now, as we don't know the original source here.
2020-09-23 19:11:11 +02:00
Bruno Windels
eb4237f6f4 tell caller if an update was done from summery.writeAndApplyData
so room actually emits an update
2020-09-23 19:10:25 +02:00
Bruno Windels
17f84ab314 fix "this" still being used in readRawTimelineEntries ... 2020-09-23 19:09:44 +02:00
Bruno Windels
086bdafe9a no need for async 2020-09-23 18:28:21 +02:00
Bruno Windels
7cad3b2bdb some tabs in here 2020-09-23 18:22:51 +02:00
Bruno Windels
64f657e5a2 fix test 2020-09-23 18:20:29 +02:00
Bruno Windels
6e77ebb160 undo obsolete changes 2020-09-23 18:06:16 +02:00
Bruno Windels
d53b5eefb3 fill in the blanks 2020-09-23 17:59:42 +02:00
Bruno Windels
9d41e122a0 draft of falling back to reading entries since last decrypted event key
this change notifyRoomKey(s) to only take one room key at a time
to simplify things
2020-09-23 17:34:25 +02:00
Bruno Windels
a8392dc684 also decrypt messages in the sync response that enabled encryption
like initial sync
2020-09-23 14:26:14 +02:00
Bruno Windels
241176d6fb WIP 2020-09-22 18:22:37 +02:00
Bruno Windels
137f55b44d manage request scheduler in session container
so we can start it before sync does its first request,
which otherwise gets aborted because the scheduler hasn't started yet
2020-09-22 16:39:41 +02:00
Bruno Windels
150f06b9bf also move to Stopped for aborts 2020-09-22 16:39:04 +02:00
Bruno Windels
85b451ffa1 can't rename named params like this 2020-09-22 15:49:43 +02:00
Bruno Windels
5660e0f4f0 rename send scheduler to request scheduler 2020-09-22 15:49:35 +02:00
Bruno Windels
0a00d4c865 use hsApi wrapper that handles rate-limiting instead of send scheduler 2020-09-22 13:43:18 +02:00
Bruno Windels
d7c25e3106 move MediaRepository out of HomeServerApi
so HomeServerApi becomes easier to wrap, only having methods
that return a RequestResult.
2020-09-22 13:40:38 +02:00
Bruno Windels
6cd227b82d only prompt after waiting 10s for sync UTD 2020-09-22 09:30:25 +02:00
Bruno Windels
0a83bf1176 more notes for legacy css marker 2020-09-22 09:30:13 +02:00
Bruno Windels
3359d49161 off both passphrase and security key options 2020-09-21 19:19:55 +02:00
Bruno Windels
e6a46874c4 wrap olm error for creating session in DecryptionError
so we can relate it back to the event that caused it
2020-09-21 17:58:13 +02:00
Bruno Windels
c9ee5a5db2 stay in catchup mode as long as there are device messages
this implements https://github.com/vector-im/element-web/issues/2782

it also implements 0 timeout for catchup, getting rid of the
catching up with your convo banner for 30s upon reconnection.
2020-09-21 17:57:01 +02:00
Bruno Windels
015c6b1c70 interpret unreported signed_curve25519 as 0 OTKs 2020-09-21 17:56:23 +02:00
Bruno Windels
4dfbd3f3cd don't run afterSyncCompleted and next sync request in parallel
as the otk count the next sync request reports will be outdated
if afterSyncCompleted uploaded OTKs, and the next afterSyncCompleted
, having the wrong server OTK count, will again upload OTKs.

This will overwrite existing OTK keys which will
throw BAD_MESSAGE_KEY_ID when creating new sessions with those OTKs
2020-09-21 17:53:29 +02:00
Bruno Windels
c7370d7b01 Use continue in for loop rather than return
this was running in a Promise.all(array.map)) closure before
2020-09-21 14:11:28 +02:00
Bruno Windels
2c6a3a7ce7 fix afterSyncCompleted not being run after a sync error occurs
the error was not cleared when calling start again.

Also we should better look at the sync status to decide whether to run
afterSyncCompleted.

This prevented the room keys from being applied once you
had a connection error or other error at some point
since you started the app.
2020-09-21 13:55:35 +02:00
Bruno Windels
8cf29e344b don't send access token on /versions
as it's not a good idea, and some CORS configs might not be happy with
an Authorization header on that path
2020-09-18 18:13:20 +02:00
Bruno Windels
1d33ab20a5 fix decrypted tiles not corresponding to a tile 2020-09-18 13:36:16 +02:00
Bruno Windels
4d604f7357 log all sync errors 2020-09-18 13:11:18 +02:00
Bruno Windels
3704de1a26 more dispose 2020-09-18 13:11:10 +02:00
Bruno Windels
da780d0aa2 delay backup 10s if missing session event came from sync 2020-09-18 13:11:02 +02:00
Bruno Windels
3aead4eae2 createEnum does not take an array 2020-09-18 13:08:35 +02:00
Bruno Windels
ed913ca24b add dispose to room encryption 2020-09-18 13:08:18 +02:00
Bruno Windels
6c46cc98de be more specific in error message 2020-09-18 12:12:52 +02:00
Bruno Windels
2de406afa0 log secret storage error as well 2020-09-18 12:12:19 +02:00
Bruno Windels
cb32f4201e note for future cleanup 2020-09-18 12:12:12 +02:00
Bruno Windels
9fd39ab57f aes-js doesn't work with ArrayBuffers 2020-09-18 12:04:48 +02:00
Bruno Windels
36b56132b0 add TextEncoder/Decoder polyfill to legacy bundle 2020-09-18 12:04:22 +02:00
Bruno Windels
6375574a56 show error 2020-09-17 18:59:40 +02:00
Bruno Windels
f58a3ee975 use olm from param 2020-09-17 18:56:02 +02:00
Bruno Windels
7d6fcfafa8 pass olm, better naming, don't reuse var 2020-09-17 18:55:39 +02:00
Bruno Windels
5b45c00322 switch to security key 2020-09-17 18:55:28 +02:00
Bruno Windels
ceac6008bc fix import 2020-09-17 18:55:09 +02:00
Bruno Windels
fe5b732c97 cleanup, better copy text 2020-09-17 18:54:55 +02:00
Bruno Windels
494c5cbcf0 notify UI when we need session backup 2020-09-17 18:00:00 +02:00
Bruno Windels
06ccd74680 this should be read-write, oops 2020-09-17 17:59:35 +02:00
Bruno Windels
1b8e481559 keys from backup need to be imported with import_session, not create 2020-09-17 17:59:02 +02:00
Bruno Windels
915925d6ee don't throw when trying to restore session from backup, check sender key 2020-09-17 17:57:52 +02:00
Bruno Windels
a205ae8841 fixes 2020-09-17 17:57:12 +02:00
Bruno Windels
5752cca69c go back to bs58 and use other base64 decoder
as base-x isn't meant for base64
2020-09-17 17:56:05 +02:00
Bruno Windels
9d622434fb integrate session backup with session class 2020-09-17 15:58:46 +02:00
Bruno Windels
3cebd17cbe adjust paths 2020-09-17 15:17:46 +02:00
Bruno Windels
c9d8d40242 move ssss out of e2ee dir as not really e2ee related 2020-09-17 15:17:00 +02:00
Bruno Windels
33aa475e18 add function to create key from either passphrase or recovery key 2020-09-17 15:16:01 +02:00
Bruno Windels
7f97c540fb obsolete comment, this is already the case 2020-09-17 14:20:42 +02:00
Bruno Windels
092547bfc8 renaming 2020-09-17 14:20:36 +02:00
Bruno Windels
17fc249fa8 integrate session backup with room encryption and megolm decryption 2020-09-17 14:20:15 +02:00
Bruno Windels
3941af93d2 more impl of SessionBackup 2020-09-17 14:19:57 +02:00
Bruno Windels
fff8308259 first draft of SessionBackup 2020-09-17 12:34:39 +02:00
Bruno Windels
1a105d391b cleanup: rename session name to hydrogen as well
as we'll need people to resync because of account data as well
2020-09-17 12:34:10 +02:00
Bruno Windels
b7401a148c some ssss cleanup 2020-09-17 12:33:57 +02:00
Bruno Windels
8204e942d9 first draft of reading a ssss secret 2020-09-17 11:39:40 +02:00
Bruno Windels
c44ab3e55e derive ssss key from recovery key 2020-09-17 11:39:25 +02:00
Bruno Windels
7c4c266fe0 derive ssss key from passphrase 2020-09-17 11:39:07 +02:00
Bruno Windels
45c62eb0e5 common types and storage for ssss 2020-09-17 11:38:53 +02:00
Bruno Windels
7412b3aae8 forgot to commit account data store 2020-09-17 11:38:44 +02:00
Bruno Windels
4ec0e67384 use base-x to support both base64 and base58 2020-09-17 11:36:54 +02:00
Bruno Windels
abfde76e24 store account data in storage
needs a resync, need to think how to handle this
2020-09-17 10:39:51 +02:00
Bruno Windels
00eade1c16 add crypto driver with primitives needed for 4S & session backup 2020-09-17 10:19:09 +02:00
Bruno Windels
ab01c903a6 turns out that rollup-plugin-cleanup doesn't like line 259 in aes-js
so don't remove comments for now in the legacy build
2020-09-17 09:36:37 +02:00
Bruno Windels
77a21c08eb add legacy extras, so deps only needed for legacy are not in main bundle 2020-09-16 18:31:17 +02:00
Bruno Windels
b63aaa6dcb add typed array polyfills to worker bundle 2020-09-16 14:42:13 +02:00
Bruno Windels
12262f2824 actually use correct method to get all device ids for a user 2020-09-14 18:31:54 +02:00
Bruno Windels
75bff228ec fix data not being passed on, caused crash on initial sync 2020-09-14 17:45:13 +02:00
Bruno Windels
a11b612640 await this 2020-09-14 17:45:02 +02:00
Bruno Windels
b2e6e8687e dispose tiles
also add more defence against emitting event when disposed
2020-09-14 17:44:37 +02:00
Bruno Windels
9ea961ae53 don't crash when we don't have a subscription anymore 2020-09-14 17:43:06 +02:00
Bruno Windels
49f330279b also pass timeline entries to summary after initial decryption failed 2020-09-14 16:34:07 +02:00
Bruno Windels
f3f07a0672 centralize update emitting in room 2020-09-14 16:33:43 +02:00
Bruno Windels
bce46daa9c this is shorter 2020-09-14 16:33:30 +02:00
Bruno Windels
3325f12092 remove devices not present in /keys/query response 2020-09-14 15:47:00 +02:00
Bruno Windels
504371eaf3 this is outdated (and not really needed) 2020-09-14 15:47:00 +02:00
Bruno Windels
8555fd5f18 a little extra caution 2020-09-14 15:47:00 +02:00
Bruno Windels
aa5d55bbf2 show when e2ee is enabled in timeline 2020-09-14 15:47:00 +02:00
Bruno Windels
8c4d68def9 show decryption errors in timeline 2020-09-14 15:47:00 +02:00
Bruno Windels
a2f8731a23 Keep room key with earliest index 2020-09-14 15:47:00 +02:00
Bruno Windels
9fad5b3b29 only load olm once 2020-09-14 15:47:00 +02:00
Bruno Windels
0c3ea90ab4 also update room list when encrypted events come in 2020-09-14 15:46:58 +02:00
Bruno Windels
fb69688d47 also update room list when encrypted events come in 2020-09-14 14:01:47 +02:00
Bruno Windels
4875095ea3 fix event tiles not updating when event is decrypted when room keys come 2020-09-11 17:47:35 +02:00
Bruno Windels
2855166239 migrate encryption flag so old sessions dont send unencrypted events 2020-09-11 16:48:04 +02:00
Bruno Windels
e763771cc2 cleanup 2020-09-11 14:45:38 +02:00
Bruno Windels
96119b4e58 load all pending operations when starting the session, pass to room 2020-09-11 14:41:40 +02:00
Bruno Windels
ab1fe711ad implement room key sharing with operations store 2020-09-11 14:41:12 +02:00
Bruno Windels
b00865510f add operation store 2020-09-11 14:40:05 +02:00
Bruno Windels
9f6822f362 remove needsRoomKey flag on member 2020-09-11 14:38:36 +02:00
Bruno Windels
bba53b3477 dont store duplicated key values for replay detection 2020-09-11 12:08:06 +02:00
Bruno Windels
0dece5b04f make continuation logic work well with pending events
- don't use display name to compare but user id
   (pending doesn't have display name yet)
 - use current time as timestamp
2020-09-11 11:43:40 +02:00
Bruno Windels
2c186554a1 this works better in ie11 for some reason 2020-09-11 11:36:08 +02:00
Bruno Windels
843e3e6b1c show encrypted status of room 2020-09-11 11:35:53 +02:00
Bruno Windels
0e3084cce3 provide alternative spinner for ie11 2020-09-11 11:28:59 +02:00
Bruno Windels
95c6fd5a5b reenable only using worker when wasm is not supported 2020-09-11 10:53:15 +02:00
Bruno Windels
e0d9d703b7 offload olm account creation in worker 2020-09-11 10:43:17 +02:00
Bruno Windels
0b26e6f53a compress new e2ee stores into one new idb version 2020-09-11 08:40:43 +02:00
Bruno Windels
78fecd003a cleanup 2020-09-10 18:57:29 +02:00
Bruno Windels
af36c71a59 load worker in main and pass paths so it works both on compiled and non-compiled 2020-09-10 18:41:23 +02:00
Bruno Windels
de1cc0d739 abort decrypt requests when changing room 2020-09-10 17:43:01 +02:00
Bruno Windels
0bf1723d99 Worker WIP 2020-09-10 15:40:30 +01:00
Bruno Windels
fdbc5f3c1d WIP worker work 2020-09-10 13:00:11 +02:00
Bruno Windels
17412bbb2f more validation 2020-09-10 12:12:39 +02:00
Bruno Windels
94b0cfbd72 add prepareSync and afterPrepareSync steps to sync, run decryption in it 2020-09-10 12:11:43 +02:00
Bruno Windels
1c77c3b876 expose multi-step decryption from RoomEncryption, adjust room timeline
sync code hasn't been adjusted yet
2020-09-10 12:11:25 +02:00
Bruno Windels
7c1f9dbed0 split up megolm decryption so it can happen in multiple steps,see README 2020-09-10 12:05:53 +02:00
Bruno Windels
a4c8e56ab0 fix getKey not working on IE11 2020-09-09 11:42:26 +01:00
Bruno Windels
f8e3a75471 fix typo 2020-09-09 10:22:29 +02:00
Bruno Windels
a18d2c0e78 update comment 2020-09-09 09:51:48 +02:00
Bruno Windels
212efe823c fix memberlist not containing all members
we were using the prev_batch of the last sync to pass to
/members, but this points at the timeline *before* the last
sync, so wouldn't contain all members. Use the sync token instead.
2020-09-09 09:50:03 +02:00
Bruno Windels
1f9d6191c2 this happens often when room is not tracked yet, so don't log 2020-09-08 18:32:51 +02:00
Bruno Windels
0ed2d14887 log OTK claim failures 2020-09-08 18:32:12 +02:00
Bruno Windels
da4b710e49 don't return promise here, not used 2020-09-08 18:30:45 +02:00
Bruno Windels
4ca5ff9b9f only load 50 olm sessions at once 2020-09-08 18:30:06 +02:00
Bruno Windels
10b5614fd9 m.dummy events don't have content 2020-09-08 18:27:49 +02:00
Bruno Windels
9a7abb1899 make logic more explicit 2020-09-08 18:27:35 +02:00
Bruno Windels
4a2faed198 don't assume roomKeys is an array 2020-09-08 18:27:12 +02:00
Bruno Windels
4c1aaaf416 show "setting up encryption keys..." step during login 2020-09-08 17:16:34 +02:00
Bruno Windels
36a8ec0110 dont attempt to decrypt redacted events
this will show them as undecryptable for now though
2020-09-08 17:16:01 +02:00
Bruno Windels
773cb3420f ignore duplicate curve25519 keys in /keys/query response 2020-09-08 17:14:23 +02:00
Bruno Windels
b653022a5a do store our own device, otherwise need special case verifying own msgs 2020-09-08 15:25:36 +02:00
Bruno Windels
65660a1e3b remove double jsdoc 2020-09-08 15:06:44 +02:00
Bruno Windels
650df6fea8 forgot await 2020-09-08 15:00:29 +02:00
Bruno Windels
5a8aac57ac there might not be a member yet 2020-09-08 15:00:20 +02:00
Bruno Windels
7bba83aa9e add outbound session store to sync txn 2020-09-08 15:00:00 +02:00
Bruno Windels
5e65eb10ef docs 2020-09-08 14:39:33 +02:00
Bruno Windels
1aa044667c try sending out pending room keys after first sync 2020-09-08 14:39:07 +02:00
Bruno Windels
31d4b6f75d send room keys to newly joined members in afterSyncCompleted stage 2020-09-08 14:38:27 +02:00
Bruno Windels
c158e3da77 support running afterSyncCompleted step on rooms as well
and make it in parallel with next sync request
2020-09-08 14:37:24 +02:00
Bruno Windels
52c3c7c03d support sending out room key in room encryption for newly joined members 2020-09-08 14:36:50 +02:00
Bruno Windels
7b35a3c46c memberChanges is a map, not array 2020-09-08 14:23:38 +02:00
Bruno Windels
bbaf3a5605 write needsRoomKey flag when new members joins to tracked e2ee room 2020-09-08 14:22:11 +02:00
Bruno Windels
d184be2d22 rotate outbound megolm session when somebody leaves the room 2020-09-08 11:09:09 +02:00
Bruno Windels
cd172f6df2 log new room keys for debugging 2020-09-08 10:55:38 +02:00
Bruno Windels
dea9fd90b4 name devices at login "Hydrogen"
so you can somewhat identify them in a device list
2020-09-08 10:53:15 +02:00
Bruno Windels
2c5c3ac8e2 formatting 2020-09-08 10:53:02 +02:00
Bruno Windels
2b59c8bb7c store ed25519 key from olm event rather than one in m.room_key payload
that's the docs/js-sdk do it, even though it probably
doesn't matter much as we verify the key anyway
2020-09-08 10:52:02 +02:00
Bruno Windels
40ed66dc5e document return type 2020-09-08 10:51:45 +02:00
Bruno Windels
4cf3b3569d storage method takes EventKey actually 2020-09-08 10:51:28 +02:00
Bruno Windels
3e100ff5ec ensure /keys/query devices have the keys we need 2020-09-08 10:51:01 +02:00
Bruno Windels
c32ac2c764 use decryption result to show message verification status in timeline 2020-09-08 10:50:39 +02:00
Bruno Windels
9137d5dcbb make decryption algorithms return DecryptionResult
which contains curve25519 key and claimed ed25519 key as well as payload
2020-09-08 10:48:11 +02:00
Bruno Windels
fbb534fa16 add todo 2020-09-04 16:46:13 +02:00
Bruno Windels
a817a9aaf9 return decrypted type and content 2020-09-04 16:41:03 +02:00
Bruno Windels
7bfcfc9eed correct store name 2020-09-04 16:40:51 +02:00
Bruno Windels
f31efe3e87 encode key with proper names 2020-09-04 16:40:39 +02:00
Bruno Windels
8e5d5db32b add event prop on entry 2020-09-04 16:40:15 +02:00
Bruno Windels
e06cb1eb5f fix param order 2020-09-04 16:29:20 +02:00
Bruno Windels
1af118a443 don't assume we have a timeline 2020-09-04 16:27:39 +02:00
Bruno Windels
9b771120e4 actually accept megolm decryption dep 2020-09-04 16:27:14 +02:00
Bruno Windels
dc0576f2db cleanup 2020-09-04 15:31:45 +02:00
Bruno Windels
baad4bd37f hookup megolm decryption in session 2020-09-04 15:31:27 +02:00
Bruno Windels
32a399afec implement storage changes for megolm decryption 2020-09-04 15:31:00 +02:00
Bruno Windels
5a731903da implement decrypting when loading timeline 2020-09-04 15:30:06 +02:00
Bruno Windels
62bcb27784 implement decryption retrying and decrypting of gap/load entries
turns out we do have to always check for replay attacks because
failing to decrypt doesn't prevent an item from being stored,
so if you reload and then load you might be decrypting it
for the first time
2020-09-04 15:29:58 +02:00
Bruno Windels
565fdb0f8c use proper error codes 2020-09-04 12:10:36 +02:00
Bruno Windels
28b46a1e5b add some comments 2020-09-04 12:10:28 +02:00
Bruno Windels
fe9245dd04 first draft of retrying decryption when receiving room keys 2020-09-04 12:10:12 +02:00
Bruno Windels
502ba5deea first draft of decryption in Room and RoomEncryption 2020-09-04 12:09:19 +02:00
Bruno Windels
fab58e8724 first draft of megolm decryption 2020-09-04 12:06:26 +02:00
Bruno Windels
80ede4f411 session will always be true here, we want to check sessionEntry 2020-09-04 12:05:58 +02:00
Bruno Windels
8ac80314c2 cleanup 2020-09-03 17:51:20 +02:00
Bruno Windels
c5efa582b1 check algorithm 2020-09-03 17:51:00 +02:00
Bruno Windels
c5c9505ce2 hookup megolm encryption in session 2020-09-03 17:50:28 +02:00
Bruno Windels
be4d887178 add outbound group session storage 2020-09-03 17:49:20 +02:00
Bruno Windels
6bc30bb824 implement megolm encryption 2020-09-03 17:48:59 +02:00
Bruno Windels
b1226d9220 add infrastructure to encrypt while sending 2020-09-03 15:36:48 +02:00
Bruno Windels
5cafef96f5 add RoomEncryption to room 2020-09-03 15:36:17 +02:00
Bruno Windels
2a40c89a24 implement hsapi /keys/claim endpoint 2020-09-03 15:33:23 +02:00
Bruno Windels
dde8c66196 implement store changes for olm encryption 2020-09-03 15:33:03 +02:00
Bruno Windels
792f0cf9a0 log our identity keys after load 2020-09-03 15:32:33 +02:00
Bruno Windels
1d4a5cd6d4 instantiate olm encryption in session 2020-09-03 15:32:08 +02:00
Bruno Windels
4401012312 no need to call decrypt when there are no events 2020-09-03 15:30:54 +02:00
Bruno Windels
408ff3322d content already exists here 2020-09-03 15:30:42 +02:00
Bruno Windels
620fc0d210 JSON stringify payload, olm_encrypt does not do objects 2020-09-03 15:30:18 +02:00
Bruno Windels
8676909a26 don't swallow errors! 2020-09-03 15:30:09 +02:00
Bruno Windels
a943467e71 await txns 2020-09-03 15:30:01 +02:00
Bruno Windels
71ba2dd714 name userId -> ownUserId as elsewhere 2020-09-03 15:29:35 +02:00
Bruno Windels
8d0d4570dd fix import path 2020-09-03 15:29:09 +02:00
Bruno Windels
b2fffee037 give better error when olm plaintext is not json 2020-09-03 15:28:49 +02:00
Bruno Windels
1f8005cdfd forgot to pass account 2020-09-03 15:28:38 +02:00
Bruno Windels
e22131bf57 don't store or return our own device 2020-09-03 15:28:20 +02:00
Bruno Windels
eda15e1141 forgot to remove this after extracting function 2020-09-03 15:27:40 +02:00
Bruno Windels
8d64fa54fe using wrong method here 2020-09-03 15:27:00 +02:00
Bruno Windels
af423b1c7f ensure second promise has run in test 2020-09-03 12:17:01 +02:00
Bruno Windels
4f4808b94c lock on senderKey while enc/decrypting olm sessions 2020-09-03 12:12:33 +02:00
Bruno Windels
4ecd853348 Merge branch 'bwindels/e2ee' into bwindels/olm-encrypt 2020-09-03 11:44:36 +02:00
Bruno Windels
279b55e8e6 fix test 2020-09-03 11:31:00 +02:00
Bruno Windels
1492b6b6f8 cleanup of olm encryption 2020-09-03 09:53:16 +02:00
Bruno Windels
e3daef5ca9 first draft of olm encryption 2020-09-02 17:58:01 +02:00
Bruno Windels
3cb46b38ff extract olm/Session into own file 2020-09-02 17:38:46 +02:00
Bruno Windels
f1b78a5778 extract groupBy function from olm decryption into util 2020-09-02 17:38:25 +02:00
Bruno Windels
0545c1f0c5 extract verifying a signed object from the device tracker 2020-09-02 17:37:48 +02:00
Bruno Windels
bd64aaf029 create outbound olm session from account
also better error handling
2020-09-02 17:37:13 +02:00
Bruno Windels
6c60381d54
Merge pull request #79 from vector-im/bwindels/hookuk-olm-to-device
Hookup to_device message handling and store megolm sessions when receiving m.room_key
2020-09-02 13:01:52 +00:00
Bruno Windels
1dbabf6240 cleanup ctor 2020-09-02 14:59:17 +02:00
Bruno Windels
b4d2be6b12 Merge branch 'master' into bwindels/e2ee 2020-09-02 14:55:38 +02:00
Bruno Windels
5a12904cc3 log errors during session load 2020-09-02 14:54:57 +02:00
Bruno Windels
1ab356cd9c wrong store name 2020-09-02 14:53:50 +02:00
Bruno Windels
95fcbe1598 typo 2020-09-02 14:52:33 +02:00
Bruno Windels
14cba7ec6e need to pass in olm 2020-09-02 14:52:19 +02:00
Bruno Windels
1f66868566 forgot to await 2020-09-02 14:52:02 +02:00
Bruno Windels
e09fbf566d TODO 2020-09-02 14:30:49 +02:00
Bruno Windels
7d517eb700 wire up the olm decryption,megolm room key handler and to_device handler 2020-09-02 14:30:18 +02:00
Bruno Windels
0219932f50 typo 2020-09-02 14:29:18 +02:00
Bruno Windels
6d3aa219fa implement storing room keys 2020-09-02 14:24:38 +02:00
Bruno Windels
f5c7b1b3ec remove obsolete comment 2020-09-02 13:35:25 +02:00
Bruno Windels
6aad751611 fix wrong idb method used in session store 2020-09-02 13:35:08 +02:00
Bruno Windels
44e9f91d4c to_device handler for encrypted messages
changes the api of the olm decryption to decrypt in batch
so we can isolate side-effects until we have a write-txn open
and we can parallelize the decryption of different sender keys.
2020-09-02 13:33:27 +02:00
Bruno Windels
6788a612fc implement olm session storage 2020-09-01 17:59:59 +02:00
Bruno Windels
5fee7fedc3 implement olm decryption algorithm 2020-09-01 17:59:39 +02:00
Bruno Windels
81a1573e3b make a shared olm util for the whole session 2020-09-01 17:57:59 +02:00
Bruno Windels
9870483121 remove room list sorting logging, works well now 2020-08-31 16:22:03 +02:00
Bruno Windels
cfa011a317 remove room list sorting logging, works well now 2020-08-31 16:21:12 +02:00
Bruno Windels
007333628a add todo for /sync <-> /members race 2020-08-31 16:10:18 +02:00
Bruno Windels
15ae35bbbc add future todo 2020-08-31 16:09:38 +02:00
Bruno Windels
6580219b09 add userIdentities to sync txn 2020-08-31 16:09:24 +02:00
Bruno Windels
4077f57afb fix typos in stores 2020-08-31 16:09:13 +02:00
Bruno Windels
aeb2f5402a process own membership changes before device lists 2020-08-31 16:08:47 +02:00
Bruno Windels
703c89e276 make membership available on member 2020-08-31 16:07:29 +02:00
Bruno Windels
374dce638d these are assumed to be getters 2020-08-31 16:07:18 +02:00
Bruno Windels
4fd3e2ab20 response is a method 2020-08-31 16:07:04 +02:00
Bruno Windels
d43cdfd889 don't crash when tracked user is not there 2020-08-31 16:06:40 +02:00
Bruno Windels
fef6586e5b actually pass the room id 2020-08-31 16:06:31 +02:00
Bruno Windels
78c3157a5f fix not taking into account Object.entries yields arrays for the pairs 2020-08-31 16:05:57 +02:00
Bruno Windels
561df45641 olm.Utility should be instanciated 2020-08-31 16:05:21 +02:00
Bruno Windels
0399562340 fix typo 2020-08-31 16:05:04 +02:00
Bruno Windels
8b7fdb2c61 create user & device identity stores 2020-08-31 14:38:03 +02:00
Bruno Windels
4ef5d4b3b8 implement hsapi /keys/query method 2020-08-31 14:24:09 +02:00
Bruno Windels
2e67b2b6b8 handle prev_content location ambiguity 2020-08-31 14:21:18 +02:00
Bruno Windels
09cb39b553 don't run afterSyncCompleted when there was an error 2020-08-31 14:13:36 +02:00
Bruno Windels
afb9ae4391 hook up device tracker with sync 2020-08-31 14:13:21 +02:00
Bruno Windels
8b358379e8 first draft of device tracker
mainly missing race protection with /sync and actually running the code
2020-08-31 14:12:12 +02:00
Bruno Windels
8482bc95ec pass memberchanges around instead of members
so we can easily tell how their membership changes, (e.g. join -> left)
which we'll need for device tracking.

Not adding this to RoomMember because RoomMember also needs to be
able to represent a member loaded from storage which doesn't contain
this error. A MemberChange exists only within a sync.
2020-08-31 09:50:57 +02:00
Bruno Windels
164384f312 forgot memberlist member 2020-08-31 08:54:27 +02:00
Bruno Windels
8da00f9a03 add isTrackingMembers flag to know if EncryptionUsers have been written
for this room
2020-08-31 08:53:47 +02:00
Bruno Windels
d813e6d932 store encryption event content rather than just flag in room summary 2020-08-31 08:53:10 +02:00
Bruno Windels
693682f360 move e2ee constants to common file 2020-08-28 14:35:47 +02:00
Bruno Windels
e751333bbd don't assume setting up a session went all the way through when stopping 2020-08-28 13:58:42 +02:00
Bruno Windels
a1ba5d7dba between syncs, generate more otks if needed, and upload them 2020-08-28 13:58:17 +02:00
Bruno Windels
681dfdf62b sync otk count to e2ee account 2020-08-28 13:56:44 +02:00
Bruno Windels
d64db185bd await callback in case we need to read, then write from it 2020-08-28 13:54:42 +02:00
Bruno Windels
3ab5a72221 give e2ee account values a prefix so we can prevent from clearing them 2020-08-28 13:52:27 +02:00
Bruno Windels
d24be7ee55 extract constants out 2020-08-28 13:51:58 +02:00
Bruno Windels
d7d1d8c45a Merge branch 'master' into bwindels/e2ee 2020-08-28 12:11:33 +02:00
Bruno Windels
6a9cbf7f33 store and sort by m.lowpriority tag 2020-08-27 20:52:51 +02:00
Bruno Windels
4c290f0394 upload identity and one-time keys 2020-08-27 19:13:24 +02:00
Bruno Windels
f98b3dd5fa create/load olm account before first sync 2020-08-27 19:13:09 +02:00
Bruno Windels
3b24ea34f3 Merge branch 'master' into bwindels/e2ee 2020-08-27 14:40:57 +02:00
Bruno Windels
09a018ade1 store sync token and filter id under the same key in session
as they are updated together
2020-08-27 14:36:50 +02:00
Bruno Windels
14b27f81fe store session values as individual values in store
so we don't have to write the whole object every time something changes
we'll use this to store the olm account
2020-08-27 14:28:40 +02:00
Bruno Windels
25f3dfbb75 fix failing test 2020-08-27 14:22:59 +02:00
Bruno Windels
87aabb3057 make crypto.getRandomValues available on IE11 without a prefix
olm needs this to work on IE11
2020-08-27 13:32:13 +02:00
Bruno Windels
fe0257bca1 load olm and pass it to session 2020-08-27 13:24:55 +02:00
Bruno Windels
05821b0fdf use same check for timestamp validity as timestamp can be undefined sometimes 2020-08-27 12:42:38 +02:00
Bruno Windels
1a6931129b log as info 2020-08-27 10:50:30 +02:00
Bruno Windels
9e891c3442 log actual timestamps as well
so we can see if they are anything but null or a number
2020-08-27 10:48:12 +02:00
Bruno Windels
4b682ad930 use the same check when seeing if either does not have a timestamp 2020-08-27 10:45:20 +02:00
Bruno Windels
41a7448c74 add logging for room list sorting 2020-08-27 10:40:49 +02:00
Bruno Windels
3e8e1bab67 remove logging 2020-08-27 10:38:22 +02:00
Bruno Windels
59443e6602 close the room tile view model as well when closing a room so it does not stay selected 2020-08-27 10:07:47 +02:00
Bruno Windels
1fe496eeea fix crash when state is not set (erroneously?) on gap response
this seems to happen when the only event in the room is
a m.room.create
2020-08-27 09:52:30 +02:00
Bruno Windels
34ec96c1b8 look for displayname/avatar in prev content as well
as synapse doesn't set them on content for leave memberships

this caused these props to be removed in storage
2020-08-27 09:51:44 +02:00
Bruno Windels
bd9cb5aae5 add RoomMember.name which falls back to userId
this will prevent the crash when left members
have their displayname removed (another issue)
2020-08-27 09:51:00 +02:00
Bruno Windels
b814335b99 this was missing! and causing an error with empty lists 2020-08-21 19:21:53 +02:00
Bruno Windels
5d21ae3fb7 fix error on conduit with state field that is missing when empty 2020-08-21 19:10:28 +02:00
Bruno Windels
a64d49a8a2 prevent an empty array being passed to Heroes 2020-08-21 19:03:21 +02:00
Bruno Windels
3d5b69f60a remove obsolete comment 2020-08-21 18:14:57 +02:00
Bruno Windels
b39c15d88d Room.name can actually return null now
so protect against this, and fall back to "Empty Room"
2020-08-21 18:14:32 +02:00
Bruno Windels
e4758d0651 we need to read from members now during load, for the heroes
and were actually not reading from room state
2020-08-21 18:14:07 +02:00
Bruno Windels
70e89a3dd6 expose name/avatar on member 2020-08-21 18:13:53 +02:00
Bruno Windels
2c14373b13 allow falling back to heroes name if we don't have one 2020-08-21 18:12:11 +02:00
Bruno Windels
acec7c8f33 remove alt_aliases, as we should not use it for the room name 2020-08-21 18:11:53 +02:00
Bruno Windels
d5d0154873 join and invited count were mixed up... oops 2020-08-21 18:11:26 +02:00
Bruno Windels
e5cdf061cb create, update and remove heroes as they come from sync 2020-08-21 18:11:07 +02:00
Bruno Windels
ddfdbf9777 implement heroes logic to calculate the room name 2020-08-21 17:59:24 +02:00
Bruno Windels
f551010968 render badge on room 2020-08-21 15:50:47 +02:00
Bruno Windels
831f4188f7 also expose highlight count 2020-08-21 15:50:32 +02:00
Bruno Windels
0d8ff34c55 don't fail to clear unread state when offline
also update UI before network request
2020-08-21 15:23:25 +02:00
Bruno Windels
2bfbb41ee7 send receipt to server when clearing unread state so notif count clears 2020-08-21 15:16:57 +02:00
Bruno Windels
9b16119e7b don't show time on continued messages 2020-08-21 14:37:57 +02:00
Bruno Windels
1a61752ace process state events separately from timeline events 2020-08-21 14:35:23 +02:00
Bruno Windels
5837aed346 remove obsolete comment 2020-08-21 14:27:16 +02:00
Bruno Windels
d3ea8c747a ignore own messages for unread state, and don't set unread while open 2020-08-21 14:26:51 +02:00
Bruno Windels
879c4ff951 default for all flags should be false 2020-08-21 14:11:53 +02:00
Bruno Windels
2742162c8e only clear unread if needed 2020-08-21 14:11:42 +02:00
Bruno Windels
00e20d2088 take null timestamps into account 2020-08-21 14:11:26 +02:00
Bruno Windels
4969009b2b default should be false, so comparison in the sorter is stable 2020-08-21 14:10:53 +02:00
Bruno Windels
5d1bc61f61 don't open a room when already open 2020-08-21 13:45:55 +02:00
Bruno Windels
4fb3010676 only set unread for incremental syncs 2020-08-21 13:45:38 +02:00
Bruno Windels
eae5bc4230 sort unread rooms first, then on last message timestamp, then alphabet. 2020-08-21 11:58:05 +02:00
Bruno Windels
dbf5e59d87 clear unread state 2s after opening the room 2020-08-21 11:57:49 +02:00
Bruno Windels
89392434ad render unread rooms as bold 2020-08-21 11:57:38 +02:00
Bruno Windels
7458465ef6 expose props on Room 2020-08-21 11:56:45 +02:00
Bruno Windels
739d74bf9c add method to clear unread state 2020-08-21 11:56:36 +02:00
Bruno Windels
4419b3366e store isUnread and lastMessageTimestamp 2020-08-21 11:55:47 +02:00
Bruno Windels
53720f56df some cleanup 2020-08-21 11:55:25 +02:00
Bruno Windels
f0d0dbb30f fix member event reporting 2020-08-20 17:43:51 +02:00
Bruno Windels
4fefe94302 render avatar in room header 2020-08-20 17:33:08 +02:00
Bruno Windels
00718c582a render avatar img in room list 2020-08-20 17:32:55 +02:00
Bruno Windels
cff39019cb extract renderAvatar
and use avatarTitle instead of sender for img title
2020-08-20 17:32:18 +02:00
Bruno Windels
7992607442 also store notif counts while at it 2020-08-20 17:07:02 +02:00
Bruno Windels
da947fa0d0 store room avatar url in summary 2020-08-20 17:02:51 +02:00
Bruno Windels
f5acee02be add comment why we do things in this order 2020-08-20 16:20:35 +02:00
Bruno Windels
59bdd2b015 render avatar on message tiles 2020-08-20 16:03:52 +02:00
Bruno Windels
225d46fad6 prepare styles to have other images (like avatar) in timeline 2020-08-20 16:03:26 +02:00
Bruno Windels
5d0ee21267 move mxcUrl functions to media repo class 2020-08-20 15:40:43 +02:00
Bruno Windels
843f4fa0f7 fix flood issue when back-filling isn't available 2020-08-20 15:28:22 +02:00
Bruno Windels
9e8d1ed290 better naming 2020-08-20 15:24:39 +02:00
Bruno Windels
036b305c96 use display name for room name change tiles 2020-08-20 15:24:16 +02:00
Bruno Windels
fafdf669db use prev_content from later events before state 2020-08-20 15:23:56 +02:00
Bruno Windels
830c300102 fix typo that broke the txn 2020-08-20 15:23:29 +02:00
Bruno Windels
514d1d9579 first draft of adding profile info while filling gap 2020-08-20 14:39:03 +02:00
Bruno Windels
229502ca43 remove logging 2020-08-20 10:48:59 +02:00
Bruno Windels
4b275529f7 fixup: writing member info during sync 2020-08-20 10:47:14 +02:00
Bruno Windels
d31a1b5fff render display name in timeline 2020-08-20 10:26:28 +02:00
Bruno Windels
41c00ce44a write display name and avatar on event during sync 2020-08-20 10:26:08 +02:00
Bruno Windels
ba3a4ab8b2 process state events in the timeline together with other timeline events
so member info gets overwritten after all the previous events
have already been written
2020-08-20 09:39:19 +02:00
Bruno Windels
fe7cc08287 add _selectWhile with proper "while" semantics
the existing _selectWhile method was more like _selectUntil,
which is what we want for _selectLimit but not for selectWhile(Reverse)

The changes we had made before also broke _selectLimit as it would
look at the results length before the value got added so you
always got 1 value more than requested, breaking sync.
2020-08-19 18:25:49 +02:00
Bruno Windels
79363ed1d7 use optional chaining 2020-08-19 18:25:38 +02:00
Bruno Windels
a90cebcabb document access levels 2020-08-19 16:58:28 +02:00
Bruno Windels
113c9e13b3 fix typo 2020-08-19 16:58:19 +02:00
Bruno Windels
faaabd1837 fix changed member scenario (no need to fetch from storage) and errors 2020-08-19 16:51:16 +02:00
Bruno Windels
4144b0b281 move memberlist load code out of Room 2020-08-19 16:44:09 +02:00
Bruno Windels
f7314990e4 add copyright header 2020-08-19 16:30:05 +02:00
Bruno Windels
463b9b745e base impl of member list 2020-08-19 16:29:54 +02:00
Bruno Windels
f84c9d51b4 store last pagination token 2020-08-19 16:29:08 +02:00
Bruno Windels
d08297d1e0 move RoomMembers to own dir 2020-08-19 16:28:09 +02:00
Bruno Windels
cc1f35a074 fix c/p error 2020-08-19 16:14:10 +02:00
Bruno Windels
6abdcd6b58 finish draft of member list loading method 2020-08-19 16:13:47 +02:00
Bruno Windels
9edd1bb0bb implement loading all members 2020-08-19 16:13:30 +02:00
Bruno Windels
bfc5eb3ee5 return changed members from sync writer
we will use it to handle race between /sync and /members
and to update the member list if it loaded
2020-08-19 16:12:49 +02:00
Bruno Windels
a5595570f9 members hs api call 2020-08-19 16:11:33 +02:00
Bruno Windels
2ad9b17ad7 no need to update members, as all the info is in the member event
as we won't store deviceTrackingStatus in the member
2020-08-19 16:10:07 +02:00
Bruno Windels
5ad7b74b2b keep string key since we have to support IE11 2020-08-19 16:08:42 +02:00
Bruno Windels
9ff4f3839c Merge branch 'master' into bwindels/memberlist 2020-08-19 12:13:38 +02:00
Bruno Windels
5898177f0b continuation can change, so bind to it 2020-08-19 12:07:10 +02:00
Bruno Windels
2526198251 replace usage of readPath with ?. 2020-08-19 11:36:43 +02:00
Bruno Windels
82762823e3 use normal sized avatar for room header 2020-08-19 11:02:47 +02:00
Bruno Windels
b2a01ba860 timeline spacing and font-size tweaking 2020-08-19 11:02:27 +02:00
Bruno Windels
fcf7052217 forgot to add header here before 2020-08-19 10:28:39 +02:00
Bruno Windels
614a00b741 don't continue messages from more than 5min ago 2020-08-19 10:28:09 +02:00
Bruno Windels
fad728069a don't show date & time on pending events 2020-08-19 10:27:27 +02:00
Bruno Windels
9d260c692b tweak font-sizes to what element web has 2020-08-19 10:26:52 +02:00
Bruno Windels
cc4c9d7893 Improve IDB error reporting
Hope this can help with
https://github.com/vector-im/hydrogen-web/issues/50
2020-08-18 17:27:40 +02:00
Bruno Windels
7291cac834 yield for browser to render before checking content height 2020-08-17 17:58:39 +02:00
Bruno Windels
4044ac56c5 actually check the promise 2020-08-17 17:58:30 +02:00
Bruno Windels
df8d884d91 append all list items at once for initial render 2020-08-17 17:58:04 +02:00
Bruno Windels
1c779cf95c render encrypted tiles as such so we don't fetch the whole history 2020-08-17 17:41:57 +02:00
Bruno Windels
0b1d9bf25e unused now 2020-08-17 17:41:49 +02:00
Bruno Windels
37597e2acb mark fragment in storage when start of timeline is reached
so we don't keep looping to fetch more messages
when scrolled all the way up
2020-08-17 17:41:10 +02:00
Bruno Windels
b6cbb03edd keep filling gaps while viewport not filled or new content < 100px 2020-08-17 16:34:58 +02:00
Bruno Windels
08de7c3569 loading screen while loading timeline
so we can set timelineVM directly to TimelineList
2020-08-17 16:34:25 +02:00
Bruno Windels
5ae4a1aae3 increase offset to start back-filling 2020-08-17 15:22:55 +02:00
Bruno Windels
2cfd38379f change looks of gap tile as it's auto-loaded now 2020-08-17 15:22:39 +02:00
Bruno Windels
56efd7eee0 don't load timeline past gaps 2020-08-17 15:22:25 +02:00
Bruno Windels
1e4f331989 fill top gap instead of loading more events from storage 2020-08-17 15:13:12 +02:00
Bruno Windels
cf0af775e3 make SimpleTile inherit from ViewModel
to use same update mechanism and have viewmodel infra available for tile
2020-08-17 15:11:39 +02:00
Bruno Windels
9745c58144 use readPath in ImageTile 2020-08-17 14:20:54 +02:00
Bruno Windels
0d3ab21044
Merge pull request #19 from vector-im/bwindels/small-bits
Various small bits
2020-08-17 12:15:28 +00:00
Bruno Windels
bbd5217fdf
Merge pull request #18 from vector-im/bwindels/ignore-empty-timelines
ignore rooms with empty timelines during initial sync
2020-08-17 12:14:46 +00:00
Bruno Windels
59588dc8b5 ignore rooms with empty timelines during initial sync 2020-08-17 14:13:23 +02:00
Bruno Windels
306309c4f8 wrap error and expose room id
this makes it easier to track down a (storage) error to a room
2020-08-17 10:48:00 +02:00
Bruno Windels
b5e7131050 only use 1 letter for avatar initial 2020-08-17 10:47:47 +02:00
Bruno Windels
404e6f8b87 make alphabetical sort order stable 2020-08-17 10:47:27 +02:00
Bruno Windels
70e6515b5c dont crash on m.image without url 2020-08-17 10:29:29 +02:00
Bruno Windels
bab1178790 style login page 2020-08-14 14:49:22 +02:00
Bruno Windels
c12ecd6cc1 style session picker 2020-08-14 14:49:15 +02:00
Bruno Windels
19e5d310e0 move avatar one level lower because we'll need it in the session picker 2020-08-14 14:33:13 +02:00
Bruno Windels
61801ee2cd add send button to composer 2020-08-13 18:10:45 +02:00
Bruno Windels
bf35cfc9fd make spinner look slightly better in IE 2020-08-13 17:59:49 +02:00
Bruno Windels
84d4584302 switch view gallery to element theme 2020-08-13 17:59:36 +02:00
Bruno Windels
d386343d5c adjust spacing, etc in timeline 2020-08-13 17:58:56 +02:00
Bruno Windels
44cc691c79 add avatar and sender user colors 2020-08-13 12:41:00 +02:00
Bruno Windels
d33e7b2a8b basic element theme colors 2020-08-13 12:40:30 +02:00
Bruno Windels
68574715dc style active room 2020-08-12 17:49:39 +02:00
Bruno Windels
5aacf85166 mark room tile as active when clicked 2020-08-12 17:40:41 +02:00
Bruno Windels
7f50e3d137 allow overriding the "emit change" mechanism in ViewModel
so view models that should send updates through their collection
can still use the same "emitChange" method on ViewModel
2020-08-12 17:39:11 +02:00
Bruno Windels
fbf72b8825 bind key for spontaneous updates in MappedMap
so we just have to pass in the params
2020-08-12 17:38:40 +02:00
Bruno Windels
cb10d40c3a Revert "use intrinsic aspect-ratio supported by chrome and firefox (although not safari)"
This reverts commit 0e5ad9805a.

It does not seem to work anymore in FF & chrome (the tile grows after the image is loaded)
and this won't work in IE11 anyways
2020-08-12 16:47:57 +02:00
Bruno Windels
d7657b519a add element theme (only some color changes + Inter font for now) 2020-08-12 16:41:03 +02:00
Bruno Windels
c6f38a4614 missing rename 2020-08-12 16:40:47 +02:00
Bruno Windels
e1a5c362dc add theme assets to offline definition 2020-08-12 16:40:28 +02:00
Bruno Windels
211abd9269 move emoji font collection to own font definition 2020-08-12 16:32:49 +02:00
Bruno Windels
695bcb2da3 move speech bubble alignment to theme 2020-08-12 16:31:58 +02:00
Bruno Windels
d7c1dc8a38 make fields disabled in loading state in gallery 2020-08-12 11:52:18 +02:00
Bruno Windels
be9e476874 extract theme from current styling 2020-08-12 11:52:03 +02:00
Bruno Windels
23d96b554a make theme directory
+ readme of ~what should go in a theme
2020-08-12 11:51:21 +02:00
Bruno Windels
5546460510 more brawl -> hydrogen renaming 2020-08-12 11:42:42 +02:00
Bruno Windels
eb92b9a086 Disable rubberband scrolling for IE11 2020-08-07 18:15:17 +01:00
Bruno Windels
e054dfb623 Merge branch 'master' into bwindels/legacy-css 2020-08-07 17:03:45 +01:00
Bruno Windels
fdc7f60f4d Build legacy bundle from same entry point as normal build
as the plan is to only use different CSS for IE11, but the same view code
2020-08-07 15:50:18 +01:00
Bruno Windels
a0c8d147c3 Use parentNode, parentElement is not supported on IE11 2020-08-07 15:07:44 +01:00
Bruno Windels
b1dd3933e2 WIP 2020-08-07 11:16:46 +01:00
Bruno Windels
a7acb0278d Element.remove polyfill 2020-08-07 11:14:07 +01:00
Bruno Windels
73c0a92377 Add .closest polyfill 2020-08-06 10:38:38 +01:00
Bruno Windels
1699600ffc fix test 2020-08-05 19:06:54 +02:00
Bruno Windels
3154b047a6 Merge branch 'bwindels/ie11' of github.com:vector-im/hydrogen-web into bwindels/ie11 2020-08-05 19:02:42 +02:00
Bruno Windels
d0ba894e2d apply new license headers in new code 2020-08-05 18:59:16 +02:00
Bruno Windels
45bd49861b Add build for IE 11 2020-08-05 18:56:06 +02:00
Bruno Windels
5ddc02ebc8 XHR request support for legacy browsers 2020-08-05 18:56:06 +02:00
Bruno Windels
e8e9740521 Move timeout to fetch, as XHR has native timeout support 2020-08-05 18:56:06 +02:00
Bruno Windels
5c50a48eb5 Add build for IE 11 2020-08-05 16:47:48 +00:00
Bruno Windels
00a85697ab add license header in all source files 2020-08-05 18:38:55 +02:00
Bruno Windels
69142909d9 XHR request support for legacy browsers 2020-08-05 15:37:37 +00:00
Bruno Windels
b26bc69042 Move timeout to fetch, as XHR has native timeout support 2020-08-05 15:36:44 +00:00
Bruno Windels
f5d3092031 WIP 2020-06-26 23:26:24 +02:00
Bruno Windels
e2c8b5e595 pass vm field to emitChange 2020-06-24 22:43:29 +02:00
Bruno Windels
9712b397ce add TODO comment 2020-05-26 10:31:23 +02:00
Bruno Windels
0e5ad9805a use intrinsic aspect-ratio supported by chrome and firefox (although not safari) 2020-05-13 10:20:28 +02:00
Bruno Windels
1ec2543467 fix image aspect ratio when scaling, again
also when image hasn't loaded yet to prevent scroll position jumps
2020-05-10 11:56:05 +02:00
Bruno Windels
174b0b7d52 disable pull to refresh on android 2020-05-10 10:00:13 +02:00
Bruno Windels
d79e34e450 fix image height scaling when full width doesn't fit on screen 2020-05-10 09:59:51 +02:00
Bruno Windels
df08ac216d prevent images from growing larger than container 2020-05-09 21:22:30 +02:00
Bruno Windels
d6882f075a don't let long status messages create overflow 2020-05-09 21:22:09 +02:00
Bruno Windels
2b17d0f691 spell height correctly 2020-05-09 21:21:55 +02:00
Bruno Windels
7f221cda65 show images intimeline 2020-05-09 20:02:08 +02:00
Bruno Windels
426dd726e7 default to true 2020-05-08 09:31:41 +02:00
Bruno Windels
5aee3df7fe fix SessionPickerItemView not updating 2020-05-08 09:12:33 +02:00
Bruno Windels
c55a197303 pass options to parent in LoginViewModel 2020-05-07 19:17:15 +02:00
Bruno Windels
f56b96b0ff add some ideas for relations 2020-05-07 19:14:53 +02:00
Bruno Windels
f9c0b4b53e add logging in case #45 would happen again 2020-05-07 19:14:30 +02:00
Bruno Windels
6b453c1ec4 we need to start when online actually, so invert 2020-05-07 18:46:45 +02:00
Bruno Windels
24cb9e3f5c only increment sent counter after successful send
otherwise the message doesn't get sent after coming back online
2020-05-07 18:46:16 +02:00
Bruno Windels
b65da9b8a9 display sync errors in status bar 2020-05-07 00:05:21 +02:00
Bruno Windels
52e2d3203e also make filter request interruptable 2020-05-07 00:04:41 +02:00
Bruno Windels
cc19063c79 set timeout on /sync request
as long running requests run higher risk of getting wedged
2020-05-06 23:50:12 +02:00
Bruno Windels
06fc3101e8 make login view enabled again if load view is not busy anymore 2020-05-06 23:44:52 +02:00
Bruno Windels
e17fc57d9c fix c/p error in disposables 2020-05-06 23:31:36 +02:00
Bruno Windels
abc99c2f0b fix svg error in spinner 2020-05-06 23:31:22 +02:00
Bruno Windels
2010704f14 fix only reconnecting the first time 2020-05-06 20:58:48 +02:00
Bruno Windels
f8f13f54be fix timeouts not working
and also not being handled in the Reconnector
2020-05-06 19:38:33 +02:00
Bruno Windels
54502c906f make disposeTracked suitable to reassign member 2020-05-05 23:19:02 +02:00
Bruno Windels
d0f09c5334 add status bar to view gallery for design 2020-05-05 23:18:44 +02:00
Bruno Windels
22821af346 css changes for status bar 2020-05-05 23:18:31 +02:00
Bruno Windels
0623c1c665 subViews is in TemplateView 2020-05-05 23:17:48 +02:00
Bruno Windels
c4b17e4be6 cleanup SessionViewModel, use ViewModel dispose infrastructure 2020-05-05 23:17:27 +02:00
Bruno Windels
3adc609e07 implement session status bar, with feedback on connection status 2020-05-05 23:16:51 +02:00
Bruno Windels
b0e59c30dd correctly pass options to ViewModel ctor 2020-05-05 23:14:58 +02:00
Bruno Windels
0eefc88fe3 waitForRetry doesn't reject when aborted 2020-05-05 23:13:41 +02:00
Bruno Windels
8e9c76c26b options is the 5th arg 2020-05-05 23:13:05 +02:00
Bruno Windels
4de29779c7 also abort timeout timer when response is rejected 2020-05-05 23:12:46 +02:00
Bruno Windels
4ffaa82435 add interval to clock 2020-05-05 23:12:14 +02:00
Bruno Windels
f90b435362 No need for Offline state if we're always in Waiting really 2020-05-04 23:42:34 +02:00
Bruno Windels
d70a57a7c9 remove support for observablevalues from templateview
it's not used, and so params haven't been standardized
trying to unify it, it messes up overriding update in RoomView
that extends it to set the timelineViewModel upon update.
2020-05-04 22:24:49 +02:00
Bruno Windels
d6645cbba9 null guard if list was never set 2020-05-04 22:24:10 +02:00
Bruno Windels
d7a8b1616a use t.view for room sub views
also move composer to own vm
2020-05-04 22:23:43 +02:00
Bruno Windels
28bed56b5a prevent closing more than once 2020-05-04 22:21:56 +02:00
Bruno Windels
1fa14a99e9 correctly wait for catchup sync 2020-05-04 19:38:23 +02:00
Bruno Windels
225fe873be show session load view when picking a session 2020-05-04 19:38:03 +02:00
Bruno Windels
3dde23fc4b dispose viewmodels from TemplateView 2020-05-04 19:24:27 +02:00
Bruno Windels
1ef564bdb0 cleanup 2020-05-04 19:24:20 +02:00
Bruno Windels
cc87e35f23 use ViewModel super class for all view models that need binding 2020-05-04 19:23:11 +02:00
Bruno Windels
d91ab5355c support svg namespace, fix spinner 2020-05-03 01:08:53 +02:00
Bruno Windels
d69987b426 make view gallery of views in different states 2020-04-30 18:28:21 +02:00
Bruno Windels
d3f7fb5089 prototype how i18n would look like 2020-04-30 18:27:59 +02:00
Bruno Windels
ceec8937ef apply template view api changes 2020-04-30 18:27:21 +02:00
Bruno Windels
cdf051f19b api changes 2020-04-29 19:16:52 +02:00
Bruno Windels
2c8c1eb767 move el with the publics 2020-04-29 19:12:48 +02:00
Bruno Windels
6a9315e70a do what we said in the comment 2020-04-29 19:12:12 +02:00
Bruno Windels
f4bb609ab6 notes 2020-04-29 10:10:33 +02:00
Bruno Windels
8bde627cdb more WIP 2020-04-29 10:10:20 +02:00
Bruno Windels
37c602f7d2 rename Template to TemplateView, as it is a view now. 2020-04-29 10:04:40 +02:00
Bruno Windels
2008cf74f1 Template becomes a view 2020-04-29 10:01:08 +02:00
Bruno Windels
657ec9aa62 move loading view state to own view model, so we're more free how to show it, and we can better reuse it 2020-04-23 09:06:04 +02:00
Bruno Windels
acc511e69f extract loading into a sub viewmodel
to show the loading in a separate view
2020-04-22 21:53:55 +02:00
Bruno Windels
b2954fd774 extract loadLabel logic to reuse in SessionPickerViewModel 2020-04-22 21:53:37 +02:00
Bruno Windels
0424ffe231 disable this for now as sync is not an EventEmitter anymore 2020-04-22 20:53:57 +02:00
Bruno Windels
e080bf28a7 expose root view model as global variable for console inspecting 2020-04-22 20:53:38 +02:00
Bruno Windels
e0799181d9 show error when mount() fails in SwitchView 2020-04-22 20:53:18 +02:00
Bruno Windels
449262e3c1 adjust ctor of SessionViewModel to accept sessionContainer now 2020-04-22 20:52:56 +02:00
Bruno Windels
e37101210c adjust LoginView(Model) further to showing loading status in place 2020-04-22 20:52:28 +02:00
Bruno Windels
96aa4f83b9 remove loading section in BrawlView 2020-04-22 20:49:49 +02:00
Bruno Windels
a19e541e1e less http specific 2020-04-22 20:49:21 +02:00
Bruno Windels
3359c6950f typo (this made the loadStatus undefined :/) 2020-04-22 20:49:03 +02:00
Bruno Windels
08b1c02af7 remove start value, can be hardcoded for now
also fix params in wrong order this way
2020-04-22 20:48:49 +02:00
Bruno Windels
f826258c75 null doesn't set queryParams to {} here, so revert explicitly 2020-04-22 20:47:53 +02:00
Bruno Windels
174fd3ea4a don't assume options 2020-04-22 20:47:46 +02:00
Bruno Windels
3f840d9d33 simple unit test for hsApi 2020-04-22 20:47:31 +02:00
Bruno Windels
277c8af628 Headers is a DOM specific class, use Map instead in HomeServerApi 2020-04-22 20:46:47 +02:00
Bruno Windels
c95981a35d remove unused code 2020-04-20 23:10:33 +02:00
Bruno Windels
b32f5711bf port BrawlViewModel to SessionContainer 2020-04-20 23:10:13 +02:00
Bruno Windels
f4983b5ba6 port SessionPickerViewModel to SessionContainer 2020-04-20 22:49:14 +02:00
Bruno Windels
a5965ad378 port LoginViewModel over to SessionContainer 2020-04-20 22:48:56 +02:00
Bruno Windels
bb7fca0592 support deleting the session from the container 2020-04-20 22:29:25 +02:00
Bruno Windels
de7dcf6a40 adjust main.js to use SessionContainer 2020-04-20 21:56:10 +02:00
Bruno Windels
a097929dbd rename lowercase filenames of classes to camelcase like class 2020-04-20 21:41:10 +02:00
Bruno Windels
31f3886eba move EventEmitter to utils 2020-04-20 21:35:53 +02:00
Bruno Windels
c379caf4c0 remove obsolete ifdef comments 2020-04-20 21:31:27 +02:00
Bruno Windels
0f29fdb24e some notes 2020-04-20 21:27:07 +02:00
Bruno Windels
001dbefbcf stop using default exports
because it becomes hard to remember where you used them and where not
2020-04-20 21:26:39 +02:00
Bruno Windels
0de5e899ea remove dead code 2020-04-20 21:25:17 +02:00
Bruno Windels
164d9d594f finish implemenation of SessionContainer 2020-04-20 19:48:21 +02:00
Bruno Windels
87b23d062c fix imports after reshuffleling 2020-04-20 19:47:45 +02:00
Bruno Windels
72b0eefccb replace isSyncing and emit with an Observable SyncStatus 2020-04-19 19:52:26 +02:00
Bruno Windels
80f7caadbe rename SessionsStore to SessionInfoStorage 2020-04-19 19:13:38 +02:00
Bruno Windels
8c56ac3e4f rename NetworkError to ConnectionError 2020-04-19 19:05:12 +02:00
Bruno Windels
8c5411cb7d moar WIP 2020-04-19 19:02:10 +02:00
Bruno Windels
1f15ca6498 more WIP 2020-04-18 19:16:16 +02:00
Bruno Windels
378b75c98a more WIP and breakage 2020-04-09 23:19:49 +02:00
Bruno Windels
ef267ca331 WIP2 2020-04-05 15:11:15 +02:00
Bruno Windels
c980f682c6 create DOMClock, abstraction of clock functionalities for DOM 2020-04-04 17:34:46 +02:00
Bruno Windels
bc69e49cfb WIP2 2020-03-31 10:13:25 +02:00
Bruno Windels
b6a5a02a33 WIP 2020-03-30 23:56:03 +02:00
Bruno Windels
e4563135bf look at prev_content when handling member events 2020-03-30 21:59:44 +02:00
Bruno Windels
c830f50325 catch errors while persisting a new message 2020-03-30 21:33:04 +02:00
Bruno Windels
234c260339 dont modify fragments in comparer until txn succeeds 2020-03-30 20:46:52 +02:00
Bruno Windels
73ea09f668 Handle sync ordering vs back-fill ordering (see synapse #7164) resulting in dupe events
Also extra robustness while filling a gap

ignore duplicate events from synapse instead considering them an
overlapping event with the adjacent fragment
2020-03-30 20:37:36 +02:00
Bruno Windels
dc65274b8b
Merge pull request #38 from bwindels/bwindels/remote-echo-for-gaps
Look for remote echos in gap responses as well as sync responses
2020-03-23 22:00:45 +00:00
Bruno Windels
8354c58c07 also look for remote echos based on event_id 2020-03-23 23:00:33 +01:00
Bruno Windels
eda4022692 show version before login and link to release 2020-03-23 22:46:31 +01:00
Bruno Windels
f02641c808 look for transaction_id in /messages response to delete pending events 2020-03-22 00:07:37 +01:00
Bruno Windels
6d68ec1bac move fillGap to room 2020-03-21 23:40:40 +01:00
Bruno Windels
f729108226 pass emit update fn through setter so we control when tile can update 2020-03-21 14:28:09 +01:00
Bruno Windels
a3714f49cc group public methods for a tile together 2020-03-21 14:26:56 +01:00
Bruno Windels
4176af56ea add failing test for problem 2020-03-21 14:22:16 +01:00
Bruno Windels
44760a9f82 Revert "add logging related to fragments"
This reverts commit 2f355cabef.
2020-03-21 10:47:35 +01:00
Bruno Windels
c4a5de20c0 update previous fragment in comparer when appending a new line fragment 2020-03-21 10:45:09 +01:00
Bruno Windels
2f355cabef add logging related to fragments
both when rebuilding and when sorting will be used
2020-03-20 20:23:07 +01:00
Bruno Windels
7e8cc7ae00 need to return the response here, not the request wrapper
we were reading back a remote id of undefined because of this,
so when for some reason we never receive the message down from sync,
the pending message keeps sending on every load. The server ignores
the send though, because the transaction id is already used, and it returns
the remote id of the event that was already sent the previous time, but
as we were not storing this remote id, we'd just try again and again.

not receiving it through sync could have happened when we were sending a bunch of events
and then receiving (this is how we encountered this bug, while trying to repro another) the
response, but not yet the sync for the message that got wedged. Then we typed stuff on another client
so we would get a limited response for that room, and boom, we would not get the remote echo of the
event that was already sent (but because of this bug we didn't store the remote id) but no echo received yet (when we remove the pending event),
so it gets wedged!
2020-03-17 00:11:50 +01:00
Bruno Windels
b69efc3425 fix errors when replaying 2020-03-17 00:07:54 +01:00
Bruno Windels
06e43d9ee3 fix all tests 2020-03-14 21:38:37 +01:00
Bruno Windels
56c87b3966 better naming 2020-03-14 20:49:15 +01:00
Bruno Windels
ac4a7f971b only apply sync changes in room summary once txn is committed
- also remove m.room.aliases support as they were wrongly implemented
   and now obsolete
 - don't count invited and joined members according to m.room.member
   events anymore as it was also wrongly implemented
   (only when prev!==new membership, but on initial sync we only get
   last member event, which might have been a nick change
2020-03-14 20:46:49 +01:00
Bruno Windels
fc741272ba only apply sync changes in session once txn is committed 2020-03-14 20:45:36 +01:00
Bruno Windels
224d56698a only set new live key when creating a fragment after the txn succeeds
when doing a limited sync, and a new fragment is created,
this._lastLiveKey is updated immediately. If the transaction
would then fail, the fragmentId in this._lastLiveKey was incremented
but the fragment wasn't written to the store, so if sync is resumed
and would subsequently succeed, fragmentIds would be assigned to events
that don't have a corresponding fragment in the timelineFragment store.

This would throw errors when trying to load the timeline,
breaking the whole app.

This changes SyncWriter to only update this._lastLiveKey in
the emit phase, when the transactions has been committed already.
2020-01-04 20:06:49 +01:00
Bruno Windels
bdc2c3d9ad cleanup: storage is not used in SyncWriter
as the transaction is now always passed as an argument, it never
creates one on its own.
2020-01-04 20:04:57 +01:00
Bruno Windels
29b531ae80 add (commented out) instructions how to use record/replay 2019-12-23 14:29:19 +01:00
Bruno Windels
1d9a5c490a add record/replay network layer 2019-12-23 14:28:42 +01:00
Bruno Windels
aa86748cdd pull fetch code out of homeserverapi 2019-12-23 14:28:27 +01:00
Bruno Windels
35c090dcb4 add proper import/export functionality 2019-12-14 18:29:35 +01:00
Bruno Windels
9c42710f9b add github link to home screens 2019-11-22 09:46:19 +01:00
Bruno Windels
8a55778c32 make sure aliases and heroes aren't empty when picking name 2019-11-22 09:29:18 +01:00
Bruno Windels
325077bcb0 try more domexception fixes 2019-11-21 18:28:18 +01:00
Bruno Windels
5ecf0a6717 fix error path on transaction abort error 2019-11-21 18:23:48 +01:00
Bruno Windels
d073f2825b show json in one line when clearing cache
also make naming consistent
2019-10-24 10:54:20 +02:00
Bruno Windels
d34a0c73b5 show json in list instead of alert so we can copy it 2019-10-13 08:29:23 +02:00
Bruno Windels
6f73d3983f add export/import of session data 2019-10-13 08:16:08 +02:00
Bruno Windels
e2b9e9dfdc add clear cache button for session 2019-10-13 07:48:49 +02:00
Bruno Windels
ad7a150aaa use aliases and heroes to fall back room name to 2019-10-13 07:48:33 +02:00
Bruno Windels
b16f21867c preserve value for storage errors on add and put 2019-10-12 22:19:16 +02:00
Bruno Windels
201b70ee4f fix failing to sync new rooms 2019-10-12 22:18:36 +02:00
Bruno Windels
ac53b9099b only log error in sync loop 2019-10-12 22:18:19 +02:00
Bruno Windels
3ba20dece1 fixup for delete button changes 2019-10-12 22:18:08 +02:00
Bruno Windels
2fa5fa7890 add delete button in session picker 2019-10-12 21:16:48 +02:00
Bruno Windels
d367037332 very basic support for lazy loading 2019-10-12 20:24:09 +02:00
Bruno Windels
076582edc3 css fixes
- don't pronounce avatar initials
 - prevent room header growing wider than screen
 - ensure messages wrap their text
2019-09-28 09:46:09 +02:00
Bruno Windels
e3719b2527 allow http (no sssl) homeservers 2019-09-28 09:44:39 +02:00
Bruno Windels
d8696bea1d add offline availability with service worker and appcache 2019-09-15 14:32:12 +02:00
Bruno Windels
8616d79aad make fetch errors more informative by including method and url 2019-09-15 14:31:50 +02:00
Bruno Windels
2b2b4232e9 moar send logging 2019-09-15 12:25:14 +02:00
Bruno Windels
6f527fd2e0 use openCursor where openKeyCursor is not supported 2019-09-15 12:24:46 +02:00
Bruno Windels
bbf6943455 use .get fallback where .getKey is not supported (Edge 15) 2019-09-15 12:24:27 +02:00
Bruno Windels
8e590fe53b rename and use StorageError to deal with idb DOMerror 2019-09-15 12:23:54 +02:00
Bruno Windels
f7f9129b8b show send errors in UI 2019-09-15 12:23:26 +02:00
Bruno Windels
5a90b4673b fix CORS requests failing 2019-09-15 12:23:08 +02:00
Bruno Windels
ed67689fdf some minimal styling for login and session picker 2019-09-08 10:40:05 +02:00
Bruno Windels
09b9eff7c1 fix remaining errors to make login work 2019-09-08 10:19:16 +02:00
Bruno Windels
a7194e0c7a implement missing views 2019-09-08 10:18:59 +02:00
Bruno Windels
1082233de4 start of session picker view 2019-07-31 00:07:12 +02:00
Bruno Windels
c27172fc4e adjust main to new view 2019-07-31 00:07:04 +02:00
Bruno Windels
49a577991b login and session picker view models, sessions store 2019-07-31 00:06:53 +02:00
Bruno Windels
378eea8ceb
Merge pull request #5 from bwindels/bwindels/sending
Send text messages
2019-07-29 18:28:29 +00:00
Bruno Windels
5b4d984645 height of app should always fill screen (not more or less) 2019-07-29 20:11:15 +02:00
Bruno Windels
de35df10d8 fix test + bug in ConcatList update 2019-07-29 20:03:22 +02:00
Bruno Windels
b723ab4cef add failing test for ConcatList update 2019-07-29 20:03:06 +02:00
Bruno Windels
3b7ab8f1c8 fix MappedList test after passing params as well to updater 2019-07-29 20:02:42 +02:00
Bruno Windels
45cd85ead1 fixup: check for event entry with eventType, event isn't exposed anymore 2019-07-29 19:58:35 +02:00
Bruno Windels
7218595c17 only send message if it's non-empty 2019-07-29 19:54:21 +02:00
Bruno Windels
8665bcb897 concat synced events in timeline with pending events for local echo 2019-07-29 19:53:58 +02:00
Bruno Windels
88a7d64091 fixup: delay not awaited, but not needed for now 2019-07-29 19:53:30 +02:00
Bruno Windels
e23abe209f fixup: leftover from removing access to events 2019-07-29 19:53:07 +02:00
Bruno Windels
bfdff353b0 pass params in map operator update fn 2019-07-29 19:52:28 +02:00
Bruno Windels
7a6e91de84 concat operator for observable lists 2019-07-29 19:18:11 +02:00
Bruno Windels
6f650d19b1 map operator for observable lists 2019-07-29 19:17:55 +02:00
Bruno Windels
0b5c2f9273 better naming 2019-07-29 10:59:49 +02:00
Bruno Windels
b53b60e142 use correct handler and make test succeed 2019-07-29 10:59:07 +02:00
Bruno Windels
0cf7cb36c4 add failing test for unsubscribe using wrong handler 2019-07-29 10:58:27 +02:00
Bruno Windels
9b94c4bb61 don't expose raw event object from entry, pending event doesn't have it
it only has content and *some* of the meta fields,
but we want to threat pendingevententry and evententry as one
and the same in the rest of the application, so don't give access
to entire event object.
2019-07-29 10:27:12 +02:00
Bruno Windels
56cee450d1 return syncing user id from PendingEventEntry.sender
add User class where we later can track display name, avatar, ...
2019-07-29 10:24:34 +02:00
Bruno Windels
b26f7df689 pending events are not certain to be sorted here 2019-07-29 09:54:34 +02:00
Bruno Windels
3ed72df620 put everything together to make it roughly work
no local echo yet, and send errors are being swallowed
2019-07-27 10:51:51 +02:00
Bruno Windels
851100b88a send unsent messages after first sync 2019-07-26 22:40:39 +02:00
Bruno Windels
707988f806 better handle remote echos and hookup in session and room 2019-07-26 22:33:33 +02:00