diff --git a/webui/src/main/java/com/muwire/webui/FileManager.java b/webui/src/main/java/com/muwire/webui/FileManager.java index 18d1a6c1..d3dba615 100644 --- a/webui/src/main/java/com/muwire/webui/FileManager.java +++ b/webui/src/main/java/com/muwire/webui/FileManager.java @@ -77,25 +77,23 @@ public class FileManager { core.getEventBus().publish(event); } - void unshareDirectory(String filePath) { - File directory = new File(filePath); - if (core.getMuOptions().getWatchedDirectories().contains(directory)) { - DirectoryUnsharedEvent event = new DirectoryUnsharedEvent(); - event.setDirectory(directory); + void unshareFile(File file) { + if (file.isFile()) { + SharedFile sf = core.getFileManager().getFileToSharedFile().get(file); + if (sf == null) + return; + + fileTree.remove(file); + revision++; + FileUnsharedEvent event = new FileUnsharedEvent(); + event.setUnsharedFile(sf); core.getEventBus().publish(event); + } else { + if (core.getMuOptions().getWatchedDirectories().contains(file.getAbsolutePath())) { + DirectoryUnsharedEvent event = new DirectoryUnsharedEvent(); + event.setDirectory(file); + core.getEventBus().publish(event); + } } } - - void unshareFile(String filePath) { - File file = new File(filePath); - SharedFile sf = core.getFileManager().getFileToSharedFile().get(file); - if (sf == null) - return; - - fileTree.remove(file); - revision++; - FileUnsharedEvent event = new FileUnsharedEvent(); - event.setUnsharedFile(sf); - core.getEventBus().publish(event); - } } diff --git a/webui/src/main/java/com/muwire/webui/FilesServlet.java b/webui/src/main/java/com/muwire/webui/FilesServlet.java index b824da18..7ce3574e 100644 --- a/webui/src/main/java/com/muwire/webui/FilesServlet.java +++ b/webui/src/main/java/com/muwire/webui/FilesServlet.java @@ -2,6 +2,9 @@ package com.muwire.webui; import java.io.File; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; import javax.servlet.ServletConfig; import javax.servlet.ServletException; @@ -102,16 +105,18 @@ public class FilesServlet extends HttpServlet { if (action.equals("share")) { String file = req.getParameter("file"); fileManager.share(file); - } else if (action.equals("unshareFile")) { - String files = req.getParameter("files"); - for (String file : files.split(",")) - fileManager.unshareFile(Base64.decodeToString(file)); - String directories = req.getParameter("directories"); - if (directories != null) { - for (String directory : directories.split(",")) - fileManager.unshareDirectory(Base64.decodeToString(directory)); + resp.sendRedirect("/MuWire/Files.jsp"); + } else if (action.equals("unshare")) { + String pathElements = req.getParameter("path"); + File current = null; + for (String element : pathElements.split(",")) { + element = Base64.decodeToString(element); + if (current == null) + current = new File(element); + else + current = new File(current, element); } + fileManager.unshareFile(current); } - resp.sendRedirect("/MuWire/Files.jsp"); } } diff --git a/webui/src/main/js/files.js b/webui/src/main/js/files.js index c7a0ab49..09e58642 100644 --- a/webui/src/main/js/files.js +++ b/webui/src/main/js/files.js @@ -13,7 +13,7 @@ class Node { updateDiv() { var div = document.getElementById(this.nodeId) if (this.leaf) { - div.innerHTML = "