From 9699f1eb7f3a4e74a07438d0d7b17baf4e4166dd Mon Sep 17 00:00:00 2001 From: Alexey Kasyanchuk Date: Wed, 7 Jul 2021 15:19:45 +0300 Subject: [PATCH] feat(torrent): generation of torrent functionality --- src/app/context-menu.js | 4 ++-- src/app/header.js | 48 +++++++++++++++++++++++++++++++++++++++++ translations/cn.json | 5 ++++- translations/en.json | 5 ++++- translations/ru.json | 5 ++++- translations/ua.json | 5 ++++- 6 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/app/context-menu.js b/src/app/context-menu.js index 682b122..bb6fbbd 100644 --- a/src/app/context-menu.js +++ b/src/app/context-menu.js @@ -9,8 +9,8 @@ export default class ContextMenu extends Component { render() { return ( -
-
{ +
+
{ this.setState({toggle: !this.state.toggle}) if(this.props.onClick) this.props.onClick(e) diff --git a/src/app/header.js b/src/app/header.js index 427a8cb..80a8850 100644 --- a/src/app/header.js +++ b/src/app/header.js @@ -4,7 +4,13 @@ import Background from './images/pirate-mod.jpg' import RaisedButton from 'material-ui/RaisedButton'; import Search from './search' import Tooltip from './tooltip' +import ContextMenu from './context-menu' +import createTorrent from 'create-torrent'; +import fs from 'fs' +let dialog +if(typeof WEB === 'undefined') + dialog = require('electron').remote.dialog class Header extends React.Component { constructor(props) { @@ -48,6 +54,27 @@ class Header extends React.Component { window.onscroll = null } + generateTorrent(folder) + { + let path = dialog.showOpenDialogSync({properties: [folder ? "openDirectory" : "openFile"]}) + if(path && path[0]) + { + path = path[0] + createTorrent(path, (err, torrent) => { + if (!err) { + console.log('generated torrent size', torrent.length) + let savePath = dialog.showSaveDialogSync({title: 'Save generated torrent file', defaultPath: 'generated', filters: [ + { name: 'Torrent files', extensions: ['torrent'] }, + ]}); + if(savePath) { + fs.writeFileSync(savePath, torrent) + console.log('saved', torrent.length, 'to', savePath) + } + } + }) + } + } + render() { return ( @@ -273,6 +300,27 @@ class Header extends React.Component { } /> + { + dialog && + { + e.preventDefault(); + e.stopPropagation(); + }} menu={[ + {name: __('File'), click: () => this.generateTorrent(false)}, + {name: __('Folder'), click: () => this.generateTorrent(true)}, + ]}> + + } + /> + + }