lbry-desktop/js/app.js

119 lines
3.6 KiB
JavaScript
Raw Normal View History

2016-04-10 02:00:56 +02:00
var App = React.createClass({
getInitialState: function() {
2016-04-21 11:51:27 +02:00
// For now, routes are in format ?page or ?page=args
var match, param, val, viewingPage,
drawerOpenRaw = sessionStorage.getItem('drawerOpen');
2016-04-21 11:51:27 +02:00
[match, param, val] = window.location.search.match(/\??([^=]*)(?:=(.*))?/);
2016-08-08 02:57:12 +02:00
if (param && ['settings', 'discover', 'help', 'start', 'watch', 'report', 'files', 'claim', 'show', 'wallet', 'publish'].indexOf(param) != -1) {
2016-08-07 17:27:00 +02:00
viewingPage = param;
2016-04-10 02:00:56 +02:00
}
2016-08-08 02:57:12 +02:00
2016-04-20 12:28:13 +02:00
return {
2016-08-08 02:57:12 +02:00
viewingPage: viewingPage ? viewingPage : 'discover',
drawerOpen: drawerOpenRaw !== null ? JSON.parse(drawerOpenRaw) : true,
2016-04-21 11:51:27 +02:00
pageArgs: val,
2016-04-20 12:28:13 +02:00
};
2016-04-10 02:00:56 +02:00
},
2016-08-08 02:57:12 +02:00
componentDidMount: function() {
lbry.getStartNotice(function(notice) {
if (notice) {
alert(notice);
}
});
},
componentWillMount: function() {
lbry.checkNewVersionAvailable(function(isAvailable) {
2016-08-07 23:05:04 +02:00
if (!isAvailable || sessionStorage.getItem('upgradeSkipped')) {
return;
}
var message = 'The version of LBRY you\'re using is not up to date.\n\n' +
2016-08-23 16:53:45 +02:00
'Choose "OK" to download the latest version.';
lbry.getVersionInfo(function(versionInfo) {
if (versionInfo.os_system == 'Darwin') {
var updateUrl = 'https://lbry.io/get/lbry.dmg';
var maj, min, patch;
[maj, min, patch] = versionInfo.lbrynet_version.split('.');
if (maj == 0 && min <= 2 && patch <= 2) {
// On OS X with version <= 0.2.2, we need to notify user to close manually close LBRY
message += '\n\nBefore installing the new version, make sure to exit LBRY, if you started the app ' +
2016-08-07 17:27:00 +02:00
'click that LBRY icon in your status bar and choose "Quit."';
}
} else {
var updateUrl = 'https://lbry.io/get/lbry.deb';
}
2016-08-07 23:05:04 +02:00
if (window.confirm(message))
{
2016-06-30 06:35:56 +02:00
lbry.stop();
window.location = updateUrl;
2016-08-07 23:05:04 +02:00
} else {
sessionStorage.setItem('upgradeSkipped', true);
};
});
});
},
openDrawer: function() {
sessionStorage.setItem('drawerOpen', true);
this.setState({ drawerOpen: true });
},
closeDrawer: function() {
sessionStorage.setItem('drawerOpen', false);
this.setState({ drawerOpen: false });
},
onSearch: function(term) {
this.setState({
viewingPage: 'discover',
pageArgs: term
});
2016-08-08 02:57:12 +02:00
},
getMainContent: function()
{
switch(this.state.viewingPage)
{
2016-08-08 02:57:12 +02:00
case 'discover':
return <DiscoverPage query={this.state.pageArgs} />;
case 'settings':
return <SettingsPage />;
case 'help':
return <HelpPage />;
case 'watch':
return <WatchPage name={this.state.pageArgs} />;
case 'report':
return <ReportPage />;
case 'files':
return <MyFilesPage />;
case 'start':
return <StartPage />;
case 'claim':
return <ClaimCodePage />;
case 'wallet':
return <WalletPage />;
case 'show':
return <DetailPage name={this.state.pageArgs} />;
case 'publish':
return <PublishPage />;
}
},
2016-04-10 02:00:56 +02:00
render: function() {
var mainContent = this.getMainContent();
return (
2016-08-08 05:39:44 +02:00
this.state.viewingPage == 'watch' ?
mainContent :
<div id="window" className={ this.state.drawerOpen ? 'drawer-open' : 'drawer-closed' }>
<Drawer onCloseDrawer={this.closeDrawer} viewingPage={this.state.viewingPage} />
<div id="main-content">
<Header onOpenDrawer={this.openDrawer} onSearch={this.onSearch} />
{mainContent}
</div>
</div>
);
2016-04-10 02:00:56 +02:00
}
2016-08-23 16:53:45 +02:00
});