From 3abd5f1863473e8be460dc9e907c433bacd58c5a Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 14 Mar 2026 01:54:16 +0000 Subject: [PATCH] Rework --- .../xpipe/app/action/LauncherUrlProvider.java | 2 -- .../io/xpipe/app/action/XPipeUrlProvider.java | 5 ---- .../hub/action/impl/ScanHubBatchProvider.java | 4 ++++ .../hub/action/impl/ScanHubLeafProvider.java | 5 ++++ .../xpipe/app/hub/comp/StoreCreationComp.java | 4 ++-- .../xpipe/app/hub/comp/StoreFilterState.java | 21 ---------------- .../app/hub/comp/StoreFilterStateComp.java | 24 ++----------------- .../xpipe/app/hub/comp/StoreQuickConnect.java | 10 +------- .../io/xpipe/app/prefs/VaultCategory.java | 1 - 9 files changed, 14 insertions(+), 62 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/action/LauncherUrlProvider.java b/app/src/main/java/io/xpipe/app/action/LauncherUrlProvider.java index 55f2d514c..051c8ecf6 100644 --- a/app/src/main/java/io/xpipe/app/action/LauncherUrlProvider.java +++ b/app/src/main/java/io/xpipe/app/action/LauncherUrlProvider.java @@ -19,7 +19,5 @@ public interface LauncherUrlProvider extends ActionProvider { String getScheme(); - String getPlaceholder(); - AbstractAction createAction(URI uri) throws Exception; } diff --git a/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java b/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java index f6ae326a7..75f3f917f 100644 --- a/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java +++ b/app/src/main/java/io/xpipe/app/action/XPipeUrlProvider.java @@ -9,11 +9,6 @@ public class XPipeUrlProvider implements LauncherUrlProvider { return "xpipe"; } - @Override - public String getPlaceholder() { - return "xpipe://action?"; - } - @Override public AbstractAction createAction(URI uri) throws Exception { var a = uri.getHost(); diff --git a/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubBatchProvider.java b/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubBatchProvider.java index 202f31c26..8eaa910b5 100644 --- a/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubBatchProvider.java +++ b/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubBatchProvider.java @@ -38,6 +38,10 @@ public class ScanHubBatchProvider implements BatchHubProvider { @Override public boolean isApplicable(DataStoreEntryRef o) { + if (!o.get().getProvider().shouldShowScan()) { + return false; + } + var state = o.get().getStorePersistentState(); if (state instanceof SystemState systemState) { return (systemState.getShellDialect() == null diff --git a/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubLeafProvider.java b/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubLeafProvider.java index 07f1a6493..0157c742d 100644 --- a/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubLeafProvider.java +++ b/app/src/main/java/io/xpipe/app/hub/action/impl/ScanHubLeafProvider.java @@ -27,6 +27,11 @@ public class ScanHubLeafProvider implements HubLeafProvider { return true; } + @Override + public boolean isApplicable(DataStoreEntryRef o) { + return o.get().getProvider().shouldShowScan(); + } + @Override public ObservableValue getName(DataStoreEntryRef store) { return AppI18n.observable("scanConnections"); diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationComp.java index c99ecc85f..8e8c7c4bf 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreCreationComp.java @@ -58,8 +58,8 @@ public class StoreCreationComp extends ModalOverlayContentComp { var provider = model.getProvider().getValue() != null ? model.getProvider().getValue() : providerChoice.getProviders().getFirst(); - var showProviders = !model.isQuickConnect() && ((!model.isStaticDisplay() && provider.showProviderChoice()) - || (model.isStaticDisplay() && provider.showProviderChoice())); + var showProviders = (!model.isStaticDisplay() && provider.showProviderChoice()) + || (model.isStaticDisplay() && provider.showProviderChoice()); if (model.isStaticDisplay()) { providerChoice.apply(struc -> struc.setDisable(true)); } diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterState.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterState.java index 4b5a31ad5..914b550d1 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterState.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterState.java @@ -29,10 +29,6 @@ public class StoreFilterState { private final DerivedObservableList recentQuickConnections = DerivedObservableList.synchronizedArrayList(true); - @Getter - private final DerivedObservableList recentUrls = - DerivedObservableList.synchronizedArrayList(true); - @Getter private final StringProperty rawText = new SimpleStringProperty(); @@ -76,18 +72,15 @@ public class StoreFilterState { var type = TypeFactory.defaultInstance().constructType(new TypeReference>() {}); List recentSearches = AppCache.getNonNull("recentSearches", type, () -> List.of()); List recentQuickConnections = AppCache.getNonNull("recentQuickConnections", type, () -> List.of()); - List recentUrls = AppCache.getNonNull("recentUrls", type, () -> List.of()); INSTANCE = new StoreFilterState(); INSTANCE.recentSearches.setContent(recentSearches); INSTANCE.recentQuickConnections.setContent(recentQuickConnections); - INSTANCE.recentUrls.setContent(recentUrls); } public static void reset() { AppCache.update("recentSearches", INSTANCE.recentSearches.getList()); AppCache.update("recentQuickConnections", INSTANCE.recentQuickConnections.getList()); - AppCache.update("recentUrls", INSTANCE.recentUrls.getList()); INSTANCE = null; } @@ -121,19 +114,6 @@ public class StoreFilterState { } } - public void putUrl(String s) { - synchronized (recentUrls) { - var l = recentUrls.getList(); - l.remove(s); - if (l.size() == 3) { - l.addFirst(s); - l.removeLast(); - } else { - l.addFirst(s); - } - } - } - public boolean open() { if (rawText.getValue() == null) { return false; @@ -153,7 +133,6 @@ public class StoreFilterState { try { var action = provider.get().createAction(URI.create(rawText.get())); action.executeAsync(); - putUrl(rawText.getValue()); return true; } catch (Exception e) { ErrorEventFactory.fromThrowable(e).handle(); diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterStateComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterStateComp.java index 96d1c8873..75589cd33 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterStateComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreFilterStateComp.java @@ -3,6 +3,7 @@ package io.xpipe.app.hub.comp; import atlantafx.base.theme.Styles; import io.xpipe.app.action.LauncherUrlProvider; import io.xpipe.app.action.QuickConnectProvider; +import io.xpipe.app.comp.RegionBuilder; import io.xpipe.app.comp.SimpleRegionBuilder; import io.xpipe.app.comp.base.ButtonComp; import io.xpipe.app.comp.base.LabelComp; @@ -53,42 +54,21 @@ public class StoreFilterStateComp extends SimpleRegionBuilder { .toList()); var quickConnectionsEmptyList = new ListBoxViewComp(quickConnectionsPlaceholders, quickConnectionsPlaceholders, s -> createButton(s, s.split(" ")[0] + " "), false); - var urls = state.getRecentUrls().getList(); - var urlsEmpty = Bindings.isEmpty(urls); - var urlList = new ListBoxViewComp(urls, urls, s -> createButton(s, s), false); - - var urlPlaceholders = FXCollections.observableArrayList(LauncherUrlProvider.getAll().stream() - .map(p -> p.getPlaceholder()) - .toList()); - var urlEmptyList = new ListBoxViewComp(urlPlaceholders, urlPlaceholders, s -> createButton(s, null), false); - var options = new OptionsBuilder() .addComp(new LabelComp(AppI18n.observable("recentSearches"))) .hide(searchesEmpty) .addComp(searchesList) .hide(searchesEmpty) .addComp(new LabelComp(AppI18n.observable("recentSearchesDescription"))) - .hide(searchesEmpty.not()) .addComp(searchesEmptyList) - .hide(searchesEmpty.not()) - + .addComp(RegionBuilder.hseparator()) .addComp(new LabelComp(AppI18n.observable("recentQuickConnections"))) .hide(quickConnectionsEmpty) .addComp(quickConnectionsList) .hide(quickConnectionsEmpty) .addComp(new LabelComp(AppI18n.observable("recentQuickConnectionsDescription"))) - .hide(quickConnectionsEmpty.not()) .addComp(quickConnectionsEmptyList) - .hide(quickConnectionsEmpty.not()) - .addComp(new LabelComp(AppI18n.observable("recentUrls"))) - .hide(urlsEmpty) - .addComp(urlList) - .hide(urlsEmpty) - .addComp(new LabelComp(AppI18n.observable("recentUrlsDescription"))) - .hide(urlsEmpty.not()) - .addComp(urlEmptyList) - .hide(urlsEmpty.not()) .build(); options.getStyleClass().add("store-filter-state-comp"); return options; diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreQuickConnect.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreQuickConnect.java index febe6ff91..b8445eb7f 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreQuickConnect.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreQuickConnect.java @@ -98,7 +98,7 @@ public class StoreQuickConnect { return true; } - var model = StoreCreationDialog.showEdit(quickConnectEntry, newStore, false, finished -> { + StoreCreationDialog.showEdit(quickConnectEntry, newStore, false, finished -> { update(finished.getStore()); ThreadHelper.runAsync(() -> { try { @@ -112,14 +112,6 @@ public class StoreQuickConnect { }); }); - var wasCached = AppCache.getNonNull("quickConnect", DataStore.class, () -> null) != null; - if (newStore.isComplete() && wasCached) { - GlobalTimer.delay(() -> { - Platform.runLater(() -> { - model.finish(); - }); - }, Duration.ofMillis(100)); - } return true; } } diff --git a/app/src/main/java/io/xpipe/app/prefs/VaultCategory.java b/app/src/main/java/io/xpipe/app/prefs/VaultCategory.java index a70a9ae68..b504aa7e0 100644 --- a/app/src/main/java/io/xpipe/app/prefs/VaultCategory.java +++ b/app/src/main/java/io/xpipe/app/prefs/VaultCategory.java @@ -84,7 +84,6 @@ public class VaultCategory extends AppPrefsCategory { .description("vaultTypeContent" + vaultTypeKey) .documentationLink(DocumentationLink.TEAM_VAULTS) .addComp(RegionBuilder.empty()) - .licenseRequirement("team") .nameAndDescription("vaultAuthentication") .addComp(authChoice, prefs.vaultAuthentication) .nameAndDescription(Bindings.createStringBinding(