fix(search): show torrent page from remote peer

This commit is contained in:
Alexey Kasyanchuk
2018-03-05 04:01:08 +03:00
parent 857bc66c7f
commit 1c626fa2bf
7 changed files with 84 additions and 29 deletions

View File

@ -1,15 +1,9 @@
import React, { Component } from 'react';
import singleton from './singleton'
class PagesPie extends Component {
pie = [];
export default class PagesPie extends Component {
constructor(props) {
super(props);
// синглтон
if ( PagesPie.instance ) {
return PagesPie.instance;
}
PagesPie.instance = this;
this.pie = [];
}
open(pages, params) {
if (params && params.replace) {
if (params.replace === 'all') {
@ -86,4 +80,6 @@ export default class PagesPie extends Component {
return null
}
}
}
}
export default singleton(PagesPie)

View File

@ -52,14 +52,12 @@ window.router = router;
router('/', () => {
//singleton
let pie = new PagesPie;
pie.open(IndexPage, {replace: 'all'});
PagesPie.instance().open(IndexPage, {replace: 'all'});
});
router('/torrent/:hash', (e) => {
//singleton
let pie = new PagesPie;
pie.open(TorrentPage, {
PagesPie.instance().open(TorrentPage, {
replace: 'all',
hash: e.params.hash,
});
@ -67,26 +65,21 @@ router('/torrent/:hash', (e) => {
router('/DMCA', () => {
//singleton
let pie = new PagesPie;
pie.open(DMCAPage, {replace: 'all'});
PagesPie.instance().open(DMCAPage, {replace: 'all'});
});
router('/config', () => {
//singleton
let pie = new PagesPie;
pie.open(AdminPage, {replace: 'all'});
PagesPie.instance().open(AdminPage, {replace: 'all'});
});
router('/top', () => {
//singleton
let pie = new PagesPie;
pie.open(TopPage, {replace: 'all'});
PagesPie.instance().open(TopPage, {replace: 'all'});
});
router('/changelog', () => {
//singleton
let pie = new PagesPie;
console.log('changelog')
pie.open(ChangelogPage, {replace: 'all'});
PagesPie.instance().open(ChangelogPage, {replace: 'all'});
});

29
src/app/singleton.js Normal file
View File

@ -0,0 +1,29 @@
export default (Superclass) => {
let instance;
return class Singleton extends Superclass {
constructor(props) {
super(props)
if (instance) {
instance.props = props
return instance;
}
instance = this;
}
static instance() {
if (instance) {
return instance;
} else {
return new Singleton();
}
}
static do(key, ...params) {
if ( typeof this.instance()[key] === 'function') {
return this.instance()[key](...params);
} else {
return this.instance()[key];
}
}
}
}

View File

@ -180,7 +180,7 @@ export default class TorrentPage extends Page {
});
};
getTorrentInfo() {
window.torrentSocket.emit('torrent', this.props.hash, {files: true}, window.customLoader((data) => {
window.torrentSocket.emit('torrent', this.props.hash, {files: true, peer: this.props.peer}, window.customLoader((data) => {
if(data) {
this.torrent = data
this.setTitle(this.torrent.name + ' - Rats On TheBoat');

View File

@ -3,6 +3,9 @@ import formatBytes from './format-bytes'
import {ListItem} from 'material-ui/List';
import Divider from 'material-ui/Divider';
import PagesPie from './pages-pie.js';
import TorrentPage from './torrent-page'
import Spinner24 from './images/spinner_24.gif'
import LinearProgress from 'material-ui/LinearProgress';
@ -212,13 +215,15 @@ export default class Torrent extends Component {
if(e.button === 1)
return false;
/*
if(e.ctrlKey && e.button === 0) {
let win = window.open(link, '_blank');
//win.focus();
return true;
}
*/
window.router(link)
PagesPie.instance().open(TorrentPage, {replace: 'all', hash: torrent.hash, peer: torrent.peer})
}}
primaryText={
<a href={'/torrent/' + torrent.hash} ref={(node) => {