From 73e351d5ef845d3b68a6eed7baf88925aa764d95 Mon Sep 17 00:00:00 2001 From: crschnick Date: Fri, 9 Jun 2023 15:53:50 +0000 Subject: [PATCH] Fix browser race condition --- .../main/java/io/xpipe/app/browser/OpenFileSystemModel.java | 5 ++--- .../java/io/xpipe/app/browser/OpenFileSystemSavedState.java | 3 +++ 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/browser/OpenFileSystemModel.java b/app/src/main/java/io/xpipe/app/browser/OpenFileSystemModel.java index b27c5de1..127d747e 100644 --- a/app/src/main/java/io/xpipe/app/browser/OpenFileSystemModel.java +++ b/app/src/main/java/io/xpipe/app/browser/OpenFileSystemModel.java @@ -306,22 +306,21 @@ public final class OpenFileSystemModel { this.fileSystem = fs; this.local = fs.getShell().map(shellControl -> shellControl.isLocal()).orElse(false); + this.initState(); this.cache.init(); }); } public void initWithGivenDirectory(String dir) throws Exception { - initState(); cdSyncWithoutCheck(dir); } public void initWithDefaultDirectory() throws Exception { - initState(); savedState.cd(null); history.updateCurrent(null); } - private void initState() { + void initState() { this.savedState = OpenFileSystemSavedState.loadForStore(this); } diff --git a/app/src/main/java/io/xpipe/app/browser/OpenFileSystemSavedState.java b/app/src/main/java/io/xpipe/app/browser/OpenFileSystemSavedState.java index 799774a0..96c16fcf 100644 --- a/app/src/main/java/io/xpipe/app/browser/OpenFileSystemSavedState.java +++ b/app/src/main/java/io/xpipe/app/browser/OpenFileSystemSavedState.java @@ -71,6 +71,9 @@ public class OpenFileSystemSavedState { .constructCollectionLikeType(List.class, RecentEntry.class); List recentDirectories = JacksonMapper.getDefault().treeToValue(tree.remove("recentDirectories"), javaType); + if (recentDirectories == null) { + recentDirectories = List.of(); + } var cleaned = recentDirectories.stream() .map(recentEntry -> new RecentEntry(FileNames.toDirectory(recentEntry.directory), recentEntry.time)) .filter(distinctBy(recentEntry -> recentEntry.getDirectory()))