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.
		
		
		
		
		
			
		
			
				
	
	
		
			101 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
			
		
		
	
	
			101 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			TypeScript
		
	
import React from 'react';
 | 
						|
// tslint:disable-next-line: no-submodule-imports
 | 
						|
import useUpdate from 'react-use/lib/useUpdate';
 | 
						|
import { SettingsKey } from '../../../data/settings-key';
 | 
						|
import { CallManager, ToastUtils } from '../../../session/utils';
 | 
						|
import { updateConfirmModal } from '../../../state/ducks/modalDialog';
 | 
						|
import { SessionButtonColor } from '../../basic/SessionButton';
 | 
						|
 | 
						|
import { SessionToggleWithDescription } from '../SessionSettingListItem';
 | 
						|
 | 
						|
const toggleCallMediaPermissions = async (triggerUIUpdate: () => void) => {
 | 
						|
  const currentValue = window.getCallMediaPermissions();
 | 
						|
  if (!currentValue) {
 | 
						|
    window.inboxStore?.dispatch(
 | 
						|
      updateConfirmModal({
 | 
						|
        title: window.i18n('callMediaPermissionsDialogTitle'),
 | 
						|
        message: window.i18n('callMediaPermissionsDialogContent'),
 | 
						|
        okTheme: SessionButtonColor.Danger,
 | 
						|
        okText: window.i18n('continue'),
 | 
						|
        onClickOk: async () => {
 | 
						|
          await window.toggleCallMediaPermissionsTo(true);
 | 
						|
          triggerUIUpdate();
 | 
						|
          CallManager.onTurnedOnCallMediaPermissions();
 | 
						|
        },
 | 
						|
        onClickCancel: async () => {
 | 
						|
          await window.toggleCallMediaPermissionsTo(false);
 | 
						|
          triggerUIUpdate();
 | 
						|
        },
 | 
						|
      })
 | 
						|
    );
 | 
						|
  } else {
 | 
						|
    await window.toggleCallMediaPermissionsTo(false);
 | 
						|
    triggerUIUpdate();
 | 
						|
  }
 | 
						|
};
 | 
						|
 | 
						|
async function toggleStartInTray() {
 | 
						|
  try {
 | 
						|
    const newValue = !(await window.getStartInTray());
 | 
						|
 | 
						|
    // 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.settingsStartInTray, newValue);
 | 
						|
    await window.setStartInTray(newValue);
 | 
						|
    if (!newValue) {
 | 
						|
      ToastUtils.pushRestartNeeded();
 | 
						|
    }
 | 
						|
  } catch (e) {
 | 
						|
    window.log.warn('start in tray change error:', e);
 | 
						|
  }
 | 
						|
}
 | 
						|
 | 
						|
export const SettingsCategoryPermissions = (props: { hasPassword: boolean | null }) => {
 | 
						|
  const forceUpdate = useUpdate();
 | 
						|
  const isStartInTrayActive = Boolean(window.getSettingValue(SettingsKey.settingsStartInTray));
 | 
						|
 | 
						|
  if (props.hasPassword !== null) {
 | 
						|
    return (
 | 
						|
      <>
 | 
						|
        <SessionToggleWithDescription
 | 
						|
          onClickToggle={async () => {
 | 
						|
            await window.toggleMediaPermissions();
 | 
						|
            forceUpdate();
 | 
						|
          }}
 | 
						|
          title={window.i18n('mediaPermissionsTitle')}
 | 
						|
          description={window.i18n('mediaPermissionsDescription')}
 | 
						|
          active={Boolean(window.getSettingValue('media-permissions'))}
 | 
						|
        />
 | 
						|
        <SessionToggleWithDescription
 | 
						|
          onClickToggle={async () => {
 | 
						|
            await toggleCallMediaPermissions(forceUpdate);
 | 
						|
            forceUpdate();
 | 
						|
          }}
 | 
						|
          title={window.i18n('callMediaPermissionsTitle')}
 | 
						|
          description={window.i18n('callMediaPermissionsDescription')}
 | 
						|
          active={Boolean(window.getCallMediaPermissions())}
 | 
						|
        />
 | 
						|
        <SessionToggleWithDescription
 | 
						|
          onClickToggle={async () => {
 | 
						|
            const old = Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate));
 | 
						|
            await window.setSettingValue(SettingsKey.settingsAutoUpdate, !old);
 | 
						|
            forceUpdate();
 | 
						|
          }}
 | 
						|
          title={window.i18n('autoUpdateSettingTitle')}
 | 
						|
          description={window.i18n('autoUpdateSettingDescription')}
 | 
						|
          active={Boolean(window.getSettingValue(SettingsKey.settingsAutoUpdate))}
 | 
						|
        />
 | 
						|
        <SessionToggleWithDescription
 | 
						|
          onClickToggle={async () => {
 | 
						|
            await toggleStartInTray();
 | 
						|
            forceUpdate();
 | 
						|
          }}
 | 
						|
          title={window.i18n('startInTrayTitle')}
 | 
						|
          description={window.i18n('startInTrayDescription')}
 | 
						|
          active={isStartInTrayActive}
 | 
						|
        />
 | 
						|
      </>
 | 
						|
    );
 | 
						|
  }
 | 
						|
  return null;
 | 
						|
};
 |