Compare commits

...

1 Commits

Author SHA1 Message Date
lebaudantoine 39d3f6dd8e ♻️(frontend) wrap MuteEveryoneButton with AdminOrOwnerOnly
Avoids mounting the button's hooks and rendering its logic for users who
are not admin or owner, which previously happened on every re-render
of the parent.
2026-07-07 18:15:29 +02:00
2 changed files with 14 additions and 6 deletions
+1
View File
@@ -22,6 +22,7 @@ and this project adheres to
- ✨(meet) use compatible with summary v2 #1362
- ♻️(backend) refactor analytics backend from Protocol to abstract class
- 🔥(summary) remove call to summary enabled feature flag
- ♻️(frontend) wrap MuteEveryoneButton with AdminOrOwnerOnly
### Fixed
@@ -1,23 +1,20 @@
import { Button } from '@/primitives'
import { useTranslation } from 'react-i18next'
import type { Participant } from 'livekit-client'
import { useIsAdminOrOwner } from '@/features/rooms/livekit/hooks/useIsAdminOrOwner'
import { useMuteParticipants } from '@/features/rooms/api/muteParticipants'
import { RiMicOffLine } from '@remixicon/react'
import { css } from '@/styled-system/css'
import { AdminOrOwnerOnly } from '@/features/rooms/components/AdminOrOwnerOnly'
type MuteEveryoneButtonProps = {
participants: Array<Participant>
}
export const MuteEveryoneButton = ({
participants,
}: MuteEveryoneButtonProps) => {
const MuteEveryoneButtonInner = ({ participants }: MuteEveryoneButtonProps) => {
const { muteParticipants } = useMuteParticipants()
const { t } = useTranslation('rooms')
const isAdminOrOwner = useIsAdminOrOwner()
if (!isAdminOrOwner || !participants.length) return null
if (!participants.length) return null
return (
<Button
@@ -36,3 +33,13 @@ export const MuteEveryoneButton = ({
</Button>
)
}
export const MuteEveryoneButton = ({
participants,
}: MuteEveryoneButtonProps) => {
return (
<AdminOrOwnerOnly>
<MuteEveryoneButtonInner participants={participants} />
</AdminOrOwnerOnly>
)
}