public/js/components/Header/DeleteAtom.js (32 lines of code) (raw):

import React from 'react'; import {PropTypes} from 'prop-types'; import { getStore } from '../../util/storeAccessor'; export default class DeleteAtom extends React.Component { static propTypes = { atom: PropTypes.object.isRequired, deleteAtom: PropTypes.func.isRequired }; // the permissions are also validated on the server-side for each request // TODO not currently true - must update server to actually do the validation!! ^ permissions = getStore().getState().config.permissions; showActions = this.permissions.deleteAtom; state = { deleteDoubleCheck: false }; renderDelete() { if (!this.permissions.deleteAtom) { return false; } const deleteMsg = this.state.deleteDoubleCheck ? 'Confirm delete from database' : 'Delete from database'; const doDelete = () => { if (this.state.deleteDoubleCheck) { this.props.deleteAtom(this.props.atom); } else { this.setState({ deleteDoubleCheck: true }); } }; return ( <button className="btn btn--margin btn--red" onClick={doDelete} > {deleteMsg} </button> ); } render() { if (!this.showActions) { return false; } return this.renderDelete(); } }