import React from 'react'; import PropTypes from 'prop-types'; import { NgIf, Icon } from '../../components/'; import { Share } from '../../model/'; import { randomString, notify } from '../../helpers/'; import './share.scss'; export class ShareComponent extends React.Component { constructor(props){ super(props); this.state = { show_advanced: false, role: null, id: randomString(7), existings: [] }; } componentDidMount(){ Share.all(this.props.path) .then((existings) => { this.refreshModal(); this.setState({existings: existings}); }); } updateState(key, value){ if(this.state[key] === value){ this.setState({[key]: null}); }else{ this.setState({[key]: value}); } if(key === "role" && value){ this.refreshModal(); } } refreshModal(){ if(window.innerHeight < 500){ window.dispatchEvent(new Event('resize')); } } onLoad(link){ let st = Object.assign({}, link); st.show_advanced = false; st.link_id = st.id; st.role = (st.role || "").toLowerCase(); this.setState(st); } onDeleteLink(link_id){ let removed = null, i = 0; for(i=0; i < this.state.existings.length; i++){ if(this.state.existings[i].id === link_id){ removed = Object.assign({}, this.state.existings[i]); break; } } if(removed !== null){ this.state.existings.splice(i, 1); this.setState({existings: this.state.existings}); } return Share.remove(link_id) .catch((err) => { this.setState({existings: [removed].concat(this.state.existings)}); notify.send(err, "error"); }); } onRegisterLink(e){ e.target.setSelectionRange(0, e.target.value.length); let st = Object.assign({}, this.state); delete st.existings; delete st.show_advanced; this.setState({existings: [st].concat(this.state.existings)}); return Share.upsert(st) .catch((err) => { notify.send(err, "error"); this.setState({ existings: this.state.existings.slice(0, this.state.existings.length) }); }); } render(){ return (