only show connection status dot in channel member list

This commit is contained in:
2026-04-21 02:51:57 -04:00
parent 5153fefa25
commit b3973d2a8c
+3 -25
View File
@@ -1,13 +1,11 @@
<script lang="ts">
import { getContext } from "svelte";
import type { ChatService } from "../services/chat.svelte";
import type { WebRTCService } from "../services/webrtc/webrtc.svelte";
import type * as Types from "../../module_bindings/types";
import Avatar from "./Avatar.svelte";
import Skeleton from "./Skeleton.svelte";
const chat = getContext<ChatService>("chat");
const webrtc = getContext<WebRTCService>("webrtc");
let onlineMembers = $derived(chat.activeServerMembers.filter((m) => m.online));
let offlineMembers = $derived(chat.activeServerMembers.filter((m) => !m.online));
@@ -16,21 +14,6 @@
return chat.userStates.find((s) => s.identity.isEqual(member.identity));
}
function getVoiceStatusColor(member: Types.ServerMember) {
const state = getVoiceState(member);
if (!state || state.channelId === undefined) return null;
if (chat.identity?.isEqual(member.identity)) return "green";
const status = webrtc.peerStatuses.get(member.identity.toHexString());
if (!status) return "yellow";
const [iceState] = status.toLowerCase().split("/");
if (iceState.includes("connected") || iceState.includes("completed")) return "green";
if (iceState.includes("connecting") || iceState.includes("checking") || iceState.includes("new")) return "yellow";
return "red";
}
function getStatus(member: Types.ServerMember) {
return chat.users.find(u => u.identity.isEqual(member.identity))?.status;
}
@@ -43,9 +26,9 @@
chat.userContextMenu = { x: e.clientX, y: e.clientY, user };
}
}
</script>
</script>
<div class="right-sidebar">
<div class="right-sidebar">
<div class="member-list">
{#if !chat.isReady}
@@ -67,7 +50,6 @@
</div>
{#each onlineMembers as member (member.identity.toHexString())}
{@const status = getStatus(member)}
{@const voiceColor = getVoiceStatusColor(member)}
{@const voiceState = getVoiceState(member)}
<!-- svelte-ignore a11y_no_static_element_interactions -->
<div class="member-item" oncontextmenu={(e) => handleContextMenu(e, member)}>
@@ -90,9 +72,6 @@
<div class="member-indicators">
{#if voiceState?.isSharingScreen}
<span class="sharing-badge">LIVE</span>
{#if voiceColor}
<div class="status-dot {voiceColor}" title="Voice connection status"></div>
{/if}
{/if}
</div>
</div>
@@ -126,8 +105,7 @@
{/each}
{/if}
{/if}
</div>
</div>
</div>
<style>
.avatar-container {