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
2526198251
replace usage of readPath with ?.
2020-08-19 11:36:43 +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
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
56efd7eee0
don't load timeline past gaps
2020-08-17 15:22:25 +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
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
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
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
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
9712b397ce
add TODO comment
2020-05-26 10:31:23 +02:00
Bruno Windels
7f221cda65
show images intimeline
2020-05-09 20:02:08 +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
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
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
3adc609e07
implement session status bar, with feedback on connection status
2020-05-05 23:16:51 +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
f90b435362
No need for Offline state if we're always in Waiting really
2020-05-04 23:42:34 +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
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
f4983b5ba6
port SessionPickerViewModel to SessionContainer
2020-04-20 22:49:14 +02:00
Bruno Windels
bb7fca0592
support deleting the session from the container
2020-04-20 22:29:25 +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
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
8354c58c07
also look for remote echos based on event_id
2020-03-23 23:00:33 +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
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
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
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
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
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