diff --git a/src/lib/components/EventMenu.svelte b/src/lib/components/EventMenu.svelte index ae1a68e..4a8e265 100644 --- a/src/lib/components/EventMenu.svelte +++ b/src/lib/components/EventMenu.svelte @@ -14,7 +14,9 @@ isHighlighted, togglePin, toggleBookmark, - toggleHighlight + toggleHighlight, + toggleMute, + isMuted } from '../services/user-actions.js'; import { eventMenuStore } from '../services/event-menu-store.js'; import { sessionManager } from '../services/auth/session-manager.js'; @@ -68,10 +70,12 @@ let currentUserPubkey = $derived(sessionManager.getCurrentPubkey()); let isOwnEvent = $derived(isLoggedIn && currentUserPubkey === event.pubkey); - // Track pin/bookmark/highlight state + // Track pin/bookmark/highlight/mute state let pinnedState = $state(false); let bookmarkedState = $state(false); let highlightedState = $state(false); + let mutedState = $state(false); + let muting = $state(false); let stateUpdateTrigger = $state(0); // Trigger to force state updates // Update state when event changes or when trigger changes @@ -87,6 +91,12 @@ isBookmarked(event.id).then(bookmarked => { bookmarkedState = bookmarked; }); + // Update mute state + if (isLoggedIn && !isOwnEvent) { + isMuted(event.pubkey).then(muted => { + mutedState = muted; + }); + } }); function toggleMenu() { @@ -399,6 +409,22 @@ ttsModalOpen = true; closeMenu(); } + + async function handleMute() { + if (muting || isOwnEvent) return; + muting = true; + try { + await toggleMute(event.pubkey); + // Update state + const newMuted = await isMuted(event.pubkey); + mutedState = newMuted; + } catch (error) { + console.error('Failed to toggle mute:', error); + } finally { + muting = false; + closeMenu(); + } + }