import { useDispatch, useSelector } from 'react-redux'; import useUpdate from 'react-use/lib/useUpdate'; import { SettingsKey } from '../../../data/settings-key'; import { ToastUtils } from '../../../session/utils'; import { toggleAudioAutoplay } from '../../../state/ducks/userConfig'; import { useHasEnterSendEnabled } from '../../../state/selectors/settings'; import { getAudioAutoplay } from '../../../state/selectors/userConfig'; import { SessionRadioGroup, SessionRadioItems } from '../../basic/SessionRadioGroup'; import { BlockedContactsList } from '../BlockedList'; import { SessionSettingsItemWrapper, SessionToggleWithDescription, } from '../SessionSettingListItem'; async function toggleCommunitiesPruning() { try { const newValue = !(await window.getOpengroupPruning()); // make sure to write it here too, as this is the value used on the UI to mark the toggle as true/false await window.setSettingValue(SettingsKey.settingsOpengroupPruning, newValue); await window.setOpengroupPruning(newValue); ToastUtils.pushRestartNeeded(); } catch (e) { window.log.warn('toggleCommunitiesPruning change error:', e); } } const CommunitiesPruningSetting = () => { const forceUpdate = useUpdate(); const isOpengroupPruningEnabled = Boolean( window.getSettingValue(SettingsKey.settingsOpengroupPruning) ); return ( { await toggleCommunitiesPruning(); forceUpdate(); }} title={window.i18n('conversationsMessageTrimmingTrimCommunities')} description={window.i18n('conversationsMessageTrimmingTrimCommunitiesDescription')} active={isOpengroupPruningEnabled} /> ); }; const SpellCheckSetting = () => { const forceUpdate = useUpdate(); const isSpellCheckActive = window.getSettingValue(SettingsKey.settingsSpellCheck) === undefined ? true : window.getSettingValue(SettingsKey.settingsSpellCheck); return ( { window.toggleSpellCheck(); forceUpdate(); }} title={window.i18n('conversationsSpellCheck')} description={window.i18n('conversationsSpellCheckDescription')} active={isSpellCheckActive} /> ); }; const AudioMessageAutoPlaySetting = () => { const audioAutoPlay = useSelector(getAudioAutoplay); const dispatch = useDispatch(); const forceUpdate = useUpdate(); return ( { dispatch(toggleAudioAutoplay()); forceUpdate(); }} title={window.i18n('conversationsAutoplayAudioMessage')} description={window.i18n('conversationsAutoplayAudioMessageDescription')} active={audioAutoPlay} /> ); }; const EnterKeyFunctionSetting = () => { const initialSetting = useHasEnterSendEnabled(); const selectedWithSettingTrue = 'enterForNewLine'; const items: SessionRadioItems = [ { label: window.i18n('conversationsEnterSends'), value: 'enterForSend', inputDataTestId: 'input-enterForSend', labelDataTestId: 'label-enterForSend', }, { label: window.i18n('conversationsEnterNewLine'), value: selectedWithSettingTrue, inputDataTestId: `input-${selectedWithSettingTrue}`, labelDataTestId: `label-${selectedWithSettingTrue}`, }, ]; return ( { void window.setSettingValue( SettingsKey.hasShiftSendEnabled, selectedRadioValue === selectedWithSettingTrue ); }} /> ); }; export const CategoryConversations = () => { return ( <> ); };