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.
100 lines
3.6 KiB
TypeScript
100 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,
|
|
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;
|
|
};
|