import React from "react"; import { Container, Card, NgIf, Input, Button, Textarea, Loader, Notification, Prompt } from "../../components/"; import { invalidate, encrypt, decrypt, gid, settings_get, settings_put } from "../../helpers/"; import { Session } from "../../model/"; import "./form.scss"; import img_drive from "../../assets/img/google-drive.png"; import img_dropbox from "../../assets/img/dropbox.png"; export class Form extends React.Component { constructor(props){ super(props); this.state = { select: CONFIG["connections"].length > 2 ? 2 : 0, backends: JSON.parse(JSON.stringify(CONFIG["connections"])), dummy: null }; const select = settings_get("login_tab"); if(select !== null){ this.state.select = select; } this.rerender = this.rerender.bind(this); } componentDidMount(){ window.addEventListener("resize", this.rerender); this.publishState(this.props); } componentWillUnmount(){ settings_put("login_tab", this.state.select); window.removeEventListener("resize", this.rerender); } componentWillReceiveProps(props){ if(JSON.stringify(props.credentials) !== JSON.stringify(this.props.credentials)){ this.publishState(props); } } publishState(props){ for(let key in props.credentials){ this.state.backends = this.state.backends.map((backend) => { if(backend["type"] + "_" + backend["label"] === key){ backend = props.credentials[key]; } return backend; }); } this.setState({backends: this.state.backends}); } onSubmit(e){ e.preventDefault(); const authData = this.state.backends[this.state.select], key = authData["type"]+"_"+authData["label"]; this.props.credentials[key] = authData; this.props.onSubmit(authData, this.props.credentials); } onFormUpdate(n, values){ this.state.backends[n] = values; this.setState({backends: this.state.backends}); } redirect(service){ this.props.onThirdPartyLogin(service); } onTypeChange(n){ this.setState({select: n}); } rerender(){ this.setState({_dummy: !this.state._dummy}); } _marginTop(){ let size = 300; const $screen = document.querySelector(".login-form"); if($screen) size = $screen.offsetHeight; size = Math.round((document.body.offsetHeight - size) / 2); if(size < 0) return 0; if(size > 150) return 150; return size; } render() { let className = (window.innerWidth < 600) ? "scroll-x" : ""; return ( 1 }>
{ this.state.backends.map((backend, i) => { return ( ); }) }
{ this.state.backends.map((conn, i) => { return ( ); }) }
); } } const WebDavForm = formHelper(function(props){ const onAdvanced = (value) => { if(value == true){ props.values.path = ""; }else{ delete props.values.path; } props.onChange(props.values); }; const is_advanced = props.advanced(props.values.path); return (
props.onChange("url", e.target.value)} type={props.input_type("url")} name="url" placeholder="Address*" autoComplete="new-password" /> props.onChange("username", e.target.value)} type={props.input_type("username")} name="username" placeholder="Username" autoComplete="new-password" /> props.onChange("password", e.target.value)} type={props.input_type("password")} name="password" placeholder="Password" autoComplete="new-password" /> props.onChange("path", e.target.value)} type={props.input_type("path")} name="path" placeholder="Path" autoComplete="new-password" />
); }); const FtpForm = formHelper(function(props){ const onAdvanced = (value) => { if(value == true){ props.values.path = ""; props.values.port = ""; }else{ delete props.values.path; delete props.values.port; } props.onChange(props.values); }; const is_advanced = props.advanced( props.values.path, props.values.port ); return (
props.onChange("hostname", e.target.value)} type={props.input_type("hostname")} name="hostname" placeholder="Hostname*" autoComplete="new-password" /> props.onChange("username", e.target.value)} type={props.input_type("username")} name="username" placeholder="Username" autoComplete="new-password" /> props.onChange("password", e.target.value)} type={props.input_type("password")} name="password" placeholder="Password" autoComplete="new-password" /> props.onChange("path", e.target.value)} type={props.input_type("path")} name="path" placeholder="Path" autoComplete="new-password" /> props.onChange("port", e.target.value)} type={props.input_type("port")} name="port" placeholder="Port" autoComplete="new-password" />
); }); const SftpForm = formHelper(function(props){ const onAdvanced = (value) => { if(value == true){ props.values.path = ""; props.values.port = ""; props.values.passphrase = ""; }else{ delete props.values.path; delete props.values.port; delete props.values.passphrase; } props.onChange(); }; const is_advanced = props.advanced( props.values.path, props.values.port, props.values.passphrase ); return (
props.onChange("hostname", e.target.value)} value={props.values.hostname || ""} onChange={(e) => props.onChange("hostname", e.target.value)} type={props.input_type("hostname")} name="host" placeholder="Hostname*" autoComplete="new-password" /> props.onChange("username", e.target.value)} type={props.input_type("username")} name="username" placeholder="Username" autoComplete="new-password" />