From a9c27083dad272f24df9d425a91f5eaa6e1bf2d8 Mon Sep 17 00:00:00 2001 From: Alexey Kasyanchuk Date: Sat, 16 Jun 2018 12:56:38 +0300 Subject: [PATCH] feat(gui): display rating in torrent line (gui part) --- src/app/torrent.js | 20 ++++++++++++++++++++ src/background/api.js | 4 ++++ src/background/feed.js | 37 +++++++++++++++++++++++++++++++++---- 3 files changed, 57 insertions(+), 4 deletions(-) diff --git a/src/app/torrent.js b/src/app/torrent.js index 259851c..9e55e5c 100644 --- a/src/app/torrent.js +++ b/src/app/torrent.js @@ -8,6 +8,7 @@ import TorrentPage from './torrent-page' import Spinner24 from './images/spinner_24.gif' import LinearProgress from 'material-ui/LinearProgress'; +let rating = require('./rating'); const contentIcon = (type, category, fill = 'grey') => { if(category == 'xxx') @@ -218,6 +219,10 @@ export default class Torrent extends Component { render() { const torrent = this.props.torrent; + let torrentRating = -1 + if(torrent.good > 0 || torrent.bad > 0) + torrentRating = Math.round(rating(torrent.good, torrent.bad) * 100); + return (
0 || torrent.bad > 0) + && +
+ = 50 ? '#00E676' : '#FF3D00'} + style={{ + height: '5px', + }} + /> +
= 50 ? '#00E676' : '#FF3D00', width: '190px'}}>{__('Torrent rating')}: {torrentRating}%
+
+ }
} diff --git a/src/background/api.js b/src/background/api.js index ba1212d..160de46 100644 --- a/src/background/api.js +++ b/src/background/api.js @@ -757,6 +757,10 @@ module.exports = async ({ if(torrent.hash !== record.torrentHash) return + let {good, bad} = await getVotes(torrent.hash) + torrent.good = good + torrent.bad = bad + feed.add(torrent) send('feedUpdate', { diff --git a/src/background/feed.js b/src/background/feed.js index d650ac7..51cdeb1 100644 --- a/src/background/feed.js +++ b/src/background/feed.js @@ -4,6 +4,12 @@ module.exports = class Feed { this.feed = [] this.sphinx = sphinx this.loaded = false + this.max = 1000 + } + + size() + { + return this.feed.length } async save() { @@ -39,12 +45,35 @@ module.exports = class Feed { } add(data) { - if(typeof data == 'object') + let index = -1 + if(data.hash) + index = this.feed.findIndex(element => element.hash === data.hash) + + if(index >= 0) + this.feed[index] = Object.assign(this.feed[index], data) // just push up element + else { - data.feedDate = Math.floor(Date.now() / 1000) + if(this.feed.length >= this.max) + { + //cleanup + for(let i = this.feed.length - 1; i <= 0; i--) + if(this._compare(this.feed[i]) <= 0) + this.feed.pop() + else + break + + if(this.feed.length >= this.max) + return // two much for feed + } + + if(typeof data == 'object') + { + data.feedDate = Math.floor(Date.now() / 1000) + } + + this.feed.push(data) // insert } - this.feed.push(data) this._order() } @@ -54,7 +83,7 @@ module.exports = class Feed { _compare(x) { - const rating = 0 + const rating = (x && x.good) || 0 const comments = 0 const time = Math.floor(Date.now() / 1000) - x.feedDate