26 lines · 1.0 KB · TypeScript
RawDownload
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);  });}