mirror of https://github.com/zlatinb/muwire
do not share hidden directories from auto-watch
parent
4a62215e46
commit
a04faadc04
|
@ -472,7 +472,7 @@ public class Core {
|
|||
eventBus.register(AllFilesLoadedEvent.class, watchedDirectoryConverter)
|
||||
|
||||
log.info("initializing watched directory manager")
|
||||
watchedDirectoryManager = new WatchedDirectoryManager(home, eventBus, fileManager)
|
||||
watchedDirectoryManager = new WatchedDirectoryManager(home, eventBus, fileManager, props)
|
||||
eventBus.with {
|
||||
register(WatchedDirectoryConfigurationEvent.class, watchedDirectoryManager)
|
||||
register(WatchedDirectoryConvertedEvent.class, watchedDirectoryManager)
|
||||
|
@ -490,7 +490,8 @@ public class Core {
|
|||
}
|
||||
|
||||
log.info("initializing directory watcher")
|
||||
directoryWatcher = new DirectoryWatcher(eventBus, fileManager, home, watchedDirectoryManager, negativeFiles)
|
||||
directoryWatcher = new DirectoryWatcher(eventBus, fileManager, home,
|
||||
watchedDirectoryManager, negativeFiles, props)
|
||||
eventBus.with {
|
||||
register(DirectoryWatchedEvent.class, directoryWatcher)
|
||||
register(WatchedDirectoryConvertedEvent.class, directoryWatcher)
|
||||
|
|
|
@ -37,6 +37,7 @@ class DirectoryWatcher {
|
|||
|
||||
private final File home
|
||||
private final EventBus eventBus
|
||||
private final MuWireSettings settings
|
||||
private final FileManager fileManager
|
||||
private final WatchedDirectoryManager watchedDirectoryManager
|
||||
private final NegativeFiles negativeFiles
|
||||
|
@ -47,9 +48,11 @@ class DirectoryWatcher {
|
|||
private volatile boolean shutdown
|
||||
|
||||
DirectoryWatcher(EventBus eventBus, FileManager fileManager, File home,
|
||||
WatchedDirectoryManager watchedDirectoryManager, NegativeFiles negativeFiles) {
|
||||
WatchedDirectoryManager watchedDirectoryManager, NegativeFiles negativeFiles,
|
||||
MuWireSettings settings) {
|
||||
this.home = home
|
||||
this.eventBus = eventBus
|
||||
this.settings = settings
|
||||
this.fileManager = fileManager
|
||||
this.watchedDirectoryManager = watchedDirectoryManager
|
||||
this.negativeFiles = negativeFiles
|
||||
|
@ -122,7 +125,9 @@ class DirectoryWatcher {
|
|||
|
||||
|
||||
private void processCreated(Path parent, Path path) {
|
||||
File f= join(parent, path)
|
||||
File f = join(parent, path)
|
||||
if (!settings.shareHiddenFiles && f.isHidden())
|
||||
return
|
||||
log.fine("created entry $f")
|
||||
if (f.isDirectory())
|
||||
eventBus.publish(new FileSharedEvent(file : f, fromWatch : true))
|
||||
|
@ -133,6 +138,8 @@ class DirectoryWatcher {
|
|||
private void processModified(Path parent, Path path) {
|
||||
File f = join(parent, path)
|
||||
log.fine("modified entry $f")
|
||||
if (!settings.shareHiddenFiles && f.isHidden())
|
||||
return
|
||||
if (!negativeFiles.negativeTree.get(f))
|
||||
waitingFiles.put(f, System.currentTimeMillis())
|
||||
}
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
package com.muwire.core.files.directories
|
||||
|
||||
import com.muwire.core.MuWireSettings
|
||||
|
||||
import java.nio.file.Files
|
||||
import java.util.concurrent.ConcurrentHashMap
|
||||
import java.util.concurrent.ExecutorService
|
||||
|
@ -24,6 +26,7 @@ import groovy.util.logging.Log
|
|||
class WatchedDirectoryManager {
|
||||
|
||||
private final File home
|
||||
private final MuWireSettings settings
|
||||
private final EventBus eventBus
|
||||
private final FileManager fileManager
|
||||
|
||||
|
@ -39,11 +42,12 @@ class WatchedDirectoryManager {
|
|||
|
||||
private boolean converting = true
|
||||
|
||||
WatchedDirectoryManager(File home, EventBus eventBus, FileManager fileManager) {
|
||||
WatchedDirectoryManager(File home, EventBus eventBus, FileManager fileManager, MuWireSettings settings) {
|
||||
this.home = new File(home, "directories")
|
||||
this.home.mkdir()
|
||||
this.eventBus = eventBus
|
||||
this.fileManager = fileManager
|
||||
this.settings = settings
|
||||
}
|
||||
|
||||
public boolean isWatched(File f) {
|
||||
|
@ -96,13 +100,15 @@ class WatchedDirectoryManager {
|
|||
forEach {
|
||||
def parsed = slurper.parse(it.toFile())
|
||||
WatchedDirectory wd = WatchedDirectory.fromJson(parsed)
|
||||
if (wd.directory.exists() && wd.directory.isDirectory()) // check if directory disappeared
|
||||
if (wd.directory.exists() && wd.directory.isDirectory() && // check if directory disappeared or hidden
|
||||
(settings.shareHiddenFiles || !wd.directory.isHidden()))
|
||||
watchedDirs.put(wd.directory, wd)
|
||||
else
|
||||
it.toFile().delete()
|
||||
}
|
||||
|
||||
watchedDirs.values().stream().filter({it.autoWatch}).forEach {
|
||||
watchedDirs.values().stream().filter({it.autoWatch}).
|
||||
forEach {
|
||||
eventBus.publish(new DirectoryWatchedEvent(directory : it.directory))
|
||||
eventBus.publish(new FileSharedEvent(file : it.directory))
|
||||
}
|
||||
|
@ -123,6 +129,8 @@ class WatchedDirectoryManager {
|
|||
void onFileSharedEvent(FileSharedEvent e) {
|
||||
if (e.file.isFile() || watchedDirs.containsKey(e.file))
|
||||
return
|
||||
if (!settings.shareHiddenFiles && e.file.isHidden())
|
||||
return
|
||||
|
||||
def wd = new WatchedDirectory(e.file)
|
||||
if (e.fromWatch) {
|
||||
|
@ -137,9 +145,10 @@ class WatchedDirectoryManager {
|
|||
} else
|
||||
wd.autoWatch = true
|
||||
|
||||
|
||||
watchedDirs.put(wd.directory, wd)
|
||||
persist(wd)
|
||||
if (wd.autoWatch)
|
||||
if (wd.autoWatch)
|
||||
eventBus.publish(new DirectoryWatchedEvent(directory: wd.directory))
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue