From d36a4cb00685226d90e498e3aafde5bfc36deb55 Mon Sep 17 00:00:00 2001 From: crschnick Date: Sat, 28 Feb 2026 15:53:28 +0000 Subject: [PATCH] Rework --- .../io/xpipe/app/hub/comp/StoreListChoiceComp.java | 3 ++- .../ext/base/identity/MultiIdentityStore.java | 6 ++++-- .../base/identity/MultiIdentityStoreProvider.java | 14 +++++++++++--- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/hub/comp/StoreListChoiceComp.java b/app/src/main/java/io/xpipe/app/hub/comp/StoreListChoiceComp.java index c1c605911..40c92f5bd 100644 --- a/app/src/main/java/io/xpipe/app/hub/comp/StoreListChoiceComp.java +++ b/app/src/main/java/io/xpipe/app/hub/comp/StoreListChoiceComp.java @@ -4,6 +4,7 @@ import io.xpipe.app.comp.BaseRegionBuilder; import io.xpipe.app.comp.RegionBuilder; import io.xpipe.app.comp.SimpleRegionBuilder; import io.xpipe.app.comp.base.*; +import io.xpipe.app.core.AppI18n; import io.xpipe.app.ext.DataStore; import io.xpipe.app.storage.DataStoreEntryRef; @@ -48,7 +49,7 @@ public class StoreListChoiceComp extends SimpleRegionBuilde var listBox = new ListBoxViewComp<>( selectedList, selectedList, - t -> { + t -> { if (t == null) { return null; } diff --git a/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStore.java b/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStore.java index d899ee17d..4fdc1a6ba 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStore.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStore.java @@ -30,10 +30,12 @@ import java.util.UUID; @ToString(callSuper = true) public class MultiIdentityStore extends IdentityStore { - List> identities; + List identities; public List> getAvailableIdentities() { - return identities.stream().filter(ref -> ref != null && ref.get().getValidity().isUsable()).toList(); + return identities.stream().map(uuid -> DataStorage.get().getStoreEntryIfPresent(uuid)).flatMap(Optional::stream) + .map(e -> e.ref()) + .filter(ref -> ref != null && ref.get().getValidity().isUsable()).toList(); } public Optional> getSelected() { diff --git a/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStoreProvider.java b/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStoreProvider.java index 3d5605604..b724efb50 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStoreProvider.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/identity/MultiIdentityStoreProvider.java @@ -15,6 +15,7 @@ import io.xpipe.app.secret.SecretStrategyChoiceConfig; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreCategory; import io.xpipe.app.storage.DataStoreEntry; +import io.xpipe.app.storage.DataStoreEntryRef; import io.xpipe.app.util.DocumentationLink; import javafx.beans.property.Property; import javafx.beans.property.SimpleListProperty; @@ -23,6 +24,7 @@ import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import java.util.ArrayList; +import java.util.LinkedHashSet; import java.util.List; import java.util.UUID; @@ -32,17 +34,23 @@ public class MultiIdentityStoreProvider extends IdentityStoreProvider { public GuiDialog guiDialog(DataStoreEntry entry, Property store) { MultiIdentityStore st = (MultiIdentityStore) store.getValue(); - var identities = new SimpleListProperty<>(FXCollections.observableArrayList(st.getIdentities())); + var identities = new SimpleListProperty<>(FXCollections.observableArrayList(st.getAvailableIdentities())); return new OptionsBuilder() .nameAndDescription("multiIdentityList") .addComp(new StoreListChoiceComp<>(identities, IdentityStore.class, ref -> !(ref.getStore() instanceof MultiIdentityStore) && !identities.contains(ref), - StoreViewState.get().getAllIdentitiesCategory())) + StoreViewState.get().getAllIdentitiesCategory()), identities) .bind( () -> { + var uuids = new LinkedHashSet(); + for (DataStoreEntryRef identity : identities) { + uuids.add(identity.get().getUuid()); + } + uuids.addAll(st.getIdentities()); + return MultiIdentityStore.builder() - .identities(identities) + .identities(new ArrayList<>(uuids)) .build(); }, store)