import React, { PureComponent } from 'react';
import { connect } from 'react-redux';
import PropTypes from 'prop-types';
import FileEntry, { FileEntryProps } from './FileEntry';
class SharedFilesList extends PureComponent
{
constructor(props)
{
super(props);
this.listRef = React.createRef();
}
scrollToBottom = () =>
{
const elem = this.listRef.current;
elem.scrollTop = elem.scrollHeight;
};
componentDidUpdate()
{
this.scrollToBottom();
}
render()
{
return (
{this.props.sharing.map((entry, i) => (
))}
);
}
}
SharedFilesList.propTypes = {
sharing : PropTypes.arrayOf(FileEntryProps.data).isRequired
};
const mapStateToProps = (state) =>
({
sharing : state.sharing,
// Included to scroll to the bottom when the user
// actually opens the tab. When the component first
// mounts, the component is not visible and so the
// component has no height which can be used for scrolling.
tabOpen : state.toolarea.currentToolTab === 'files'
});
export default connect(
mapStateToProps
)(SharedFilesList);