2022-09-02 03:33:04 +00:00

181 lines
7.1 KiB
JavaScript

import React, { Component } from 'react';
import { inject, observer } from 'mobx-react';
import classes from './style.css';
import Switch from 'components/Switch';
import Avatar from 'components/Avatar';
import helper from 'utils/helper';
@inject(stores => ({
alwaysOnTop: stores.settings.alwaysOnTop,
setAlwaysOnTop: stores.settings.setAlwaysOnTop,
showOnTray: stores.settings.showOnTray,
setShowOnTray: stores.settings.setShowOnTray,
showNotification: stores.settings.showNotification,
setShowNotification: stores.settings.setShowNotification,
startup: stores.settings.startup,
setStartup: stores.settings.setStartup,
downloads: stores.settings.downloads,
setDownloads: stores.settings.setDownloads,
confirmImagePaste: stores.settings.confirmImagePaste,
setConfirmImagePaste: stores.settings.setConfirmImagePaste,
blockRecall: stores.settings.blockRecall,
setBlockRecall: stores.settings.setBlockRecall,
rememberConversation: stores.settings.rememberConversation,
setRememberConversation: stores.settings.setRememberConversation,
showRedIcon: stores.settings.showRedIcon,
setShowRedIcon: stores.settings.setShowRedIcon,
user: stores.session.user,
logout: stores.session.logout,
}))
@observer
export default class Settings extends Component {
choiceDownloadDir() {
this.refs.downloads.click();
}
componentDidMount() {
this.refs.downloads.webkitdirectory = true;
}
render() {
var {
alwaysOnTop,
setAlwaysOnTop,
showOnTray,
setShowOnTray,
showNotification,
setShowNotification,
startup,
setStartup,
downloads,
setDownloads,
confirmImagePaste,
setConfirmImagePaste,
blockRecall,
setBlockRecall,
rememberConversation,
setRememberConversation,
showRedIcon,
setShowRedIcon,
user,
} = this.props;
return (
<div className={classes.container}>
<div className={classes.column}>
<h2>设置</h2>
<ul>
{
user && (
<li className={classes.user}>
<Avatar src={this.props.user.User.HeadImgUrl} />
<button onClick={e => this.props.logout()}>登出</button>
</li>
)
}
<li className={classes.downloads}>
<div>
<input
onChange={e => setDownloads(e.target.files[0])}
ref="downloads"
type="file" />
<p>下载目录</p>
<p onClick={e => this.choiceDownloadDir()}>{downloads}</p>
</div>
<button onClick={e => this.choiceDownloadDir()}>更改</button>
</li>
<li>
<label htmlFor="alwaysOnTop">
<span>窗口置顶</span>
<Switch
checked={alwaysOnTop}
id="alwaysOnTop"
onChange={e => setAlwaysOnTop(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="showOnTray">
<span>显示托盘图标</span>
<Switch
checked={showOnTray}
disabled={!helper.isOsx}
id="showOnTray"
onChange={e => setShowOnTray(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="showNotification">
<span>发送桌面通知</span>
<Switch
checked={showNotification}
id="showNotification"
onChange={e => setShowNotification(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="blockRecall">
<span>反撤回功能</span>
<Switch
checked={blockRecall}
id="blockRecall"
onChange={e => setBlockRecall(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="rememberConversation">
<span>记住上次的聊天内容</span>
<Switch
checked={rememberConversation}
id="rememberConversation"
onChange={e => setRememberConversation(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="showRedIcon">
<span>显示首页红色加号按钮</span>
<Switch
checked={showRedIcon}
id="showRedIcon"
onChange={e => setShowRedIcon(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="confirmImagePaste">
<span>在粘贴图片时弹框确认</span>
<Switch
checked={confirmImagePaste}
id="confirmImagePaste"
onChange={e => setConfirmImagePaste(e.target.checked)} />
</label>
</li>
<li>
<label htmlFor="startup">
<span>开机自启动</span>
<Switch
checked={startup}
id="startup"
onChange={e => setStartup(e.target.checked)} />
</label>
</li>
</ul>
</div>
<div className={classes.column}>
<h2>TODO:</h2>
</div>
</div>
);
}
}