diff --git a/app/src/main/java/io/xpipe/app/exchange/OpenExchangeImpl.java b/app/src/main/java/io/xpipe/app/exchange/OpenExchangeImpl.java index 3a9730a0..9a560177 100644 --- a/app/src/main/java/io/xpipe/app/exchange/OpenExchangeImpl.java +++ b/app/src/main/java/io/xpipe/app/exchange/OpenExchangeImpl.java @@ -3,6 +3,7 @@ package io.xpipe.app.exchange; import io.xpipe.app.core.mode.OperationMode; import io.xpipe.app.launcher.LauncherInput; import io.xpipe.app.util.PlatformState; +import io.xpipe.app.util.ThreadHelper; import io.xpipe.beacon.BeaconHandler; import io.xpipe.beacon.ServerException; import io.xpipe.beacon.exchange.OpenExchange; @@ -18,6 +19,11 @@ public class OpenExchangeImpl extends OpenExchange } } + // Wait for startup + while (OperationMode.get() == null) { + ThreadHelper.sleep(100); + } + LauncherInput.handle(msg.getArguments()); return Response.builder().build(); } diff --git a/app/src/main/java/io/xpipe/app/launcher/LauncherInput.java b/app/src/main/java/io/xpipe/app/launcher/LauncherInput.java index 382e0a4c..9dfe775e 100644 --- a/app/src/main/java/io/xpipe/app/launcher/LauncherInput.java +++ b/app/src/main/java/io/xpipe/app/launcher/LauncherInput.java @@ -79,6 +79,7 @@ public abstract class LauncherInput { try { a = found.get().getLauncherCallSite().createAction(uri); } catch (Exception e) { + ErrorEvent.fromThrowable(e).omit().expected().handle(); return List.of(); } return a != null ? List.of(a) : List.of(); diff --git a/ext/base/src/main/java/io/xpipe/ext/base/action/XPipeUrlAction.java b/ext/base/src/main/java/io/xpipe/ext/base/action/XPipeUrlAction.java index e4d1c038..10f3e926 100644 --- a/ext/base/src/main/java/io/xpipe/ext/base/action/XPipeUrlAction.java +++ b/ext/base/src/main/java/io/xpipe/ext/base/action/XPipeUrlAction.java @@ -3,6 +3,7 @@ package io.xpipe.ext.base.action; import io.xpipe.app.comp.store.StoreCreationComp; import io.xpipe.app.comp.store.StoreViewState; import io.xpipe.app.ext.ActionProvider; +import io.xpipe.app.issue.TrackEvent; import io.xpipe.app.storage.DataStorage; import io.xpipe.app.storage.DataStoreEntry; import io.xpipe.core.store.DataStore; @@ -56,6 +57,13 @@ public class XPipeUrlAction implements ActionProvider { var entry = DataStorage.get() .getStoreEntryIfPresent(UUID.fromString(args.get(2))) .orElseThrow(); + + TrackEvent.withDebug("Parsed action") + .tag("id", id) + .tag("provider", provider.getId()) + .tag("entry", entry.getUuid()) + .handle(); + if (!entry.getValidity().isUsable()) { return null; }