import type { DiscoveredLocalServer, ScopedThreadRef } from "@t3tools/contracts";import { mapAtomCommandResult, type AtomCommandResult,} from "@t3tools/client-runtime/state/runtime"; import { resolveDiscoveredServerUrl } from "~/browser/browserTargetResolver";import type { OpenPreviewMutation } from "~/browser/openFileInPreview";import { useRightPanelStore } from "~/rightPanelStore";import { openPreviewSession } from "./openPreviewSession"; export async function openDiscoveredPort<E>(input: { readonly threadRef: ScopedThreadRef; readonly port: DiscoveredLocalServer; readonly openPreview: OpenPreviewMutation<E>;}): Promise<AtomCommandResult<void, E>> { const resolvedUrl = resolveDiscoveredServerUrl(input.threadRef.environmentId, input.port.url); const result = await openPreviewSession({ openPreview: input.openPreview, threadRef: input.threadRef, url: resolvedUrl, }); return mapAtomCommandResult(result, (snapshot) => { useRightPanelStore.getState().openBrowser(input.threadRef, snapshot.tabId); });}
import type { DiscoveredLocalServer, ScopedThreadRef } from "@t3tools/contracts";
import {
mapAtomCommandResult,
type AtomCommandResult,
} from "@t3tools/client-runtime/state/runtime";
import { resolveDiscoveredServerUrl } from "~/browser/browserTargetResolver";
import type { OpenPreviewMutation } from "~/browser/openFileInPreview";
import { useRightPanelStore } from "~/rightPanelStore";
import { openPreviewSession } from "./openPreviewSession";
export async function openDiscoveredPort<E>(input: {
readonly threadRef: ScopedThreadRef;
readonly port: DiscoveredLocalServer;
readonly openPreview: OpenPreviewMutation<E>;
}): Promise<AtomCommandResult<void, E>> {
const resolvedUrl = resolveDiscoveredServerUrl(input.threadRef.environmentId, input.port.url);
const result = await openPreviewSession({
openPreview: input.openPreview,
threadRef: input.threadRef,
url: resolvedUrl,
});
return mapAtomCommandResult(result, (snapshot) => {
useRightPanelStore.getState().openBrowser(input.threadRef, snapshot.tabId);
});
}