import * as React from "react"; import { List } from "immutable"; import { updater } from "./state_updater"; import { ICoreState, MsgProps, UIProps } from "./core_state"; import { AdminProps } from "./pane_admin"; import { SettingsDialog } from "./dialog_settings"; import { AuthPane, LoginProps } from "./pane_login"; import { FilesProps } from "./panel_files"; import { Flexbox } from "./layout/flexbox"; import { Container } from "./layout/container"; import { settingsDialogCtrl, ctrlOff, sharingCtrl, loadingCtrl, ctrlOn, ctrlHidden, } from "../common/controls"; import { LoadingIcon } from "./visual/loading"; import { HotkeyHandler } from "../common/hotkeys"; export interface Props { filesInfo: FilesProps; login: LoginProps; admin: AdminProps; ui: UIProps; msg: MsgProps; update?: (updater: (prevState: ICoreState) => ICoreState) => void; } export interface State { } export class Layers extends React.Component { private hotkeyHandler: HotkeyHandler; constructor(p: Props) { super(p); } componentDidMount(): void { this.hotkeyHandler = new HotkeyHandler(); this.hotkeyHandler.add({ key: "Escape" }, this.closeHandler); document.addEventListener("keyup", this.hotkeyHandler.handle); } componentWillUnmount() { document.removeEventListener("keyup", this.hotkeyHandler.handle); } closeHandler = () => { if (this.props.ui.control.controls.get(settingsDialogCtrl) === ctrlOn) { this.setControlOption(settingsDialogCtrl, ctrlOff); } }; setControlOption = (targetControl: string, option: string) => { updater().setControlOption(targetControl, option); this.props.update(updater().updateUI); }; render() { const hideLogin = this.props.login.authed || (this.props.ui.control.controls.get(sharingCtrl) === ctrlOn && this.props.filesInfo.isSharing); const loginPaneClass = hideLogin ? "hidden" : ""; const showSettings = this.props.ui.control.controls.get(settingsDialogCtrl) === ctrlOn ? "" : "hidden"; const showLoading = this.props.ui.control.controls.get(loadingCtrl) == ctrlOn ? "" : ctrlHidden; return (
{this.props.msg.pkg.get("pane.settings")}, , ])} childrenStyles={List([{}, { justifyContent: "flex-end" }])} />
); } }