Merge pull request #188 from kitematic/fix-reload

Use jQuery to test reload
This commit is contained in:
Jeffrey Morgan 2015-02-17 10:12:13 -08:00
commit c858ffa822
1 changed files with 20 additions and 12 deletions

View File

@ -4,6 +4,8 @@ var exec = require('exec');
var ContainerStore = require('./ContainerStore'); var ContainerStore = require('./ContainerStore');
var ContainerUtil = require('./ContainerUtil'); var ContainerUtil = require('./ContainerUtil');
var Router = require('react-router'); var Router = require('react-router');
var Promise = require('bluebird');
var $ = require('jquery');
var ContainerHomePreview = React.createClass({ var ContainerHomePreview = React.createClass({
mixins: [Router.State, Router.Navigation], mixins: [Router.State, Router.Navigation],
@ -19,21 +21,27 @@ var ContainerHomePreview = React.createClass({
componentDidMount: function() { componentDidMount: function() {
this.init(); this.init();
}, },
componentDidUpdate: function () { reload: function () {
var webview = document.getElementById('webview'); var webview = document.getElementById('webview');
if (webview) { if (webview) {
webview.addEventListener('did-finish-load', () => {
//HACK: if the title is the host:port the page probably hasn't loaded yet
if (this.state.ports[this.state.defaultPort].url.replace('http://', '') === webview.getTitle()) {
setTimeout(function () {
try { try {
var url = webview.src;
Promise.resolve($.get(url)).then(() => {
webview.reload();
}).catch(err => {
if (err.status === 0) {
setTimeout(this.reload, 2000);
} else {
webview.reload(); webview.reload();
} catch (err) {
}
}, 1000);
} }
}); });
} catch (err) {
} }
}
},
componentDidUpdate: function () {
this.reload();
}, },
componentWillUnmount: function() { componentWillUnmount: function() {
clearInterval(this.timer); clearInterval(this.timer);