From 30c4700688aba29b4258c72720f142cdf07ceb0d Mon Sep 17 00:00:00 2001 From: crschnick Date: Thu, 3 Sep 2026 07:19:15 +0000 Subject: [PATCH] Rework [stage] --- .../io/xpipe/app/core/AppLayoutModel.java | 24 ++++++--- .../hub/category/StoreCategoryConfigComp.java | 53 ++++++------------- .../app/hub/creation/StoreCreationModel.java | 2 +- .../app/hub/entry/DenseStoreEntryComp.java | 3 +- .../xpipe/app/hub/entry/StoreEntryBadge.java | 16 ------ .../xpipe/app/hub/entry/StoreNotesComp.java | 3 +- .../io/xpipe/app/issue/ErrorEventFactory.java | 5 ++ .../app/pwman/PasswordManagerTestComp.java | 17 +++++- .../app/secret/DataStorageAccessHandler.java | 2 + .../xpipe/app/storage/DataStorageElement.java | 2 +- .../app/storage/DataStoreAccessScopeComp.java | 2 +- .../xpipe/app/storage/DataStoreCategory.java | 5 +- .../io/xpipe/app/storage/DataStoreEntry.java | 19 ++++--- .../io/xpipe/app/storage/StandardStorage.java | 5 +- .../xpipe/app/webtop/WebtopDisplayScale.java | 2 +- .../base/identity/IdentityStoreProvider.java | 2 +- version | 2 +- 17 files changed, 78 insertions(+), 86 deletions(-) diff --git a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java index c644e9451..465fb985f 100644 --- a/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java +++ b/app/src/main/java/io/xpipe/app/core/AppLayoutModel.java @@ -95,13 +95,7 @@ public class AppLayoutModel { if (prefs != null && prefs.getRequiresRestart().get()) { GlobalTimer.delay( () -> { - if (!AppOperationMode.isInShutdown()) { - var modal = ModalOverlay.of( - "prefsRestartTitle", AppDialog.dialogTextKey("prefsRestartContent")); - modal.addButton(ModalButton.cancel()); - modal.addButton(new ModalButton("restart", () -> AppRestart.restart(), true, true)); - modal.show(); - } + showPrefsRestartDialog(); }, Duration.ofSeconds(1)); AppPrefs.get().getRequiresRestart().set(false); @@ -120,6 +114,12 @@ public class AppLayoutModel { } }); + AppPrefs.get().getRequiresRestart().addListener((observable, oldValue, newValue) -> { + if (newValue && !entries.get(2).equals(selected.getValue())) { + showPrefsRestartDialog(); + } + }); + var portraitExpanded = new SimpleBooleanProperty(true); var toggleExpand = new AppLayoutModel.QueueEntry( AppI18n.observable("expand"), @@ -151,6 +151,16 @@ public class AppLayoutModel { AppSizeBreakpoints.compactMode())); } + private void showPrefsRestartDialog() { + if (!AppOperationMode.isInShutdown()) { + var modal = ModalOverlay.of( + "prefsRestartTitle", AppDialog.dialogTextKey("prefsRestartContent")); + modal.addButton(ModalButton.cancel()); + modal.addButton(new ModalButton("restart", () -> AppRestart.restart(), true, true)); + modal.show(); + } + } + public static void reset() { if (INSTANCE == null) { return; diff --git a/app/src/main/java/io/xpipe/app/hub/category/StoreCategoryConfigComp.java b/app/src/main/java/io/xpipe/app/hub/category/StoreCategoryConfigComp.java index 6afcd4c3b..35c044fdc 100644 --- a/app/src/main/java/io/xpipe/app/hub/category/StoreCategoryConfigComp.java +++ b/app/src/main/java/io/xpipe/app/hub/category/StoreCategoryConfigComp.java @@ -99,42 +99,23 @@ public class StoreCategoryConfigComp extends SimpleRegionBuilder { : AppI18n.observable("categorySync")) .description("categorySyncDescription") .addComp(createToggle(sync, parentConfig.getSync()), sync) - .disable(syncDisable)) - .title("connectionHandling") - .sub(new OptionsBuilder() - .nameAndDescription("categoryDontAllowScripts") - .addComp(createToggle(scripts, parentConfig.getDontAllowScripts()), scripts) - .hide(!connectionsCategory) - .nameAndDescription("categoryConfirmAllModifications") - .addComp(createToggle(confirm, parentConfig.getConfirmAllModifications()), confirm) - .hide(!connectionsCategory)) - .title("connectionConfiguration") - .sub(new OptionsBuilder() - .nameAndDescription("categoryFreeze") - .addComp(createToggle(freeze, parentConfig.getFreezeConfigurations()), freeze) - .hide(!connectionsCategory) - .nameAndDescription("categoryDefaultIdentity") - .addComp( - new StoreChoiceComp<>( - null, - identityRef, - DataStore.class, - null, - StoreViewState.get().getAllIdentitiesCategory(), - DataStoreCreationCategory.IDENTITY), - identityRef) - .hide(!connectionsCategory) - .nameAndDescription("categoryDefaultGateway") - .addComp( - new StoreChoiceComp<>( - null, - gatewayRef, - DataStore.class, - null, - StoreViewState.get().getAllConnectionsCategory(), - DataStoreCreationCategory.HOST), - gatewayRef) - .hide(!connectionsCategory)) + .disable(syncDisable)); + if (connectionsCategory) { + options.title("connectionConfiguration").sub(new OptionsBuilder() + .nameAndDescription("categoryDefaultIdentity") + .addComp(new StoreChoiceComp<>(null, identityRef, DataStore.class, null, StoreViewState.get().getAllIdentitiesCategory(), + DataStoreCreationCategory.IDENTITY), identityRef) + .nameAndDescription("categoryDefaultGateway") + .addComp(new StoreChoiceComp<>(null, gatewayRef, DataStore.class, null, StoreViewState.get().getAllConnectionsCategory(), + DataStoreCreationCategory.HOST), gatewayRef)); + + options.title("connectionHandling").sub(new OptionsBuilder().nameAndDescription("categoryDontAllowScripts") + .addComp(createToggle(scripts, parentConfig.getDontAllowScripts()), scripts) + .nameAndDescription("categoryConfirmAllModifications") + .addComp(createToggle(confirm, parentConfig.getConfirmAllModifications()), confirm).nameAndDescription("categoryFreeze") + .addComp(createToggle(freeze, parentConfig.getFreezeConfigurations()), freeze)); + } + options .bind( () -> { return new DataStoreCategoryConfig( diff --git a/app/src/main/java/io/xpipe/app/hub/creation/StoreCreationModel.java b/app/src/main/java/io/xpipe/app/hub/creation/StoreCreationModel.java index 8fa3ee017..eebc96fd5 100644 --- a/app/src/main/java/io/xpipe/app/hub/creation/StoreCreationModel.java +++ b/app/src/main/java/io/xpipe/app/hub/creation/StoreCreationModel.java @@ -43,7 +43,7 @@ public class StoreCreationModel { ObservableValue entry; BooleanProperty skippable = new SimpleBooleanProperty(); BooleanProperty connectable = new SimpleBooleanProperty(); - StringProperty name; + Property name; DataStoreEntry existingEntry; List existingDependencies; boolean staticDisplay; diff --git a/app/src/main/java/io/xpipe/app/hub/entry/DenseStoreEntryComp.java b/app/src/main/java/io/xpipe/app/hub/entry/DenseStoreEntryComp.java index 3242a01e2..9a442ff5e 100644 --- a/app/src/main/java/io/xpipe/app/hub/entry/DenseStoreEntryComp.java +++ b/app/src/main/java/io/xpipe/app/hub/entry/DenseStoreEntryComp.java @@ -57,7 +57,6 @@ public class DenseStoreEntryComp extends StoreEntryComp { grid.widthProperty())); var notes = new StoreNotesComp(getWrapper()).build(); var templateIcon = createTemplateIcon().build(); - var userIcon = createScopeIcon().build(); var pinIcon = createPinIcon().build(); var info = createInformation().build(); var active = new StoreActiveComp(getWrapper()).build(); @@ -137,7 +136,7 @@ public class DenseStoreEntryComp extends StoreEntryComp { nameBoxEntries.add(name); nameBoxEntries.add(new Spacer(2, Orientation.HORIZONTAL)); nameBoxEntries.add(tags); - nameBoxEntries.addAll(List.of(index, active, templateIcon, userIcon, pinIcon, notes)); + nameBoxEntries.addAll(List.of(index, active, templateIcon, pinIcon, notes)); var nameBox = new HBox(nameBoxEntries.toArray(Node[]::new)); nameBox.setSpacing(4); nameBox.setAlignment(Pos.CENTER_LEFT); diff --git a/app/src/main/java/io/xpipe/app/hub/entry/StoreEntryBadge.java b/app/src/main/java/io/xpipe/app/hub/entry/StoreEntryBadge.java index d1d522216..5f5b23787 100644 --- a/app/src/main/java/io/xpipe/app/hub/entry/StoreEntryBadge.java +++ b/app/src/main/java/io/xpipe/app/hub/entry/StoreEntryBadge.java @@ -139,22 +139,6 @@ public interface StoreEntryBadge { return of("mdi2a-account", s); } - static StoreEntryBadge ofUsername(String s) { - if (s == null) { - return null; - } - - return of("mdi2a-account", s).withCopyAction(); - } - - static StoreEntryBadge ofUsername(String display, String copy) { - if (display == null) { - return null; - } - - return of("mdi2a-account", display).withCopyAction(copy); - } - static StoreEntryBadge ofPassword(String s) { if (s == null) { return null; diff --git a/app/src/main/java/io/xpipe/app/hub/entry/StoreNotesComp.java b/app/src/main/java/io/xpipe/app/hub/entry/StoreNotesComp.java index dbdbe37a3..262fec1b4 100644 --- a/app/src/main/java/io/xpipe/app/hub/entry/StoreNotesComp.java +++ b/app/src/main/java/io/xpipe/app/hub/entry/StoreNotesComp.java @@ -19,7 +19,7 @@ public class StoreNotesComp extends RegionBuilder