(frontend) add face landmarks flag

Introduced a new hook, useHasFaceLandmarksAccess
to manage access to face landmark features
based on posthog feature flags.
This commit is contained in:
Arnaud Robin
2025-03-30 12:25:31 +02:00
committed by aleb_the_flash
parent c428f39456
commit 0d6881382b
2 changed files with 50 additions and 37 deletions

View File

@@ -16,6 +16,7 @@ import { useTrackToggle } from '@livekit/components-react'
import { Loader } from '@/primitives/Loader'
import { useSyncAfterDelay } from '@/hooks/useSyncAfterDelay'
import { RiProhibited2Line, RiUserVoiceLine } from '@remixicon/react'
import { useHasFaceLandmarksAccess } from '../../hooks/useHasFaceLandmarksAccess'
enum BlurRadius {
NONE = 0,
@@ -50,6 +51,7 @@ export const EffectsConfiguration = ({
const { toggle, enabled } = useTrackToggle({ source: Track.Source.Camera })
const [processorPending, setProcessorPending] = useState(false)
const processorPendingReveal = useSyncAfterDelay(processorPending)
const hasFaceLandmarksAccess = useHasFaceLandmarksAccess()
useEffect(() => {
const videoElement = videoRef.current
@@ -302,49 +304,51 @@ export const EffectsConfiguration = ({
</ToggleButton>
</div>
</div>
<div
className={css({
marginTop: '1.5rem',
})}
>
<H
lvl={3}
style={{
marginBottom: '1rem',
}}
variant="bodyXsBold"
>
{t('faceLandmarks.title')}
</H>
{hasFaceLandmarksAccess && (
<div
className={css({
display: 'flex',
gap: '1.25rem',
marginTop: '1.5rem',
})}
>
<ToggleButton
variant="bigSquare"
aria-label={tooltipLabel(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})}
tooltip={tooltipLabel(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})}
isDisabled={processorPendingReveal}
onChange={async () =>
await toggleEffect(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})
}
isSelected={isSelected(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})}
data-attr="toggle-face-landmarks"
<H
lvl={3}
style={{
marginBottom: '1rem',
}}
variant="bodyXsBold"
>
<RiUserVoiceLine />
</ToggleButton>
{t('faceLandmarks.title')}
</H>
<div
className={css({
display: 'flex',
gap: '1.25rem',
})}
>
<ToggleButton
variant="bigSquare"
aria-label={tooltipLabel(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})}
tooltip={tooltipLabel(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})}
isDisabled={processorPendingReveal}
onChange={async () =>
await toggleEffect(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})
}
isSelected={isSelected(ProcessorType.FACE_LANDMARKS, {
blurRadius: 0,
})}
data-attr="toggle-face-landmarks"
>
<RiUserVoiceLine />
</ToggleButton>
</div>
</div>
</div>
)}
<div
className={css({
marginTop: '1.5rem',

View File

@@ -0,0 +1,9 @@
import { useFeatureFlagEnabled } from 'posthog-js/react'
import { useIsAnalyticsEnabled } from '@/features/analytics/hooks/useIsAnalyticsEnabled'
export const useHasFaceLandmarksAccess = () => {
const featureEnabled = useFeatureFlagEnabled('face-landmarks')
const isAnalyticsEnabled = useIsAnalyticsEnabled()
return featureEnabled || !isAnalyticsEnabled
}