Working on watch-folder

Added chokidar to watch for folder changes; added folder-watcher;
passing state to delayedInit on main;  added default values for new
preferences; added “Auto add torrents” preference with its checkbox and
path selector; TODO: start/stop watching on preference change, start
watching on init, add dialog when trying to enable preference without a
torrents folder.
This commit is contained in:
Alberto Miranda
2017-03-22 09:42:17 -03:00
parent c2abb50e9e
commit a70c4d1bf2
5 changed files with 121 additions and 4 deletions

View File

@@ -108,6 +108,56 @@ class PreferencesPage extends React.Component {
dispatch('updatePreferences', 'externalPlayerPath', filePath)
}
autoAddTorrentsCheckbox () {
return (
<Preference>
<Checkbox
className='control'
checked={this.props.state.unsaved.prefs.autoAddTorrents}
label={'Enable'}
onCheck={(e, value) => {this.handleAutoAddTorrentsChange(e, value)}}
/>
</Preference>
)
}
handleAutoAddTorrentsChange (e, isChecked) {
const torrentsFolderPath = this.props.state.unsaved.prefs.torrentsFolderPath
if (isChecked && !torrentsFolderPath) {
alert('Select a torrents folder first.')
e.preventDefault()
return
}
dispatch('updatePreferences', 'autoAddTorrents', isChecked)
}
torrentsFolderPathSelector () {
const torrentsFolderPath = this.props.state.unsaved.prefs.torrentsFolderPath
const value = torrentsFolderPath || 'Path to be watched.'
const description = 'Torrent files saved to this folder will be automatically added to the list.'
return (
<Preference>
<p>{description}</p>
<PathSelector
dialog={{
title: 'Select torrents folder path',
properties: [ 'openDirectory' ]
}}
displayValue={value}
onChange={this.handletorrentsFolderPathChange}
title='Torrents folder'
value={torrentsFolderPath ? path.dirname(torrentsFolderPath) : null} />
</Preference>
)
}
handletorrentsFolderPathChange (filePath) {
dispatch('updatePreferences', 'torrentsFolderPath', filePath)
}
setDefaultAppButton () {
const isFileHandler = this.props.state.unsaved.prefs.isFileHandler
if (isFileHandler) {
@@ -174,6 +224,10 @@ class PreferencesPage extends React.Component {
<PreferencesSection title='Default torrent app'>
{this.setDefaultAppButton()}
</PreferencesSection>
<PreferencesSection title='Auto add torrents'>
{this.autoAddTorrentsCheckbox()}
{this.torrentsFolderPathSelector()}
</PreferencesSection>
{this.setStartupSection()}
</div>
)