import React from 'react' import {StyleSheet, View} from 'react-native' import {Trans} from '@lingui/macro' import {useFocusEffect} from '@react-navigation/native' import { EmbedPlayerSource, externalEmbedLabels, } from '#/lib/strings/embed-player' import {useSetMinimalShellMode} from '#/state/shell' import {useAnalytics} from 'lib/analytics/analytics' import {usePalette} from 'lib/hooks/usePalette' import {useWebMediaQueries} from 'lib/hooks/useWebMediaQueries' import {CommonNavigatorParams, NativeStackScreenProps} from 'lib/routes/types' import {s} from 'lib/styles' import { useExternalEmbedsPrefs, useSetExternalEmbedPref, } from 'state/preferences' import {ToggleButton} from 'view/com/util/forms/ToggleButton' import {SimpleViewHeader} from '../com/util/SimpleViewHeader' import {Text} from '../com/util/text/Text' import {ScrollView} from '../com/util/Views' type Props = NativeStackScreenProps< CommonNavigatorParams, 'PreferencesExternalEmbeds' > export function PreferencesExternalEmbeds({}: Props) { const pal = usePalette('default') const setMinimalShellMode = useSetMinimalShellMode() const {screen} = useAnalytics() const {isMobile} = useWebMediaQueries() useFocusEffect( React.useCallback(() => { screen('PreferencesExternalEmbeds') setMinimalShellMode(false) }, [screen, setMinimalShellMode]), ) return ( External Media Preferences Customize media from external sites. 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 {Object.entries(externalEmbedLabels) // TODO: Remove special case when we disable the old integration. .filter(([key]) => key !== 'tenor') .map(([key, label]) => ( ))} ) } function PrefSelector({ source, label, }: { source: EmbedPlayerSource label: string }) { const pal = usePalette('default') const setExternalEmbedPref = useSetExternalEmbedPref() const sources = useExternalEmbedsPrefs() return ( setExternalEmbedPref( source, sources?.[source] === 'show' ? 'hide' : 'show', ) } /> ) } const styles = StyleSheet.create({ heading: { paddingHorizontal: 18, paddingTop: 14, paddingBottom: 14, }, spacer: { height: 8, }, infoCard: { paddingHorizontal: 20, paddingVertical: 14, }, toggleCard: { paddingVertical: 8, paddingHorizontal: 6, marginBottom: 1, }, })