Added case for window resize and cleaned up function

Этот коммит содержится в:
nickago
2015-08-11 10:28:48 -07:00
родитель 3d492bf450
Коммит 6028d013d6
2 изменённых файлов: 23 добавлений и 9 удалений

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

@@ -65,7 +65,10 @@ module.exports = React.createClass({
SocketStore.addChangeListener(this._onSocketChange);
// Timeout exists for the DOM to fully render before making changes
setTimeout(this.scrollWindow, 1)
setTimeout(this.scrollWindow, 1);
// Handle browser resizing
$(window).resize(this.onResize);
// Highlight stylingx
$('body').on('click.userpopover', function(e){
@@ -101,13 +104,10 @@ module.exports = React.createClass({
});
},
componentWillUpdate: function() {
var container = $('.post-list-holder-by-time');
if (this.holdPosition) {
this.scrollHeightFromBottom = container[0].scrollHeight - container.scrollTop();
}
this.prepareScrollWindow();
},
componentDidUpdate: function() {
this.scrollWindow()
this.scrollWindow();
$('.post-list__content div .post').removeClass('post--last');
$('.post-list__content div:last-child .post').addClass('post--last');
},
@@ -118,25 +118,40 @@ module.exports = React.createClass({
SocketStore.removeChangeListener(this._onSocketChange);
$('body').off('click.userpopover');
},
prepareScrollWindow: function() {
var container = $('.post-list-holder-by-time');
if (this.holdPosition) {
this.scrollHeightFromBottom = container[0].scrollHeight - container.scrollTop();
}
},
scrollWindow: function() {
var container = $('.post-list-holder-by-time');
// If there's a new message, this jumps the window to that
// If there's a new message, jump the window to it
// If there's no new message, we check if there is a scroll position to retrieve from the previous state
// If we don't, then we just jump to the bottom
if ($('#new_message').length) {
container.scrollTop(container.scrollTop() + $('#new_message').offset().top - container.offset().top - $('.new-separator').height());
} else if (this.holdPosition) {
container.scrollTop(container[0].scrollHeight - this.scrollHeightFromBottom);
this.holdPosition = false;
} else {
container.scrollTop(container[0].scrollHeight - container.innerHeight());
}
this.holdPosition = false;
},
onResize: function() {
this.holdPosition = true;
if ($('#create_post').length > 0) {
var height = $(window).height() - $('#create_post').height() - $('#error_bar').outerHeight() - 50;
$(".post-list-holder-by-time").css("height", height + "px");
}
this.forceUpdate();
},
_onChange: function() {
var newState = getStateFromStores();
if (!utils.areStatesEqual(newState, this.state)) {
this.holdPosition = (newState.channel.id === this.state.channel.id); // If we're on a new channel, go to the bottom, otherwise hold your position
this.setState(newState);
}
},

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

@@ -313,7 +313,6 @@ var getYoutubeEmbed = function(link) {
var metadata = data.items[0].snippet;
$('.video-uploader.'+youtubeId).html(metadata.channelTitle);
$('.video-title.'+youtubeId).find('a').html(metadata.title);
// Scrolling Code Was Here
};
if(config.GoogleDeveloperKey) {