37 lines · 1.1 KB · TypeScript
RawDownload
import { type MouseEvent, useCallback } from "react"; import { stackedThreadToast, toastManager } from "../components/ui/toast";import { readLocalApi } from "../localApi"; /** * Returns a click handler that opens a pull request URL in the system browser. * * Stops event propagation/default so activating the link does not also trigger * an enclosing row or trigger (e.g. opening the branch dropdown), and surfaces a * toast when the local API is unavailable or the open fails. */export function useOpenPrLink() {  return useCallback((event: MouseEvent<HTMLElement>, prUrl: string) => {    event.preventDefault();    event.stopPropagation();     const api = readLocalApi();    if (!api) {      toastManager.add({        type: "error",        title: "Link opening is unavailable.",      });      return;    }     void api.shell.openExternal(prUrl).catch((error) => {      toastManager.add(        stackedThreadToast({          type: "error",          title: "Unable to open pull request link",          description: error instanceof Error ? error.message : "An error occurred.",        }),      );    });  }, []);}