You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			95 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			95 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			TypeScript
		
	
| import React from 'react';
 | |
| import { useDispatch, useSelector } from 'react-redux';
 | |
| // tslint:disable-next-line: no-submodule-imports
 | |
| 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 { getAudioAutoplay } from '../../../state/selectors/userConfig';
 | |
| 
 | |
| import { BlockedContactsList } from '../BlockedList';
 | |
| // tslint:disable: use-simple-attributes
 | |
| 
 | |
| import { 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 (
 | |
|     <SessionToggleWithDescription
 | |
|       onClickToggle={async () => {
 | |
|         await toggleCommunitiesPruning();
 | |
|         forceUpdate();
 | |
|       }}
 | |
|       title={window.i18n('pruneSettingTitle')}
 | |
|       description={window.i18n('pruneSettingDescription')}
 | |
|       active={isOpengroupPruningEnabled}
 | |
|     />
 | |
|   );
 | |
| };
 | |
| 
 | |
| const SpellCheckSetting = () => {
 | |
|   const forceUpdate = useUpdate();
 | |
| 
 | |
|   const isSpellCheckActive =
 | |
|     window.getSettingValue(SettingsKey.settingsSpellCheck) === undefined
 | |
|       ? true
 | |
|       : window.getSettingValue(SettingsKey.settingsSpellCheck);
 | |
|   return (
 | |
|     <SessionToggleWithDescription
 | |
|       onClickToggle={() => {
 | |
|         window.toggleSpellCheck();
 | |
|         forceUpdate();
 | |
|       }}
 | |
|       title={window.i18n('spellCheckTitle')}
 | |
|       description={window.i18n('spellCheckDescription')}
 | |
|       active={isSpellCheckActive}
 | |
|     />
 | |
|   );
 | |
| };
 | |
| 
 | |
| const AudioMessageAutoPlaySetting = () => {
 | |
|   const audioAutoPlay = useSelector(getAudioAutoplay);
 | |
|   const dispatch = useDispatch();
 | |
|   const forceUpdate = useUpdate();
 | |
| 
 | |
|   return (
 | |
|     <SessionToggleWithDescription
 | |
|       onClickToggle={() => {
 | |
|         dispatch(toggleAudioAutoplay());
 | |
|         forceUpdate();
 | |
|       }}
 | |
|       title={window.i18n('audioMessageAutoplayTitle')}
 | |
|       description={window.i18n('audioMessageAutoplayDescription')}
 | |
|       active={audioAutoPlay}
 | |
|     />
 | |
|   );
 | |
| };
 | |
| 
 | |
| export const CategoryConversations = () => {
 | |
|   return (
 | |
|     <>
 | |
|       <CommunitiesPruningSetting />
 | |
|       <SpellCheckSetting />
 | |
|       <AudioMessageAutoPlaySetting />
 | |
| 
 | |
|       <BlockedContactsList />
 | |
|     </>
 | |
|   );
 | |
| };
 |