Makes deletebook support filenames with spaces
All checks were successful
EpicKnarvik97/Books-Without-Borders/pipeline/head This commit looks good

This commit is contained in:
2025-08-08 15:23:07 +02:00
parent b5bff2400b
commit fef38b894f

View File

@@ -5,6 +5,7 @@ import net.knarcraft.bookswithoutborders.gui.PagedBookIndex;
import net.knarcraft.bookswithoutborders.state.BookDirectory; import net.knarcraft.bookswithoutborders.state.BookDirectory;
import net.knarcraft.bookswithoutborders.utility.BookFileHelper; import net.knarcraft.bookswithoutborders.utility.BookFileHelper;
import net.knarcraft.bookswithoutborders.utility.BookHelper; import net.knarcraft.bookswithoutborders.utility.BookHelper;
import net.knarcraft.bookswithoutborders.utility.InputCleaningHelper;
import net.knarcraft.knarlib.util.TabCompletionHelper; import net.knarcraft.knarlib.util.TabCompletionHelper;
import org.bukkit.command.Command; import org.bukkit.command.Command;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
@@ -46,23 +47,22 @@ public class CommandDelete implements TabExecutor {
return true; return true;
} }
//TODO: Add parsing of books containing spaces if (arguments.length < 1) {
BooksWithoutBorders.sendErrorMessage(sender, "Incorrect number of arguments for this command!");
return false;
}
//Delete the file //Delete the file
if (arguments.length == 1) {
List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic); List<String> availableBooks = BooksWithoutBorders.getAvailableBooks(sender, deletePublic);
if (!availableBooks.isEmpty()) { if (availableBooks.isEmpty()) {
performBookDeletion(sender, arguments[0], deletePublic);
//Update the book list
BooksWithoutBorders.updateBooks(sender, deletePublic);
return true;
} else {
BooksWithoutBorders.sendErrorMessage(sender, "No files available to delete!"); BooksWithoutBorders.sendErrorMessage(sender, "No files available to delete!");
return false; return false;
} }
}
BooksWithoutBorders.sendErrorMessage(sender, "Incorrect number of arguments for this command!"); performBookDeletion(sender, InputCleaningHelper.mergeArguments(arguments, 0), deletePublic);
return false; //Update the book list
BooksWithoutBorders.updateBooks(sender, deletePublic);
return true;
} }
/** /**
@@ -116,18 +116,24 @@ public class CommandDelete implements TabExecutor {
* Performs tab completion * Performs tab completion
* *
* @param sender <p>The sender of the command</p> * @param sender <p>The sender of the command</p>
* @param args <p>The arguments given</p> * @param arguments <p>The arguments given</p>
* @param deletePublic <p>Whether to delete a public book</p> * @param deletePublic <p>Whether to delete a public book</p>
* @return <p>A list of available arguments</p> * @return <p>A list of available arguments</p>
*/ */
@NotNull @NotNull
protected List<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] args, boolean deletePublic) { protected List<String> doTabCompletion(@NotNull CommandSender sender, @NotNull String[] arguments, boolean deletePublic) {
int argumentCount = args.length; List<String> filtered = TabCompletionHelper.filterMatchingContains(
if (argumentCount == 1) { BooksWithoutBorders.getAvailableBooks(sender, deletePublic),
return TabCompletionHelper.filterMatchingContains(BooksWithoutBorders.getAvailableBooks(sender, deletePublic), InputCleaningHelper.mergeArguments(arguments, 0));
args[0]); if (arguments.length > 1) {
List<String> cleaned = new ArrayList<>();
for (String name : filtered) {
String[] parts = name.split(" ");
cleaned.add(parts[parts.length - 1]);
} }
return new ArrayList<>(); return cleaned;
}
return filtered;
} }
} }