import React from 'react'; // tslint:disable-next-line: no-submodule-imports import useUpdate from 'react-use/lib/useUpdate'; import { Data, hasLinkPreviewPopupBeenDisplayed } from '../../../data/data'; import { SettingsKey } from '../../../data/settings-key'; import { ConversationTypeEnum } from '../../../models/conversationAttributes'; import { updateConfirmModal } from '../../../state/ducks/modalDialog'; import { SessionButtonColor } from '../../basic/SessionButton'; import { SpacerLG } from '../../basic/Text'; import { TypingBubble } from '../../conversation/TypingBubble'; import { SessionSettingButtonItem, SessionToggleWithDescription } from '../SessionSettingListItem'; import { displayPasswordModal } from '../SessionSettings'; async function toggleLinkPreviews() { const newValue = !window.getSettingValue(SettingsKey.settingsLinkPreview); await window.setSettingValue(SettingsKey.settingsLinkPreview, newValue); if (!newValue) { await Data.createOrUpdateItem({ id: hasLinkPreviewPopupBeenDisplayed, value: false }); } else { window.inboxStore?.dispatch( updateConfirmModal({ title: window.i18n('linkPreviewsTitle'), message: window.i18n('linkPreviewsConfirmMessage'), okTheme: SessionButtonColor.Danger, }) ); } } const TypingBubbleItem = () => { return ( <> ); }; export const SettingsCategoryPrivacy = (props: { hasPassword: boolean | null; onPasswordUpdated: (action: string) => void; }) => { const forceUpdate = useUpdate(); const isLinkPreviewsOn = Boolean(window.getSettingValue(SettingsKey.settingsLinkPreview)); if (props.hasPassword !== null) { return ( <> { const old = Boolean(window.getSettingValue(SettingsKey.settingsReadReceipt)); await window.setSettingValue(SettingsKey.settingsReadReceipt, !old); forceUpdate(); }} title={window.i18n('readReceiptSettingTitle')} description={window.i18n('readReceiptSettingDescription')} active={window.getSettingValue(SettingsKey.settingsReadReceipt)} /> { const old = Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator)); await window.setSettingValue(SettingsKey.settingsTypingIndicator, !old); forceUpdate(); }} title={window.i18n('typingIndicatorsSettingTitle')} description={window.i18n('typingIndicatorsSettingDescription')} active={Boolean(window.getSettingValue(SettingsKey.settingsTypingIndicator))} childrenDescription={} /> { await toggleLinkPreviews(); forceUpdate(); }} title={window.i18n('linkPreviewsTitle')} description={window.i18n('linkPreviewDescription')} active={isLinkPreviewsOn} /> {!props.hasPassword && ( { displayPasswordModal('set', props.onPasswordUpdated); }} buttonText={window.i18n('setPassword')} dataTestId={'set-password-button'} /> )} {props.hasPassword && ( { displayPasswordModal('change', props.onPasswordUpdated); }} buttonText={window.i18n('changePassword')} dataTestId="change-password-settings-button" /> )} {props.hasPassword && ( { displayPasswordModal('remove', props.onPasswordUpdated); }} buttonColor={SessionButtonColor.Danger} buttonText={window.i18n('removePassword')} dataTestId="remove-password-settings-button" /> )} ); } return null; };