PLT-7048 Changed MarkdownImage to scroll post list as soon as it knows its height (#6916)

Этот коммит содержится в:
Harrison Healey
2017-07-12 12:58:19 -04:00
коммит произвёл Saturnino Abril
родитель 62f925b059
Коммит 96d7783d36

Просмотреть файл

@@ -1,19 +1,67 @@
// Copyright (c) 2017-present Mattermost, Inc. All Rights Reserved.
// See License.txt for license information.
import React, {PureComponent} from 'react';
import PropTypes from 'prop-types';
import React from 'react';
import {postListScrollChange} from 'actions/global_actions.jsx';
export default class MarkdownImage extends PureComponent {
handleLoad = () => {
postListScrollChange();
const WAIT_FOR_HEIGHT_TIMEOUT = 100;
export default class MarkdownImage extends React.PureComponent {
static propTypes = {
/*
* The href of the image to be loaded
*/
href: PropTypes.string
}
constructor(props) {
super(props);
this.heightTimeout = 0;
}
componentDidMount() {
this.waitForHeight();
}
componentDidUpdate(prevProps) {
if (this.props.href !== prevProps.href) {
this.waitForHeight();
}
}
componentWillUnmount() {
this.stopWaitingForHeight();
}
waitForHeight = () => {
if (this.refs.image.height) {
postListScrollChange();
this.heightTimeout = 0;
} else {
this.heightTimeout = setTimeout(this.waitForHeight, WAIT_FOR_HEIGHT_TIMEOUT);
}
}
stopWaitingForHeight = () => {
if (this.heightTimeout !== 0) {
clearTimeout(this.heightTimeout);
this.heightTimeout = 0;
}
}
render() {
const props = {...this.props};
props.onLoad = this.handleLoad;
return <img {...props}/>;
return (
<img
{...this.props}
ref='image'
onLoad={this.stopWaitingForHeight}
onError={this.stopWaitingForHeight}
/>
);
}
}