diff --git a/src/app/feed.js b/src/app/feed.js new file mode 100644 index 0000000..6b55937 --- /dev/null +++ b/src/app/feed.js @@ -0,0 +1,36 @@ +import React, { Component } from 'react'; +import TorrentLine from './torrent' +import {List} from 'material-ui/List'; +import Divider from 'material-ui/Divider'; +import Subheader from 'material-ui/Subheader'; + +export default class RecentTorrents extends Component { + constructor() { + super() + this.torrents = []; + } + componentDidMount() { + window.torrentSocket.emit('feed', window.customLoader((data) => { + if(data) { + this.torrents = data; + console.log(data) + this.forceUpdate(); + } + })) + } + render() { + return ( + + + {__('Feed')} + + + { + this.torrents.map((torrent, index) =>{ + return ; + }) + } + + ); + } +} diff --git a/src/background/api.js b/src/background/api.js index 88e5bc0..34a46fb 100644 --- a/src/background/api.js +++ b/src/background/api.js @@ -3,7 +3,6 @@ const forBigTable = require('./forBigTable') const compareVersions = require('compare-versions'); const getTorrent = require('./gettorrent') const _ = require('lodash') -const Feed = require('./feed') module.exports = async ({ sphinx, @@ -19,7 +18,8 @@ module.exports = async ({ insertTorrentToDB, removeTorrentFromDB, checkTorrent, - p2pStore + p2pStore, + feed }) => { let torrentClientHashMap = {} @@ -737,12 +737,8 @@ module.exports = async ({ }); - const feed = new Feed({sphinx}) - await feed.load() - feed.clear() - setInterval(() => feed.save(), 10000) - // store torrent to feed + await feed.load() p2pStore.on('store', async ({data: record, temp}) => { if(!temp || !temp.torrent) return diff --git a/src/background/feed.js b/src/background/feed.js index f76ce54..d650ac7 100644 --- a/src/background/feed.js +++ b/src/background/feed.js @@ -3,10 +3,14 @@ module.exports = class Feed { { this.feed = [] this.sphinx = sphinx + this.loaded = false } async save() { - console.log('saving feed') + if(!this.loaded) + return // feed not loaded on begining, ignore saving + + console.log('saving feed') await this.sphinx.query('delete from feed where id > 0') let id = 0 return Promise.all( @@ -24,10 +28,13 @@ module.exports = class Feed { this.feed = [] this._order() + this.loaded = true + console.log('lodead feed') } clear() { + console.log('clearing feed') this.feed = [] } diff --git a/src/background/spider.js b/src/background/spider.js index 0de3a22..7758962 100644 --- a/src/background/spider.js +++ b/src/background/spider.js @@ -11,6 +11,7 @@ const stun = require('stun') const natUpnp = require('nat-upnp'); const http = require('https') const API = require('./api') +const Feed = require('./feed') //var sm = require('sitemap'); //var phantomjs = require('phantomjs-prebuilt') //const disk = require('diskusage'); @@ -699,6 +700,10 @@ spider.on('peer', (IPs) => { IPs.forEach(ip => p2p.add(ip)) }) +// feed +const feed = new Feed({sphinx}) +// load inside api + // setup api API({ sphinx, @@ -714,7 +719,8 @@ API({ insertTorrentToDB, removeTorrentFromDB, checkTorrent, - p2pStore + p2pStore, + feed }) if(config.indexer) { @@ -743,6 +749,9 @@ this.stop = async (callback) => { console.log('closing p2p...') p2p.close() + + // save feed + await feed.save() // safe future peers if(dataDirectory)