import React, {PureComponent, PropTypes} from 'react'; import SidebarRequestRow from './sidebar-request-row'; import SidebarRequestGroupRow from './sidebar-request-group-row'; import * as models from '../../../models/index'; class SidebarChildren extends PureComponent { _renderChildren (children) { const { handleCreateRequest, handleCreateRequestGroup, handleSetRequestGroupCollapsed, handleDuplicateRequest, handleDuplicateRequestGroup, handleGenerateCode, handleCopyAsCurl, moveDoc, handleActivateRequest, activeRequest, workspace } = this.props; const activeRequestId = activeRequest ? activeRequest._id : 'n/a'; return children.map(child => { if (child.hidden) { return null; } if (child.doc.type === models.request.type) { return ( ); } // We have a RequestGroup! const requestGroup = child.doc; function hasActiveChild (children) { for (const c of children) { if (hasActiveChild(c.children || [])) { return true; } else if (c.doc._id === activeRequestId) { return true; } } // Didn't find anything, so return return false; } const isActive = hasActiveChild(child.children); const children = this._renderChildren(child.children); return ( ); }); } render () { const {childObjects} = this.props; return ( ); } } SidebarChildren.propTypes = { // Required handleActivateRequest: PropTypes.func.isRequired, handleCreateRequest: PropTypes.func.isRequired, handleCreateRequestGroup: PropTypes.func.isRequired, handleSetRequestGroupCollapsed: PropTypes.func.isRequired, handleDuplicateRequest: PropTypes.func.isRequired, handleDuplicateRequestGroup: PropTypes.func.isRequired, handleGenerateCode: PropTypes.func.isRequired, handleCopyAsCurl: PropTypes.func.isRequired, moveDoc: PropTypes.func.isRequired, childObjects: PropTypes.arrayOf(PropTypes.object).isRequired, workspace: PropTypes.object.isRequired, // Optional activeRequest: PropTypes.object }; export default SidebarChildren;