Bruno Windels
cb0f803276
make this code a bit clearer
2023-01-06 12:05:34 +01:00
Bruno Windels
fcb4f2a62d
fix microphone audio being played back through local video preview
2023-01-06 12:05:11 +01:00
Bruno Windels
e26eb30b82
rename m.expires_ts to expires_ts to be compatible with MSC/Element
2023-01-05 15:47:01 +01:00
Robert Long
e9b8cfbd9e
Member should be expired if there's no expires at key
2022-10-18 13:42:01 -07:00
Bruno Windels
7d10bec4ac
remove comment not relevant anymore
2022-10-07 10:59:13 +02:00
Bruno Windels
4350537004
cleanup
2022-10-07 10:58:12 +02:00
Bruno Windels
7936863934
remove options on dispose in Member
...
to ensure callback can't be called anymore, as we don't check
that the member argument is the one currently in GroupCall._members.
2022-10-07 10:07:46 +02:00
Bruno Windels
400df6a4ff
ensure removing expired members from call is always logged
...
also return the log item from logger.log so we can ref it
2022-10-07 10:07:10 +02:00
Bruno Windels
a07be730f9
bring member validity period back to 1h
2022-10-06 16:10:50 +02:00
Bruno Windels
a8ac504efd
explain when joinedData is set
2022-10-06 16:10:36 +02:00
Bruno Windels
7ae9c3af0d
renew at least 10s before own membership expires
2022-10-06 16:00:38 +02:00
Bruno Windels
c87fd4dfed
cleanup
2022-10-06 15:59:45 +02:00
Bruno Windels
2ecfb8f139
unify dispose logic in Member
2022-10-06 15:22:15 +02:00
Bruno Windels
7eb8015ace
ensure member.dispose is called when removing member
...
so expiration timer is always stopped
2022-10-06 15:20:05 +02:00
Bruno Windels
56ecd39f26
don't assume joinedData is set here
...
although not entirely sure why it wouldn't be
2022-09-30 17:46:57 +02:00
Bruno Windels
1dddabc038
make removing own membership a bit clearer in the logs
2022-09-30 11:21:26 +02:00
Bruno Windels
b694d13348
can be readonly
2022-09-30 11:20:33 +02:00
Bruno Windels
f2564ed5cc
also emit updates for expired, connected members that we didn't kick
2022-09-30 11:20:00 +02:00
Bruno Windels
b5f686b10e
also allow clean up while still in Joining state, otherwise we get stuck
...
in joined state but without joinedData
2022-09-30 11:17:54 +02:00
Bruno Windels
282cba0ff1
call points for PeerCall.delay rely on AbortError actually being thrown
...
+ fix this in one call point where it wasn't the case
2022-09-30 11:17:07 +02:00
Bruno Windels
8f8a964b3b
allow to actually process the invite in the new peer call
2022-09-30 11:15:48 +02:00
Bruno Windels
05bb360c00
allow to dequeue signalling messages with repeated seq (from other call)
...
they will just be ignored by peerCall.getMessageAction() but we don't
want to block dequeuing on these
2022-09-30 11:12:04 +02:00
Bruno Windels
6f0e781b49
WIP
2022-09-26 19:15:13 +02:00
Bruno Windels
bf71a88799
Merge pull request #880 from vector-im/matthew/turn
...
Implement TURN
2022-09-26 14:19:00 +00:00
Bruno Windels
c660d82d6a
make internal method private
2022-09-26 16:00:25 +02:00
Bruno Windels
eccbab1491
cleanup polling and also hangup on all ongoing calls on dispose session
2022-09-26 15:57:20 +02:00
Bruno Windels
24ebf6c559
cleanup
2022-09-26 15:47:48 +02:00
Bruno Windels
ac319bdafd
we can assume setConfiguration is available
2022-09-26 15:45:41 +02:00
Bruno Windels
d36b9be24f
fix screwing up whitespace
2022-09-26 15:41:30 +02:00
Bruno Windels
05c2da95c4
fix typo
2022-09-26 15:38:04 +02:00
Bruno Windels
e6bf49a6cc
remove previous hardcoded turnServers setting
2022-09-26 15:27:41 +02:00
Bruno Windels
917ad52302
use observable for turnserver in peercall
...
and subscribe if changing config is supported
2022-09-26 15:25:53 +02:00
Bruno Windels
3a4c38086c
fetch turn server settings when joining a call, and pass down
2022-09-26 15:25:24 +02:00
Bruno Windels
035ead0d5b
implement polling of voip turnServer settings from HS in separate class
2022-09-26 15:24:41 +02:00
Matthew Hodgson
6570ec46f4
setTurnServers doesn't need to be async
2022-09-26 09:02:22 +01:00
Matthew Hodgson
3d7852a469
set array of turnservers
2022-09-26 01:07:24 +01:00
Matthew Hodgson
af2098327b
first cut at implementing TURN
2022-09-26 00:47:12 +01:00
Matthew Hodgson
31e67142bd
typo
2022-09-25 22:11:35 +01:00
Matthew Hodgson
8aa62b2573
don't ignore end-of-ICE candidates
2022-09-25 21:39:38 +01:00
Bruno Windels
bb2e63b05b
don't queue messages for different callIds so last seq doesn't corrupt
...
this includes handling invite glares differently
2022-09-20 17:27:39 +02:00
Bruno Windels
3346f68d25
WIP
2022-07-12 11:59:52 +02:00
Bruno Windels
e9649ec7c2
different streams never have the same id, even for same devices
2022-07-07 15:47:09 +02:00
Bruno Windels
2f08cd8984
clone localMedia in Member when connection, like we do for setMedia
2022-07-07 15:36:49 +02:00
Bruno Windels
f187a51c97
stop replaced track in PeerCall
2022-07-07 15:36:30 +02:00
Bruno Windels
206ac6e2dd
WIP: prevent stream id from changing when upgrading call
2022-07-05 18:22:36 +02:00
Bruno Windels
8a90c48d1e
debugging unmuting not working
2022-06-25 05:56:43 +02:00
Bruno Windels
41288683fc
allow unmuting when we don't yet have a mic/cam track
2022-06-10 17:10:23 +02:00
Bruno Windels
bfdea03bbd
start with seq 1, like Element Call does
2022-06-03 15:50:02 +02:00
Bruno Windels
ed5fdb8154
don't withhold member event for call just because we don't have profile
2022-06-03 12:43:51 +02:00
Bruno Windels
90b6a5ccb6
update call member info with room member info
2022-06-02 15:56:23 +02:00
Bruno Windels
a530944f7d
add logging to seq queueing
2022-06-02 11:11:32 +02:00
Bruno Windels
513c059459
buffer messages as long as seq numbers in between haven't been received
2022-06-02 10:59:14 +02:00
Bruno Windels
a139571e20
move setting seq on outbound messages to member, is specific to_device
2022-06-02 10:59:03 +02:00
Bruno Windels
a014740e72
don't throw when we can't encrypt, just fall back to sending unencrypted
2022-06-01 15:55:43 +02:00
Bruno Windels
3edfbd2cf6
await hangup here, so log doesn't terminate early
2022-06-01 15:30:25 +02:00
Bruno Windels
50ae51e893
encrypt call signalling message only for given device
2022-06-01 15:28:49 +02:00
Bruno Windels
a50ea7e77b
add support for observing room state for single room + initial state
2022-05-12 17:27:03 +02:00
Bruno Windels
d727dfd843
add session.observeRoomState to observe state changes in all rooms
...
and use it for calls
this won't be called for state already received and stored in storage,
that you need to still do yourself
2022-05-12 11:58:28 +02:00
Bruno Windels
a923e7e5e1
don't pass errors as log levels
2022-05-11 13:15:03 +02:00
Bruno Windels
5ee4e39bc7
add return type
2022-05-11 10:06:15 +02:00
Robert Long
21065791a8
Fix removing members in handleCallMemberEvent
2022-05-10 16:58:03 -07:00
Bruno Windels
cd8fac2872
update TODO
2022-05-09 14:31:19 +02:00
Bruno Windels
d69b1dc3e2
expose log items for exposing debugging info in sdk users
2022-05-06 17:06:56 +02:00
Bruno Windels
fc08fc3744
always log device removal in same way and prevent call id overwritten
2022-05-06 16:59:26 +02:00
Bruno Windels
1a08616df1
logging improvements
2022-05-04 18:44:11 +02:00
Bruno Windels
1a0b11ff7e
also log payload when receiving to_device call message, help debug with thirdroom
2022-04-29 14:59:19 +01:00
Bruno Windels
c1c08e9eb0
more logging of callId and sessionIds
2022-04-29 14:58:44 +01:00
Bruno Windels
9938071e1c
more sessionId logging
2022-04-29 14:34:03 +01:00
Bruno Windels
bb92d2e30d
log session id when adding a member entry
2022-04-29 14:19:10 +01:00
Bruno Windels
8e2e92cd2c
this timer should not fire after disposing
2022-04-29 10:11:12 +01:00
Bruno Windels
e1974711f3
dont close this when disconnecting as long as we haven't restructured the log items in general, we can always connect again fr now and assume to reuse the same log item
2022-04-28 16:56:32 +01:00
Bruno Windels
d346f4a3fb
add & remove rather than update when session id changed
2022-04-28 16:52:42 +01:00
Bruno Windels
3d83fda69f
some more cleanup
2022-04-28 16:52:17 +01:00
Bruno Windels
2d9b69751f
some logging cleanup
2022-04-28 16:52:00 +01:00
Bruno Windels
0be75d9c59
update the TODO
2022-04-28 12:45:15 +01:00
Bruno Windels
a91bcf5d22
ensure there is no race between reconnecting & updating the session id
...
it's probably fine as connect has to wait to receive the
negotiationneeded event before it can send out an invite, but just to
be sure update the session id beforehand
2022-04-28 12:44:13 +01:00
Bruno Windels
b03b296391
comments, todo housekeeping
2022-04-27 19:41:25 +02:00
Bruno Windels
4f2999f8d8
reconnect when detecting session id change, so we send invite if needed
2022-04-27 19:41:02 +02:00
Bruno Windels
bffce7fafe
more logging
2022-04-27 19:40:49 +02:00
Bruno Windels
be04eeded0
always reevaluate remote media when receiving a new remote track
...
not just when we don't know the stream already
this caused the video track to not appear when the other party sends the
invite.
Also added more logging
2022-04-27 17:33:27 +02:00
Bruno Windels
230ccd95ab
reset retryCount when disconnecting
2022-04-27 17:33:12 +02:00
Bruno Windels
6b22078140
prevent localMedia being disposed when disconnecting on session change
...
this would cause us to not send any media anymore and a black screen
on the other side that just refreshed
2022-04-27 11:34:05 +01:00
Bruno Windels
beeb191588
reset member when seeing a new session id
...
also buffer to_device messages for members we don't have a member event
for already.
2022-04-26 21:11:41 +02:00
Bruno Windels
eea3830146
emit change when muting so our own video feed gets hidden in the view
2022-04-26 16:18:49 +02:00
Bruno Windels
9ab75e8ed4
fix c/p error mixing up audio and video muting
2022-04-26 15:48:03 +02:00
Bruno Windels
b46ec8bac4
Merge branch 'bwindels/calls-wip' into bwindels/calls
2022-04-26 14:29:04 +02:00
Bruno Windels
f61064c462
nicer UI for calls, show avatar when muted, muted status
2022-04-26 14:27:28 +02:00
Bruno Windels
3198ca6a92
expose remote mute settings
2022-04-26 14:20:44 +02:00
Bruno Windels
cdb2a79b62
add muting again, separate from changing media
2022-04-22 14:48:14 +01:00
Bruno Windels
ac60d1b61d
remove thick abstraction layer
...
instead just copy the DOM typing and make it part of the platform layer
2022-04-21 17:40:45 +02:00
Bruno Windels
10a6269147
always send new metadata after calling setMedia
2022-04-21 10:15:57 +02:00
Bruno Windels
55c6dcf613
don't re-clone streams when not needed
2022-04-21 10:11:24 +02:00
Bruno Windels
99769eb84e
implement basic renegotiation
2022-04-21 10:10:49 +02:00
Bruno Windels
82ffb557e5
update TODO
2022-04-21 10:09:31 +02:00
Bruno Windels
d6b239e58f
ensure we always set the correct session id when joining
2022-04-20 16:42:20 +02:00
Bruno Windels
c42292f1b0
more WIP
2022-04-20 10:57:07 +02:00
Bruno Windels
382fba88bd
WIP for muting
2022-04-14 23:19:44 +02:00
Bruno Windels
ea1c3a2b86
Merge remote-tracking branch 'origin/bwindels/calls' into bwindels/calls
2022-04-14 13:47:23 +02:00
Bruno Windels
021b8cdcdc
send hangup when leaving the call
...
but not when somebody else leaves the call through a member event
2022-04-14 13:45:21 +02:00
Bruno Windels
ff856d843c
ensure all member streams are cloned
...
so we can stop them without affecting the main one
also, only stop them when disconnecting from the member, rather then
when the peer call ends, as we might want to retry connecting to
the peer with the same stream.
2022-04-14 13:44:11 +02:00