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
|
2016-08-07 22:10:44 +02:00
|
|
|
var match, param, val, viewingPage,
|
|
|
|
drawerOpenRaw = sessionStorage.getItem('drawerOpen');
|
|
|
|
|
2016-08-27 16:12:56 +02:00
|
|
|
[match, viewingPage, val] = window.location.search.match(/\??([^=]*)(?:=(.*))?/);
|
2016-04-21 11:51:27 +02:00
|
|
|
|
2016-08-08 02:57:12 +02:00
|
|
|
|
2016-04-20 12:28:13 +02:00
|
|
|
return {
|
2016-08-27 16:12:56 +02:00
|
|
|
viewingPage: viewingPage,
|
2016-08-07 22:10:44 +02:00
|
|
|
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);
|
|
|
|
}
|
|
|
|
});
|
|
|
|
},
|
2016-04-12 12:30:25 +02:00
|
|
|
componentWillMount: function() {
|
|
|
|
lbry.checkNewVersionAvailable(function(isAvailable) {
|
2016-08-07 23:05:04 +02:00
|
|
|
|
|
|
|
if (!isAvailable || sessionStorage.getItem('upgradeSkipped')) {
|
2016-05-30 15:43:34 +02:00
|
|
|
return;
|
|
|
|
}
|
2016-04-20 11:46:13 +02:00
|
|
|
|
2016-05-30 15:43:34 +02:00
|
|
|
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.';
|
2016-04-20 11:46:13 +02:00
|
|
|
|
2016-05-30 15:43:34 +02:00
|
|
|
lbry.getVersionInfo(function(versionInfo) {
|
2016-08-03 12:56:40 +02:00
|
|
|
if (versionInfo.os_system == 'Darwin') {
|
|
|
|
var updateUrl = 'https://lbry.io/get/lbry.dmg';
|
2016-04-20 11:46:13 +02:00
|
|
|
|
2016-08-03 12:56:40 +02:00
|
|
|
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."';
|
2016-08-03 12:56:40 +02:00
|
|
|
}
|
2016-09-02 09:43:45 +02:00
|
|
|
} else if (versionInfo.os_system == 'Linux') {
|
2016-08-03 12:56:40 +02:00
|
|
|
var updateUrl = 'https://lbry.io/get/lbry.deb';
|
2016-09-02 09:43:45 +02:00
|
|
|
} else if (versionInfo.os_system == 'Windows') {
|
|
|
|
var updateUrl = 'https://lbry.io/get/lbry.msi';
|
|
|
|
} else {
|
|
|
|
var updateUrl = 'https://lbry.io/get';
|
2016-05-30 15:43:34 +02:00
|
|
|
}
|
|
|
|
|
2016-08-07 23:05:04 +02:00
|
|
|
if (window.confirm(message))
|
|
|
|
{
|
2016-06-30 06:35:56 +02:00
|
|
|
lbry.stop();
|
2016-08-03 12:56:40 +02:00
|
|
|
window.location = updateUrl;
|
2016-08-07 23:05:04 +02:00
|
|
|
} else {
|
|
|
|
sessionStorage.setItem('upgradeSkipped', true);
|
2016-05-30 15:43:34 +02:00
|
|
|
};
|
|
|
|
});
|
2016-04-12 12:30:25 +02:00
|
|
|
});
|
|
|
|
},
|
2016-08-07 22:10:44 +02:00
|
|
|
openDrawer: function() {
|
|
|
|
sessionStorage.setItem('drawerOpen', true);
|
|
|
|
this.setState({ drawerOpen: true });
|
|
|
|
},
|
|
|
|
closeDrawer: function() {
|
|
|
|
sessionStorage.setItem('drawerOpen', false);
|
|
|
|
this.setState({ drawerOpen: false });
|
|
|
|
},
|
2016-08-08 04:48:45 +02:00
|
|
|
onSearch: function(term) {
|
|
|
|
this.setState({
|
|
|
|
viewingPage: 'discover',
|
|
|
|
pageArgs: term
|
|
|
|
});
|
2016-08-08 02:57:12 +02:00
|
|
|
},
|
2016-08-27 16:12:56 +02:00
|
|
|
getHeaderLinks: function()
|
|
|
|
{
|
|
|
|
switch(this.state.viewingPage)
|
|
|
|
{
|
|
|
|
case 'wallet':
|
|
|
|
case 'send':
|
|
|
|
case 'receive':
|
|
|
|
case 'claim':
|
2016-09-08 10:17:08 +02:00
|
|
|
case 'referral':
|
2016-08-27 16:12:56 +02:00
|
|
|
return {
|
|
|
|
'?wallet' : 'Overview',
|
|
|
|
'?send' : 'Send',
|
|
|
|
'?receive' : 'Receive',
|
2016-09-08 10:17:08 +02:00
|
|
|
'?claim' : 'Claim Beta Code',
|
2016-09-09 13:40:27 +02:00
|
|
|
'?referral' : 'Check Referral Credit',
|
2016-08-27 16:12:56 +02:00
|
|
|
};
|
2016-09-23 11:19:39 +02:00
|
|
|
case 'downloaded':
|
|
|
|
case 'published':
|
|
|
|
return {
|
|
|
|
'?downloaded': 'Downloaded',
|
|
|
|
'?published': 'Published',
|
|
|
|
};
|
2016-08-27 16:12:56 +02:00
|
|
|
default:
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
},
|
2016-08-08 00:13:17 +02:00
|
|
|
getMainContent: function()
|
|
|
|
{
|
|
|
|
switch(this.state.viewingPage)
|
|
|
|
{
|
|
|
|
case 'settings':
|
|
|
|
return <SettingsPage />;
|
|
|
|
case 'help':
|
|
|
|
return <HelpPage />;
|
|
|
|
case 'watch':
|
|
|
|
return <WatchPage name={this.state.pageArgs} />;
|
|
|
|
case 'report':
|
|
|
|
return <ReportPage />;
|
2016-09-23 11:19:39 +02:00
|
|
|
case 'downloaded':
|
|
|
|
return <MyFilesPage show="downloaded" />;
|
|
|
|
case 'published':
|
|
|
|
return <MyFilesPage show="published" />;
|
2016-08-08 00:13:17 +02:00
|
|
|
case 'start':
|
|
|
|
return <StartPage />;
|
|
|
|
case 'claim':
|
|
|
|
return <ClaimCodePage />;
|
2016-09-08 10:17:08 +02:00
|
|
|
case 'referral':
|
|
|
|
return <ReferralPage />;
|
2016-08-08 00:13:17 +02:00
|
|
|
case 'wallet':
|
2016-08-27 16:12:56 +02:00
|
|
|
case 'send':
|
|
|
|
case 'receive':
|
|
|
|
return <WalletPage viewingPage={this.state.viewingPage} />;
|
|
|
|
case 'send':
|
|
|
|
return <SendPage />;
|
|
|
|
case 'receive':
|
|
|
|
return <ReceivePage />;
|
2016-08-08 00:13:17 +02:00
|
|
|
case 'show':
|
|
|
|
return <DetailPage name={this.state.pageArgs} />;
|
|
|
|
case 'publish':
|
|
|
|
return <PublishPage />;
|
2016-08-27 16:12:56 +02:00
|
|
|
case 'discover':
|
|
|
|
default:
|
|
|
|
return <DiscoverPage query={this.state.pageArgs} />;
|
2016-08-08 00:13:17 +02:00
|
|
|
}
|
|
|
|
},
|
2016-04-10 02:00:56 +02:00
|
|
|
render: function() {
|
2016-08-27 16:12:56 +02:00
|
|
|
var mainContent = this.getMainContent(),
|
|
|
|
headerLinks = this.getHeaderLinks();
|
2016-08-08 00:13:17 +02:00
|
|
|
|
2016-08-07 22:10:44 +02:00
|
|
|
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} />
|
2016-08-27 16:12:56 +02:00
|
|
|
<div id="main-content" className={ headerLinks ? 'with-sub-nav' : 'no-sub-nav' }>
|
|
|
|
<Header onOpenDrawer={this.openDrawer} onSearch={this.onSearch} links={headerLinks} viewingPage={this.state.viewingPage} />
|
2016-08-08 05:39:44 +02:00
|
|
|
{mainContent}
|
|
|
|
</div>
|
2016-08-07 22:10:44 +02:00
|
|
|
</div>
|
|
|
|
);
|
2016-04-10 02:00:56 +02:00
|
|
|
}
|
2016-08-23 16:53:45 +02:00
|
|
|
});
|