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 ( <> { await window.toggleMediaPermissions(); forceUpdate(); }} title={window.i18n('mediaPermissionsTitle')} description={window.i18n('mediaPermissionsDescription')} active={Boolean(window.getSettingValue('media-permissions'))} /> { await toggleCallMediaPermissions(forceUpdate); forceUpdate(); }} title={window.i18n('callMediaPermissionsTitle')} description={window.i18n('callMediaPermissionsDescription')} active={Boolean(window.getCallMediaPermissions())} /> { 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))} /> { await toggleStartInTray(); forceUpdate(); }} title={window.i18n('startInTrayTitle')} description={window.i18n('startInTrayDescription')} active={isStartInTrayActive} /> ); } return null; };