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