only show connection status dot in channel member list
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user