import {Fragment} from 'react'
import {View} from 'react-native'
import {Trans} from '@lingui/react/macro'
import {
type CommonNavigatorParams,
type NativeStackScreenProps,
} from '#/lib/routes/types'
import {
type EmbedPlayerSource,
exemptExternalEmbedSources,
externalEmbedLabels,
} from '#/lib/strings/embed-player'
import {
useExternalEmbedsPrefs,
useSetExternalEmbedPref,
} from '#/state/preferences'
import {atoms as a, native} from '#/alf'
import {Admonition} from '#/components/Admonition'
import * as Toggle from '#/components/forms/Toggle'
import * as Layout from '#/components/Layout'
import * as SettingsList from './components/SettingsList'
type Props = NativeStackScreenProps<
CommonNavigatorParams,
'PreferencesExternalEmbeds'
>
export function ExternalMediaPreferencesScreen({}: Props) {
return (
External Media Preferences
External media may allow websites to collect information about
you and your device. No information is sent or requested until
you press the "play" button.
Enable media players for
{native()}
{Object.entries(externalEmbedLabels)
.filter(
([key]) =>
!exemptExternalEmbedSources.has(key as EmbedPlayerSource),
)
.map(([key, label]) => (
{native()}
))}
)
}
function PrefSelector({
source,
label,
}: {
source: EmbedPlayerSource
label: string
}) {
const setExternalEmbedPref = useSetExternalEmbedPref()
const sources = useExternalEmbedsPrefs()
return (
setExternalEmbedPref(
source,
sources?.[source] === 'show' ? 'hide' : 'show',
)
}
style={[
a.flex_1,
a.py_md,
native([a.justify_between, a.flex_row_reverse]),
]}>
{label}
)
}