zebra-spaces: drop tiles on peer-booted, same path as role-demote
Boot is the noisier sibling of demote — booted users can't publish
either, so their video tiles must come down immediately. The SFU-side
eviction (server /internal/block + OnConnectionStateChange) propagates
'ended' eventually but lags enough that a kicked speaker's camera tile
stayed visible after the boot. Authoritative removal by pubkey, same
pattern as the role-change-demote fix from 1e94fa6.
This commit is contained in:
parent
1e94fa6812
commit
e01755d9e8
1 changed files with 17 additions and 3 deletions
|
|
@ -3216,7 +3216,8 @@ async function handleSignal(raw){
|
|||
{
|
||||
const mm = members.get(m.uuid);
|
||||
const by = members.get(m.by);
|
||||
const victPub = pubHexFromMsg(m, 'pubkey');
|
||||
const victPub = pubHexFromMsg(m, 'pubkey')
|
||||
|| (mm && mm.pubkey ? pubHexFromMsg({pubkey:mm.pubkey},'pubkey') : '');
|
||||
const byPub = pubHexFromMsg(m, 'by_pubkey');
|
||||
logLine('', idTag(m.uuid, victPub)+' was removed by '+(by||byPub?idTag(m.by, byPub):'a mod'));
|
||||
if (m.uuid === myUUID){
|
||||
|
|
@ -3235,6 +3236,19 @@ async function handleSignal(raw){
|
|||
sfuUnsubscribe().catch(()=>{});
|
||||
dropMic();
|
||||
}
|
||||
/* Authoritative tile teardown by pubkey — booted users can't be
|
||||
* publishing anything anymore by definition. The SFU side eviction
|
||||
* (server posts /internal/block, then OnConnectionStateChange ->
|
||||
* removePublisher) will eventually fire 'ended' on subscribers,
|
||||
* but it can lag enough that the camera tile stays visible past
|
||||
* the kick. Drop it here so the boot is visually instant. */
|
||||
if (victPub){
|
||||
try {
|
||||
removeScreenTile(victPub);
|
||||
removeCameraTile(victPub);
|
||||
removeVideoTile('gameshare', victPub);
|
||||
} catch(_){}
|
||||
}
|
||||
members.delete(m.uuid); tearPeer(m.uuid); handraise.delete(m.uuid);
|
||||
renderRoom();
|
||||
}
|
||||
|
|
@ -3989,8 +4003,8 @@ logLine('', 'ready — pick a handle, type a rendezvous code, enter the space');
|
|||
|
||||
<footer style="margin:2.2rem auto 0;font-size:0.65rem;color:#999;line-height:1.7;word-break:break-all;font-family:monospace">
|
||||
<span id="pi-seal" style="color:#777;cursor:default;user-select:none" title="">page integrity</span> · built <span class="stamp-date">2026-06-03</span><br>
|
||||
md5 <span class="stamp-md5">f116a2320937cb5069015b6b85fdbab7</span><br>
|
||||
sha256 <span class="stamp-sha">d011be2528f20ab980d0e2d5364b270f69c57b9e09d4a95f88fb0dc1aec40a32</span><br>
|
||||
md5 <span class="stamp-md5">888efaf377b48e7e98a4f0abc676b5d6</span><br>
|
||||
sha256 <span class="stamp-sha">43bc28425870401088dfc50fe4541f4a9790a3e0d84b6b6aa09ec01eceb56cd3</span><br>
|
||||
<span style="color:#bbb">hashes are of this page with these two fields zeroed — to verify, blank them and re-hash</span><br>
|
||||
<span style="color:#bbb">one self-contained file — <strong>save a copy</strong> and verify against these hashes; point at your own servers with ?signal= and ?turncred=, or <a href="host-your-own.html" style="color:#999">host your own community</a></span>
|
||||
</footer>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue