mirror of
https://github.com/xpipe-io/xpipe.git
synced 2026-05-03 11:20:34 +00:00
Improve NPE handling for browser actions
This commit is contained in:
+1
-1
@@ -20,7 +20,7 @@ public class ComputeDirectorySizesActionProvider implements BrowserActionProvide
|
||||
|
||||
@Override
|
||||
public boolean isApplicable(BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
|
||||
return model.getFileSystem().supportsDirectorySizes();
|
||||
return model.getCurrentDirectory() != null && model.getFileSystem().supportsDirectorySizes();
|
||||
}
|
||||
|
||||
@Jacksonized
|
||||
|
||||
@@ -286,7 +286,7 @@ public final class BrowserFileSystemTabModel extends BrowserStoreSessionTab<File
|
||||
return new FileEntry(fileSystem, currentPath.get(), null, null, null, FileKind.DIRECTORY);
|
||||
}
|
||||
|
||||
public FilePath getTargetDirectory(BrowserEntry fallbackFile) {
|
||||
public FilePath getTargetDirectoryPath(BrowserEntry fallbackFile) {
|
||||
if (getCurrentDirectory() != null) {
|
||||
return getCurrentDirectory().getPath();
|
||||
}
|
||||
@@ -294,6 +294,14 @@ public final class BrowserFileSystemTabModel extends BrowserStoreSessionTab<File
|
||||
return fallbackFile.getRawFileEntry().getPath().getParent();
|
||||
}
|
||||
|
||||
public FileEntry getTargetDirectory(BrowserEntry fallbackFile) {
|
||||
if (getCurrentDirectory() != null) {
|
||||
return getCurrentDirectory();
|
||||
}
|
||||
|
||||
return FileEntry.ofDirectory(getFileSystem(), fallbackFile.getRawFileEntry().getPath().getParent());
|
||||
}
|
||||
|
||||
public void cdAsync(FilePath path) {
|
||||
cdAsync(path != null ? path.toString() : null);
|
||||
}
|
||||
|
||||
@@ -19,7 +19,7 @@ public class CopyMenuProvider implements BrowserMenuLeafProvider {
|
||||
|
||||
@Override
|
||||
public void execute(BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
|
||||
BrowserClipboard.startCopy(model.getCurrentDirectory(), entries);
|
||||
BrowserClipboard.startCopy(model.getTargetDirectory(entries.getFirst()), entries);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -55,7 +55,7 @@ public class JavapMenuProvider
|
||||
.add("javap", "-c", "-p")
|
||||
.addFile(entry.getRawFileEntry().getPath());
|
||||
var out = sc.command(command)
|
||||
.withWorkingDirectory(model.getTargetDirectory(entries.getFirst()))
|
||||
.withWorkingDirectory(model.getTargetDirectoryPath(entries.getFirst()))
|
||||
.readStdoutOrThrow();
|
||||
FileOpener.openReadOnlyString(out);
|
||||
}
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ public class OpenTerminalInDirectoryMenuProvider implements BrowserMenuLeafProvi
|
||||
? List.of(model.getCurrentDirectory().getPath())
|
||||
: Collections.singletonList((FilePath) null);
|
||||
for (var dir : dirs) {
|
||||
var name = model.getFileSystem().supportsTerminalWorkingDirectory() && dir != null ? dir.toString() : null;
|
||||
var name = model.getFileSystem().supportsTerminalWorkingDirectory() ? dir.toString() : null;
|
||||
model.openTerminalAsync(
|
||||
name,
|
||||
model.getFileSystem().supportsTerminalWorkingDirectory() ? dir : null,
|
||||
|
||||
@@ -29,6 +29,10 @@ public class PasteMenuProvider implements BrowserMenuLeafProvider {
|
||||
var target = entries.size() == 1 && entries.getFirst().getRawFileEntry().getKind() == FileKind.DIRECTORY
|
||||
? entries.getFirst().getRawFileEntry()
|
||||
: model.getCurrentDirectory();
|
||||
if (target == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
var files = clipboard.getEntries();
|
||||
if (files.size() == 0) {
|
||||
return;
|
||||
|
||||
@@ -192,7 +192,7 @@ public class CompressMenuProvider implements BrowserMenuBranchProvider {
|
||||
protected void create(String fileName, BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
|
||||
var builder = io.xpipe.app.browser.menu.impl.compress.ZipActionProvider.Action.builder();
|
||||
builder.initEntries(model, entries);
|
||||
builder.target(model.getTargetDirectory(entries.getFirst()).join(fileName));
|
||||
builder.target(model.getTargetDirectoryPath(entries.getFirst()).join(fileName));
|
||||
builder.directoryContentOnly(directory);
|
||||
builder.build().executeAsync();
|
||||
}
|
||||
@@ -216,7 +216,7 @@ public class CompressMenuProvider implements BrowserMenuBranchProvider {
|
||||
protected void create(String fileName, BrowserFileSystemTabModel model, List<BrowserEntry> entries) {
|
||||
var builder = TarActionProvider.Action.builder();
|
||||
builder.initEntries(model, entries);
|
||||
builder.target(model.getTargetDirectory(entries.getFirst()).join(fileName));
|
||||
builder.target(model.getTargetDirectoryPath(entries.getFirst()).join(fileName));
|
||||
builder.directoryContentOnly(directory);
|
||||
builder.gz(gz);
|
||||
builder.build().executeAsync();
|
||||
|
||||
@@ -33,7 +33,7 @@ public class TarActionProvider implements BrowserActionProvider {
|
||||
var sc = model.getFileSystem().getShell().orElseThrow();
|
||||
var args = "c" + (gz ? "z" : "") + "f";
|
||||
var tar = CommandBuilder.of().add("tar", args).addFile(target);
|
||||
var base = model.getTargetDirectory(getEntries().getFirst());
|
||||
var base = model.getTargetDirectoryPath(getEntries().getFirst());
|
||||
|
||||
if (directoryContentOnly) {
|
||||
var dir = getEntries().getFirst().getRawFileEntry().getPath();
|
||||
|
||||
@@ -40,7 +40,7 @@ public class UntarActionProvider implements BrowserActionProvider {
|
||||
.withWorkingDirectory(
|
||||
toDirectory
|
||||
? target
|
||||
: model.getTargetDirectory(getEntries().getFirst()))
|
||||
: model.getTargetDirectoryPath(getEntries().getFirst()))
|
||||
.execute();
|
||||
}
|
||||
model.refreshSync();
|
||||
|
||||
@@ -50,7 +50,7 @@ public class UnzipActionProvider implements BrowserActionProvider {
|
||||
.addFile(getTarget(entry.getRawFileEntry().getPath()));
|
||||
}
|
||||
try (var cc = sc.command(command)
|
||||
.withWorkingDirectory(model.getTargetDirectory(getEntries().getFirst()))
|
||||
.withWorkingDirectory(model.getTargetDirectoryPath(getEntries().getFirst()))
|
||||
.start()) {
|
||||
cc.discardOrThrow();
|
||||
}
|
||||
@@ -73,7 +73,7 @@ public class UnzipActionProvider implements BrowserActionProvider {
|
||||
}
|
||||
command.add("-Path").addFile(entry.getRawFileEntry().getPath());
|
||||
sc.command(command)
|
||||
.withWorkingDirectory(model.getTargetDirectory(getEntries().getFirst()))
|
||||
.withWorkingDirectory(model.getTargetDirectoryPath(getEntries().getFirst()))
|
||||
.execute();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -34,7 +34,7 @@ public class ZipActionProvider implements BrowserActionProvider {
|
||||
try {
|
||||
var sc = model.getFileSystem().getShell().orElseThrow();
|
||||
if (sc.getOsType() == OsType.WINDOWS) {
|
||||
var base = model.getTargetDirectory(getEntries().getFirst());
|
||||
var base = model.getTargetDirectoryPath(getEntries().getFirst());
|
||||
var command = CommandBuilder.of()
|
||||
.add("Compress-Archive", "-Force", "-DestinationPath")
|
||||
.addFile(target)
|
||||
|
||||
Reference in New Issue
Block a user