dispatch/client/js/components/pages/Settings.js

80 lines
2.1 KiB
JavaScript
Raw Normal View History

import React, { useCallback } from 'react';
import Navicon from 'containers/Navicon';
import Button from 'components/ui/Button';
2018-10-15 06:56:17 +00:00
import Checkbox from 'components/ui/Checkbox';
import FileInput from 'components/ui/FileInput';
2018-10-15 06:56:17 +00:00
const Settings = ({
settings,
installable,
2018-10-15 06:56:17 +00:00
setSetting,
onCertChange,
onKeyChange,
onInstall,
2018-10-15 06:56:17 +00:00
uploadCert
}) => {
2018-04-25 03:36:27 +00:00
const status = settings.uploadingCert ? 'Uploading...' : 'Upload';
const error = settings.certError;
const handleInstallClick = useCallback(
async () => {
installable.prompt();
await installable.userChoice;
onInstall();
},
[installable]
);
return (
2018-10-15 06:56:17 +00:00
<div className="settings-container">
<div className="settings">
<Navicon />
<h1>Settings</h1>
{installable && (
<Button className="button-install" onClick={handleInstallClick}>
<h2>Install</h2>
</Button>
)}
2018-10-15 06:56:17 +00:00
<div className="settings-section">
<h2>Visuals</h2>
<Checkbox
name="coloredNicks"
label="Colored nicks"
checked={settings.coloredNicks}
onChange={e => setSetting('coloredNicks', e.target.checked)}
/>
</div>
<div className="settings-section">
<h2>Client Certificate</h2>
<div className="settings-cert">
<div className="settings-file">
<p>Certificate</p>
<FileInput
name={settings.certFile || 'Select Certificate'}
onChange={onCertChange}
/>
</div>
<div className="settings-file">
<p>Private Key</p>
<FileInput
name={settings.keyFile || 'Select Key'}
onChange={onKeyChange}
/>
</div>
<Button
type="submit"
className="settings-button"
onClick={uploadCert}
>
2018-10-15 06:56:17 +00:00
{status}
</Button>
2018-10-15 06:56:17 +00:00
{error ? <p className="error">{error}</p> : null}
</div>
</div>
</div>
</div>
);
};
export default Settings;